From 871dbf7107fb1b4989342bc62f7ccfc08a97111b Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 2 Jul 2019 11:44:19 +0200 Subject: [PATCH 1/2] Various UI fixes --- .../TelegramUI/TelegramUI/AppDelegate.swift | 4 +- .../TelegramUI/ChannelInfoController.swift | 6 +- .../TelegramUI/ChatController.swift | 92 ++-- .../ChatPanelInterfaceInteraction.swift | 9 +- .../ChatRecentActionsController.swift | 2 +- .../TelegramUI/ChatTextInputPanelNode.swift | 4 +- .../DeviceContactInfoController.swift | 14 +- .../TelegramUI/GroupInfoController.swift | 150 +----- .../ItemListMultilineTextItem.swift | 8 +- .../ItemListTextWithLabelItem.swift | 8 +- .../PeerMediaCollectionController.swift | 2 +- .../TelegramUI/TextLinkHandling.swift | 157 +++++++ .../TelegramUI/ThemeSettingsController.swift | 12 +- .../TelegramUI/UpdateInfoController.swift | 51 +- .../TelegramUI/UpdateInfoItem.swift | 443 ++++++++++++++++++ .../TelegramUI/UserInfoController.swift | 205 ++++---- .../project.pbxproj | 8 + 17 files changed, 832 insertions(+), 343 deletions(-) create mode 100644 submodules/TelegramUI/TelegramUI/TextLinkHandling.swift create mode 100644 submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift diff --git a/submodules/TelegramUI/TelegramUI/AppDelegate.swift b/submodules/TelegramUI/TelegramUI/AppDelegate.swift index 4634e88b57..cb03970e0d 100644 --- a/submodules/TelegramUI/TelegramUI/AppDelegate.swift +++ b/submodules/TelegramUI/TelegramUI/AppDelegate.swift @@ -586,8 +586,8 @@ final class SharedApplicationContext { self.window?.rootViewController?.dismiss(animated: true, completion: nil) }, getAvailableAlternateIcons: { if #available(iOS 10.3, *) { - var icons = [PresentationAppIcon(name: "Blue", imageName: "BlueIcon", isDefault: false), - PresentationAppIcon(name: "Black", imageName: "BlackIcon", isDefault: false), + var icons = [PresentationAppIcon(name: "Blue", imageName: "BlueIcon", isDefault: buildConfig.isAppStoreBuild), + PresentationAppIcon(name: "Black", imageName: "BlackIcon", isDefault: buildConfig.isInternalBuild), PresentationAppIcon(name: "BlueClassic", imageName: "BlueClassicIcon", isDefault: false), PresentationAppIcon(name: "BlackClassic", imageName: "BlackClassicIcon", isDefault: false), PresentationAppIcon(name: "BlueFilled", imageName: "BlueFilledIcon", isDefault: false), diff --git a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift index 1a5a85d5dd..2a3beaf74f 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift @@ -312,13 +312,13 @@ private enum ChannelInfoEntry: ItemListNodeEntry { arguments.tapAvatarAction() }, context: arguments.avatarAndNameInfoContext, updatingImage: updatingAvatar) case let .about(theme, text, value): - return ItemListTextWithLabelItem(theme: theme, label: text, text: foldMultipleLineBreaks(value), enabledEntitiyTypes: [.url, .mention, .hashtag], multiline: true, sectionId: self.section, action: nil, longTapAction: { + return ItemListTextWithLabelItem(theme: theme, label: text, text: foldMultipleLineBreaks(value), enabledEntityTypes: [.url, .mention, .hashtag], multiline: true, sectionId: self.section, action: nil, longTapAction: { arguments.displayContextMenu(ChannelInfoEntryTag.about, value) }, linkItemAction: { action, itemLink in arguments.aboutLinkAction(action, itemLink) }, tag: ChannelInfoEntryTag.about) case let .addressName(theme, text, value): - return ItemListTextWithLabelItem(theme: theme, label: text, text: "https://t.me/\(value)", textColor: .accent, enabledEntitiyTypes: [], multiline: false, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: text, text: "https://t.me/\(value)", textColor: .accent, enabledEntityTypes: [], multiline: false, sectionId: self.section, action: { arguments.displayAddressNameContextMenu("https://t.me/\(value)") }, longTapAction: { arguments.displayContextMenu(ChannelInfoEntryTag.link, "https://t.me/\(value)") @@ -1157,7 +1157,7 @@ public func channelInfoController(context: AccountContext, peerId: PeerId) -> Vi } aboutLinkActionImpl = { [weak controller] action, itemLink in if let controller = controller { - handlePeerInfoAboutTextAction(context: context, peerId: peerId, navigateDisposable: navigateDisposable, controller: controller, action: action, itemLink: itemLink) + handleTextLinkAction(context: context, peerId: peerId, navigateDisposable: navigateDisposable, controller: controller, action: action, itemLink: itemLink) } } endEditingImpl = { diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index c1a4d13d02..dcedd2464b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -2954,7 +2954,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, self?.deleteMediaRecording() }, sendRecordedMedia: { [weak self] in self?.sendMediaRecording() - }, displayRestrictedInfo: { [weak self] subject in + }, displayRestrictedInfo: { [weak self] subject, displayType in guard let strongSelf = self else { return } @@ -3006,37 +3006,42 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, strongSelf.recordingModeFeedback?.error() - var rect: CGRect? - let isStickers: Bool = subject == .stickers - switch subject { - case .stickers: - rect = strongSelf.chatDisplayNode.frameForStickersButton() - if var rectValue = rect, let actionRect = strongSelf.chatDisplayNode.frameForInputActionButton() { - rectValue.origin.y = actionRect.minY - rect = rectValue + switch displayType { + case .tooltip: + var rect: CGRect? + let isStickers: Bool = subject == .stickers + switch subject { + case .stickers: + rect = strongSelf.chatDisplayNode.frameForStickersButton() + if var rectValue = rect, let actionRect = strongSelf.chatDisplayNode.frameForInputActionButton() { + rectValue.origin.y = actionRect.minY + rect = rectValue + } + case .mediaRecording: + rect = strongSelf.chatDisplayNode.frameForInputActionButton() } - case .mediaRecording: - rect = strongSelf.chatDisplayNode.frameForInputActionButton() - } - - if let tooltipController = strongSelf.mediaRestrictedTooltipController, strongSelf.mediaRestrictedTooltipControllerMode == isStickers { - tooltipController.content = .text(banDescription) - } else if let rect = rect { - strongSelf.mediaRestrictedTooltipController?.dismiss() - let tooltipController = TooltipController(content: .text(banDescription)) - strongSelf.mediaRestrictedTooltipController = tooltipController - strongSelf.mediaRestrictedTooltipControllerMode = isStickers - tooltipController.dismissed = { [weak tooltipController] in - if let strongSelf = self, let tooltipController = tooltipController, strongSelf.mediaRestrictedTooltipController === tooltipController { - strongSelf.mediaRestrictedTooltipController = nil + + if let tooltipController = strongSelf.mediaRestrictedTooltipController, strongSelf.mediaRestrictedTooltipControllerMode == isStickers { + tooltipController.content = .text(banDescription) + } else if let rect = rect { + strongSelf.mediaRestrictedTooltipController?.dismiss() + let tooltipController = TooltipController(content: .text(banDescription)) + strongSelf.mediaRestrictedTooltipController = tooltipController + strongSelf.mediaRestrictedTooltipControllerMode = isStickers + tooltipController.dismissed = { [weak tooltipController] in + if let strongSelf = self, let tooltipController = tooltipController, strongSelf.mediaRestrictedTooltipController === tooltipController { + strongSelf.mediaRestrictedTooltipController = nil + } + } + strongSelf.present(tooltipController, in: .window(.root), with: TooltipControllerPresentationArguments(sourceNodeAndRect: { + if let strongSelf = self { + return (strongSelf.chatDisplayNode, rect) + } + return nil + })) } - } - strongSelf.present(tooltipController, in: .window(.root), with: TooltipControllerPresentationArguments(sourceNodeAndRect: { - if let strongSelf = self { - return (strongSelf.chatDisplayNode, rect) - } - return nil - })) + case .alert: + strongSelf.present(textAlertController(context: strongSelf.context, title: nil, text: banDescription, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root)) } } }, displayVideoUnmuteTip: { [weak self] location in @@ -3607,6 +3612,8 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, self.failedMessageEventsDisposable.set((self.context.account.pendingMessageManager.failedMessageEvents(peerId: peerId) |> deliverOnMainQueue).start(next: { [weak self] reason in if let strongSelf = self { + let subjectFlags: TelegramChatBannedRightsFlags = .banSendMedia + let text: String let moreInfo: Bool switch reason { @@ -3617,8 +3624,8 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, text = strongSelf.presentationData.strings.Conversation_SendMessageErrorGroupRestricted moreInfo = true case .mediaRestricted: - text = strongSelf.presentationData.strings.Conversation_DefaultRestrictedMedia - moreInfo = false + strongSelf.interfaceInteraction?.displayRestrictedInfo(.mediaRecording, .alert) + return } let actions: [TextAlertAction] if moreInfo { @@ -3631,27 +3638,6 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, strongSelf.present(textAlertController(context: strongSelf.context, title: nil, text: text, actions: actions), in: .window(.root)) } })) - /*case let .group(groupId): - let unreadCountsKey: PostboxViewKey = .unreadCounts(items: [.group(groupId), .total(nil)]) - self.chatUnreadCountDisposable = (self.context.account.postbox.combinedView(keys: [unreadCountsKey]) |> deliverOnMainQueue).start(next: { [weak self] views in - if let strongSelf = self { - var unreadCount: Int32 = 0 - var totalCount: Int32 = 0 - - if let view = views.views[unreadCountsKey] as? UnreadMessageCountsView { - if let count = view.count(for: .group(groupId)) { - unreadCount = count - } - if let (_, state) = view.total() { - let inAppSettings = strongSelf.context.sharedContext.currentInAppNotificationSettings.with { $0 } - let (count, _) = renderedTotalUnreadCount(inAppSettings: inAppSettings, totalUnreadState: state) - totalCount = count - } - } - - strongSelf.chatDisplayNode.navigateButtons.unreadCount = unreadCount - } - })*/ } self.interfaceInteraction = interfaceInteraction diff --git a/submodules/TelegramUI/TelegramUI/ChatPanelInterfaceInteraction.swift b/submodules/TelegramUI/TelegramUI/ChatPanelInterfaceInteraction.swift index 2366c0e45a..4850f3a742 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPanelInterfaceInteraction.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPanelInterfaceInteraction.swift @@ -37,6 +37,11 @@ enum ChatPanelRestrictionInfoSubject { case stickers } +enum ChatPanelRestrictionInfoDisplayType { + case tooltip + case alert +} + final class ChatPanelInterfaceInteraction { let setupReplyMessage: (MessageId) -> Void let setupEditMessage: (MessageId?) -> Void @@ -73,7 +78,7 @@ final class ChatPanelInterfaceInteraction { let lockMediaRecording: () -> Void let deleteRecordedMedia: () -> Void let sendRecordedMedia: () -> Void - let displayRestrictedInfo: (ChatPanelRestrictionInfoSubject) -> Void + let displayRestrictedInfo: (ChatPanelRestrictionInfoSubject, ChatPanelRestrictionInfoDisplayType) -> Void let displayVideoUnmuteTip: (CGPoint?) -> Void let switchMediaRecordingMode: () -> Void let setupMessageAutoremoveTimeout: () -> Void @@ -102,7 +107,7 @@ final class ChatPanelInterfaceInteraction { let reportPeerIrrelevantGeoLocation: () -> Void let statuses: ChatPanelInterfaceInteractionStatuses? - init(setupReplyMessage: @escaping (MessageId) -> Void, setupEditMessage: @escaping (MessageId?) -> Void, beginMessageSelection: @escaping ([MessageId]) -> Void, deleteSelectedMessages: @escaping () -> Void, reportSelectedMessages: @escaping () -> Void, reportMessages: @escaping ([Message]) -> Void, deleteMessages: @escaping ([Message]) -> Void, forwardSelectedMessages: @escaping () -> Void, forwardCurrentForwardMessages: @escaping () -> Void, forwardMessages: @escaping ([Message]) -> Void, shareSelectedMessages: @escaping () -> Void, updateTextInputStateAndMode: @escaping ((ChatTextInputState, ChatInputMode) -> (ChatTextInputState, ChatInputMode)) -> Void, updateInputModeAndDismissedButtonKeyboardMessageId: @escaping ((ChatPresentationInterfaceState) -> (ChatInputMode, MessageId?)) -> Void, openStickers: @escaping () -> Void, editMessage: @escaping () -> Void, beginMessageSearch: @escaping (ChatSearchDomain, String) -> Void, dismissMessageSearch: @escaping () -> Void, updateMessageSearch: @escaping (String) -> Void, navigateMessageSearch: @escaping (ChatPanelSearchNavigationAction) -> Void, openCalendarSearch: @escaping () -> Void, toggleMembersSearch: @escaping (Bool) -> Void, navigateToMessage: @escaping (MessageId) -> Void, navigateToChat: @escaping (PeerId) -> Void, openPeerInfo: @escaping () -> Void, togglePeerNotifications: @escaping () -> Void, sendContextResult: @escaping (ChatContextResultCollection, ChatContextResult) -> Void, sendBotCommand: @escaping (Peer, String) -> Void, sendBotStart: @escaping (String?) -> Void, botSwitchChatWithPayload: @escaping (PeerId, String) -> Void, beginMediaRecording: @escaping (Bool) -> Void, finishMediaRecording: @escaping (ChatFinishMediaRecordingAction) -> Void, stopMediaRecording: @escaping () -> Void, lockMediaRecording: @escaping () -> Void, deleteRecordedMedia: @escaping () -> Void, sendRecordedMedia: @escaping () -> Void, displayRestrictedInfo: @escaping (ChatPanelRestrictionInfoSubject) -> Void, displayVideoUnmuteTip: @escaping (CGPoint?) -> Void, switchMediaRecordingMode: @escaping () -> Void, setupMessageAutoremoveTimeout: @escaping () -> Void, sendSticker: @escaping (FileMediaReference) -> Void, unblockPeer: @escaping () -> Void, pinMessage: @escaping (MessageId) -> Void, unpinMessage: @escaping () -> Void, shareAccountContact: @escaping () -> Void, reportPeer: @escaping () -> Void, presentPeerContact: @escaping () -> Void, dismissReportPeer: @escaping () -> Void, deleteChat: @escaping () -> Void, beginCall: @escaping () -> Void, toggleMessageStickerStarred: @escaping (MessageId) -> Void, presentController: @escaping (ViewController, Any?) -> Void, getNavigationController: @escaping () -> NavigationController?, presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void, navigateFeed: @escaping () -> Void, openGrouping: @escaping () -> Void, toggleSilentPost: @escaping () -> Void, requestUnvoteInMessage: @escaping (MessageId) -> Void, requestStopPollInMessage: @escaping (MessageId) -> Void, updateInputLanguage: @escaping ((String?) -> String?) -> Void, unarchiveChat: @escaping () -> Void, openLinkEditing: @escaping () -> Void, reportPeerIrrelevantGeoLocation: @escaping () -> Void, statuses: ChatPanelInterfaceInteractionStatuses?) { + init(setupReplyMessage: @escaping (MessageId) -> Void, setupEditMessage: @escaping (MessageId?) -> Void, beginMessageSelection: @escaping ([MessageId]) -> Void, deleteSelectedMessages: @escaping () -> Void, reportSelectedMessages: @escaping () -> Void, reportMessages: @escaping ([Message]) -> Void, deleteMessages: @escaping ([Message]) -> Void, forwardSelectedMessages: @escaping () -> Void, forwardCurrentForwardMessages: @escaping () -> Void, forwardMessages: @escaping ([Message]) -> Void, shareSelectedMessages: @escaping () -> Void, updateTextInputStateAndMode: @escaping ((ChatTextInputState, ChatInputMode) -> (ChatTextInputState, ChatInputMode)) -> Void, updateInputModeAndDismissedButtonKeyboardMessageId: @escaping ((ChatPresentationInterfaceState) -> (ChatInputMode, MessageId?)) -> Void, openStickers: @escaping () -> Void, editMessage: @escaping () -> Void, beginMessageSearch: @escaping (ChatSearchDomain, String) -> Void, dismissMessageSearch: @escaping () -> Void, updateMessageSearch: @escaping (String) -> Void, navigateMessageSearch: @escaping (ChatPanelSearchNavigationAction) -> Void, openCalendarSearch: @escaping () -> Void, toggleMembersSearch: @escaping (Bool) -> Void, navigateToMessage: @escaping (MessageId) -> Void, navigateToChat: @escaping (PeerId) -> Void, openPeerInfo: @escaping () -> Void, togglePeerNotifications: @escaping () -> Void, sendContextResult: @escaping (ChatContextResultCollection, ChatContextResult) -> Void, sendBotCommand: @escaping (Peer, String) -> Void, sendBotStart: @escaping (String?) -> Void, botSwitchChatWithPayload: @escaping (PeerId, String) -> Void, beginMediaRecording: @escaping (Bool) -> Void, finishMediaRecording: @escaping (ChatFinishMediaRecordingAction) -> Void, stopMediaRecording: @escaping () -> Void, lockMediaRecording: @escaping () -> Void, deleteRecordedMedia: @escaping () -> Void, sendRecordedMedia: @escaping () -> Void, displayRestrictedInfo: @escaping (ChatPanelRestrictionInfoSubject, ChatPanelRestrictionInfoDisplayType) -> Void, displayVideoUnmuteTip: @escaping (CGPoint?) -> Void, switchMediaRecordingMode: @escaping () -> Void, setupMessageAutoremoveTimeout: @escaping () -> Void, sendSticker: @escaping (FileMediaReference) -> Void, unblockPeer: @escaping () -> Void, pinMessage: @escaping (MessageId) -> Void, unpinMessage: @escaping () -> Void, shareAccountContact: @escaping () -> Void, reportPeer: @escaping () -> Void, presentPeerContact: @escaping () -> Void, dismissReportPeer: @escaping () -> Void, deleteChat: @escaping () -> Void, beginCall: @escaping () -> Void, toggleMessageStickerStarred: @escaping (MessageId) -> Void, presentController: @escaping (ViewController, Any?) -> Void, getNavigationController: @escaping () -> NavigationController?, presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void, navigateFeed: @escaping () -> Void, openGrouping: @escaping () -> Void, toggleSilentPost: @escaping () -> Void, requestUnvoteInMessage: @escaping (MessageId) -> Void, requestStopPollInMessage: @escaping (MessageId) -> Void, updateInputLanguage: @escaping ((String?) -> String?) -> Void, unarchiveChat: @escaping () -> Void, openLinkEditing: @escaping () -> Void, reportPeerIrrelevantGeoLocation: @escaping () -> Void, statuses: ChatPanelInterfaceInteractionStatuses?) { self.setupReplyMessage = setupReplyMessage self.setupEditMessage = setupEditMessage self.beginMessageSelection = beginMessageSelection diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift index 809879414c..9c3c294a57 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift @@ -74,7 +74,7 @@ final class ChatRecentActionsController: TelegramController { }, lockMediaRecording: { }, deleteRecordedMedia: { }, sendRecordedMedia: { - }, displayRestrictedInfo: { _ in + }, displayRestrictedInfo: { _, _ in }, displayVideoUnmuteTip: { _ in }, switchMediaRecordingMode: { }, setupMessageAutoremoveTimeout: { diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift index a034a11d85..8a3daa8ffd 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift @@ -348,7 +348,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { self.addSubnode(self.actionButtons) self.actionButtons.micButton.recordingDisabled = { [weak self] in - self?.interfaceInteraction?.displayRestrictedInfo(.mediaRecording) + self?.interfaceInteraction?.displayRestrictedInfo(.mediaRecording, .tooltip) } self.actionButtons.micButton.beginRecording = { [weak self] in @@ -1578,7 +1578,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { if enabled { self.interfaceInteraction?.openStickers() } else { - self.interfaceInteraction?.displayRestrictedInfo(.stickers) + self.interfaceInteraction?.displayRestrictedInfo(.stickers, .tooltip) } case .keyboard: self.interfaceInteraction?.updateInputModeAndDismissedButtonKeyboardMessageId({ state in diff --git a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift index bfecc5f606..6ba3381665 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift @@ -387,10 +387,10 @@ private enum DeviceContactInfoEntry: ItemListNodeEntry { arguments.performAction(.addToExisting) }) case let .company(_, theme, title, value, selected): - return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, enabledEntitiyTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, enabledEntityTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { }, tag: nil) case let .phoneNumber(_, index, theme, title, label, value, selected, isInteractionEnabled): - return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntitiyTypes: [], multiline: false, selected: selected, sectionId: self.section, action: isInteractionEnabled ? { + return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntityTypes: [], multiline: false, selected: selected, sectionId: self.section, action: isInteractionEnabled ? { if selected != nil { arguments.toggleSelection(.phoneNumber(label, value)) } else { @@ -424,7 +424,7 @@ private enum DeviceContactInfoEntry: ItemListNodeEntry { arguments.addPhoneNumber() }) case let .email(_, index, theme, title, label, value, selected): - return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntitiyTypes: [], multiline: false, selected: selected, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntityTypes: [], multiline: false, selected: selected, sectionId: self.section, action: { if selected != nil { arguments.toggleSelection(.email(label, value)) } else { @@ -436,7 +436,7 @@ private enum DeviceContactInfoEntry: ItemListNodeEntry { } }, tag: DeviceContactInfoEntryTag.info(index)) case let .url(_, index, theme, title, label, value, selected): - return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntitiyTypes: [], multiline: false, selected: selected, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: title, text: value, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntityTypes: [], multiline: false, selected: selected, sectionId: self.section, action: { if selected != nil { arguments.toggleSelection(.url(label, value)) } else { @@ -475,7 +475,7 @@ private enum DeviceContactInfoEntry: ItemListNodeEntry { } }, tag: DeviceContactInfoEntryTag.info(index)) case let .birthday(_, theme, title, value, text, selected): - return ItemListTextWithLabelItem(theme: theme, label: title, text: text, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntitiyTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: title, text: text, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntityTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { if selected != nil { arguments.toggleSelection(.birthday) } else { @@ -504,7 +504,7 @@ private enum DeviceContactInfoEntry: ItemListNodeEntry { } }, tag: DeviceContactInfoEntryTag.birthday) case let .socialProfile(_, index, theme, title, value, text, selected): - return ItemListTextWithLabelItem(theme: theme, label: title, text: text, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntitiyTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: title, text: text, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntityTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { if selected != nil { arguments.toggleSelection(.socialProfile(value)) } else if value.url.count > 0 { @@ -516,7 +516,7 @@ private enum DeviceContactInfoEntry: ItemListNodeEntry { } }, tag: DeviceContactInfoEntryTag.info(index)) case let .instantMessenger(_, index, theme, title, value, text, selected): - return ItemListTextWithLabelItem(theme: theme, label: title, text: text, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntitiyTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: title, text: text, style: arguments.isPlain ? .plain : .blocks, textColor: .accent, enabledEntityTypes: [], multiline: true, selected: selected, sectionId: self.section, action: { if selected != nil { arguments.toggleSelection(.instantMessenger(value)) } diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift index fc5207af2c..0dee989c88 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift @@ -461,7 +461,7 @@ private enum GroupInfoEntry: ItemListNodeEntry { arguments.changeProfilePhoto() }) case let .about(theme, text): - return ItemListMultilineTextItem(theme: theme, text: foldMultipleLineBreaks(text), enabledEntitiyTypes: [.url, .mention, .hashtag], sectionId: self.section, style: .blocks, longTapAction: { + return ItemListMultilineTextItem(theme: theme, text: foldMultipleLineBreaks(text), enabledEntityTypes: [.url, .mention, .hashtag], sectionId: self.section, style: .blocks, longTapAction: { arguments.displayAboutContextMenu(text) }, linkItemAction: { action, itemLink in arguments.aboutLinkAction(action, itemLink) @@ -2362,7 +2362,7 @@ public func groupInfoController(context: AccountContext, peerId originalPeerId: |> take(1) |> deliverOnMainQueue).start(next: { peerView in if let controller = controller { - handlePeerInfoAboutTextAction(context: context, peerId: peerView.peerId, navigateDisposable: navigateDisposable, controller: controller, action: action, itemLink: itemLink) + handleTextLinkAction(context: context, peerId: peerView.peerId, navigateDisposable: navigateDisposable, controller: controller, action: action, itemLink: itemLink) } }) } @@ -2416,149 +2416,3 @@ public func groupInfoController(context: AccountContext, peerId originalPeerId: } return controller } - -func handlePeerInfoAboutTextAction(context: AccountContext, peerId: PeerId, navigateDisposable: MetaDisposable, controller: ViewController, action: TextLinkItemActionType, itemLink: TextLinkItem) { - let presentImpl: (ViewController, Any?) -> Void = { controllerToPresent, _ in - controller.present(controllerToPresent, in: .window(.root)) - } - - let openResolvedPeerImpl: (PeerId?, ChatControllerInteractionNavigateToPeer) -> Void = { [weak controller] peerId, navigation in - openResolvedUrl(.peer(peerId, navigation), context: context, navigationController: (controller?.navigationController as? NavigationController), openPeer: { (peerId, navigation) in - switch navigation { - case let .chat(_, messageId): - if let navigationController = controller?.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always) - } - case .info: - let peerSignal: Signal - peerSignal = context.account.postbox.loadedPeerWithId(peerId) |> map(Optional.init) - navigateDisposable.set((peerSignal |> take(1) |> deliverOnMainQueue).start(next: { peer in - if let controller = controller, let peer = peer { - if let infoController = peerInfoController(context: context, peer: peer) { - (controller.navigationController as? NavigationController)?.pushViewController(infoController) - } - } - })) - default: - break - } - }, present: presentImpl, dismissInput: {}) - } - - let openLinkImpl: (String) -> Void = { [weak controller] url in - navigateDisposable.set((resolveUrl(account: context.account, url: url) |> deliverOnMainQueue).start(next: { result in - if let controller = controller { - switch result { - case let .externalUrl(url): - context.sharedContext.applicationBindings.openUrl(url) - case let .peer(peerId, _): - openResolvedPeerImpl(peerId, .default) - case let .channelMessage(peerId, messageId): - if let navigationController = controller.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId) - } - case let .stickerPack(name): - controller.present(StickerPackPreviewController(context: context, stickerPack: .name(name), parentNavigationController: controller.navigationController as? NavigationController), in: .window(.root)) - case let .instantView(webpage, anchor): - (controller.navigationController as? NavigationController)?.pushViewController(InstantPageController(context: context, webPage: webpage, sourcePeerType: .group, anchor: anchor)) - case let .join(link): - controller.present(JoinLinkPreviewController(context: context, link: link, navigateToPeer: { peerId in - openResolvedPeerImpl(peerId, .chat(textInputState: nil, messageId: nil)) - }), in: .window(.root)) - default: - break - } - } - })) - } - - let openPeerMentionImpl: (String) -> Void = { mention in - navigateDisposable.set((resolvePeerByName(account: context.account, name: mention, ageLimit: 10) |> take(1) |> deliverOnMainQueue).start(next: { peerId in - openResolvedPeerImpl(peerId, .default) - })) - } - - let presentationData = context.sharedContext.currentPresentationData.with { $0 } - switch action { - case .tap: - switch itemLink { - case let .url(url): - openLinkImpl(url) - case let .mention(mention): - openPeerMentionImpl(mention) - case let .hashtag(_, hashtag): - let peerSignal = context.account.postbox.loadedPeerWithId(peerId) - let _ = (peerSignal - |> deliverOnMainQueue).start(next: { peer in - let searchController = HashtagSearchController(context: context, peer: peer, query: hashtag) - (controller.navigationController as? NavigationController)?.pushViewController(searchController) - }) - } - case .longTap: - switch itemLink { - case let .url(url): - let canOpenIn = availableOpenInOptions(context: context, item: .url(url: url)).count > 1 - let openText = canOpenIn ? presentationData.strings.Conversation_FileOpenIn : presentationData.strings.Conversation_LinkDialogOpen - let actionSheet = ActionSheetController(presentationTheme: presentationData.theme) - actionSheet.setItemGroups([ActionSheetItemGroup(items: [ - ActionSheetTextItem(title: url), - ActionSheetButtonItem(title: openText, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - openLinkImpl(url) - }), - ActionSheetButtonItem(title: presentationData.strings.ShareMenu_CopyShareLink, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - UIPasteboard.general.string = url - }), - ActionSheetButtonItem(title: presentationData.strings.Conversation_AddToReadingList, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - if let link = URL(string: url) { - let _ = try? SSReadingList.default()?.addItem(with: link, title: nil, previewText: nil) - } - }) - ]), ActionSheetItemGroup(items: [ - ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - }) - ])]) - controller.present(actionSheet, in: .window(.root)) - case let .mention(mention): - let actionSheet = ActionSheetController(presentationTheme: presentationData.theme) - actionSheet.setItemGroups([ActionSheetItemGroup(items: [ - ActionSheetTextItem(title: mention), - ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogOpen, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - openPeerMentionImpl(mention) - }), - ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogCopy, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - UIPasteboard.general.string = mention - }) - ]), ActionSheetItemGroup(items: [ - ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - }) - ])]) - controller.present(actionSheet, in: .window(.root)) - case let .hashtag(_, hashtag): - let actionSheet = ActionSheetController(presentationTheme: presentationData.theme) - actionSheet.setItemGroups([ActionSheetItemGroup(items: [ - ActionSheetTextItem(title: hashtag), - ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogOpen, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - let searchController = HashtagSearchController(context: context, peer: nil, query: hashtag) - (controller.navigationController as? NavigationController)?.pushViewController(searchController) - }), - ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogCopy, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - UIPasteboard.general.string = hashtag - }) - ]), ActionSheetItemGroup(items: [ - ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - }) - ])]) - controller.present(actionSheet, in: .window(.root)) - } - } -} diff --git a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift index 868c59b8ab..8a0dd83357 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift @@ -19,7 +19,7 @@ enum TextLinkItem { class ItemListMultilineTextItem: ListViewItem, ItemListItem { let theme: PresentationTheme let text: String - let enabledEntitiyTypes: EnabledEntityTypes + let enabledEntityTypes: EnabledEntityTypes let sectionId: ItemListSectionId let style: ItemListStyle let action: (() -> Void)? @@ -30,10 +30,10 @@ class ItemListMultilineTextItem: ListViewItem, ItemListItem { let selectable: Bool - init(theme: PresentationTheme, text: String, enabledEntitiyTypes: EnabledEntityTypes, sectionId: ItemListSectionId, style: ItemListStyle, action: (() -> Void)? = nil, longTapAction: (() -> Void)? = nil, linkItemAction: ((TextLinkItemActionType, TextLinkItem) -> Void)? = nil, tag: Any? = nil) { + init(theme: PresentationTheme, text: String, enabledEntityTypes: EnabledEntityTypes, sectionId: ItemListSectionId, style: ItemListStyle, action: (() -> Void)? = nil, longTapAction: (() -> Void)? = nil, linkItemAction: ((TextLinkItemActionType, TextLinkItem) -> Void)? = nil, tag: Any? = nil) { self.theme = theme self.text = text - self.enabledEntitiyTypes = enabledEntitiyTypes + self.enabledEntityTypes = enabledEntityTypes self.sectionId = sectionId self.style = style self.action = action @@ -184,7 +184,7 @@ class ItemListMultilineTextItemNode: ListViewItemNode { leftInset = 16.0 + params.rightInset } - let entities = generateTextEntities(item.text, enabledTypes: item.enabledEntitiyTypes) + let entities = generateTextEntities(item.text, enabledTypes: item.enabledEntityTypes) let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: titleFont, linkFont: titleFont, boldFont: titleBoldFont, italicFont: titleItalicFont, boldItalicFont: titleBoldItalicFont, fixedFont: titleFixedFont) let (titleLayout, titleApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 20.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) diff --git a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift index 43ba6a026c..774113f7eb 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift @@ -18,7 +18,7 @@ final class ItemListTextWithLabelItem: ListViewItem, ItemListItem { let style: ItemListStyle let labelColor: ItemListTextWithLabelItemTextColor let textColor: ItemListTextWithLabelItemTextColor - let enabledEntitiyTypes: EnabledEntityTypes + let enabledEntityTypes: EnabledEntityTypes let multiline: Bool let selected: Bool? let sectionId: ItemListSectionId @@ -28,14 +28,14 @@ final class ItemListTextWithLabelItem: ListViewItem, ItemListItem { let tag: Any? - init(theme: PresentationTheme, label: String, text: String, style: ItemListStyle = .plain, labelColor: ItemListTextWithLabelItemTextColor = .primary, textColor: ItemListTextWithLabelItemTextColor = .primary, enabledEntitiyTypes: EnabledEntityTypes, multiline: Bool, selected: Bool? = nil, sectionId: ItemListSectionId, action: (() -> Void)?, longTapAction: (() -> Void)? = nil, linkItemAction: ((TextLinkItemActionType, TextLinkItem) -> Void)? = nil, tag: Any? = nil) { + init(theme: PresentationTheme, label: String, text: String, style: ItemListStyle = .plain, labelColor: ItemListTextWithLabelItemTextColor = .primary, textColor: ItemListTextWithLabelItemTextColor = .primary, enabledEntityTypes: EnabledEntityTypes, multiline: Bool, selected: Bool? = nil, sectionId: ItemListSectionId, action: (() -> Void)?, longTapAction: (() -> Void)? = nil, linkItemAction: ((TextLinkItemActionType, TextLinkItem) -> Void)? = nil, tag: Any? = nil) { self.theme = theme self.label = label self.text = text self.style = style self.labelColor = labelColor self.textColor = textColor - self.enabledEntitiyTypes = enabledEntitiyTypes + self.enabledEntityTypes = enabledEntityTypes self.multiline = multiline self.selected = selected self.sectionId = sectionId @@ -199,7 +199,7 @@ class ItemListTextWithLabelItemNode: ListViewItemNode { } let (labelLayout, labelApply) = makeLabelLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.label, font: labelFont, textColor: labelColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - let entities = generateTextEntities(item.text, enabledTypes: item.enabledEntitiyTypes) + let entities = generateTextEntities(item.text, enabledTypes: item.enabledEntityTypes) let baseColor: UIColor switch item.textColor { case .primary: diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift index 0d7893b84a..16fc139bfc 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift @@ -346,7 +346,7 @@ public class PeerMediaCollectionController: TelegramController { }, lockMediaRecording: { }, deleteRecordedMedia: { }, sendRecordedMedia: { - }, displayRestrictedInfo: { _ in + }, displayRestrictedInfo: { _, _ in }, displayVideoUnmuteTip: { _ in }, switchMediaRecordingMode: { }, setupMessageAutoremoveTimeout: { diff --git a/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift b/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift new file mode 100644 index 0000000000..9cf383f43d --- /dev/null +++ b/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift @@ -0,0 +1,157 @@ +import Foundation +import UIKit +import TelegramCore +import Postbox +import Display +import SwiftSignalKit +import TelegramUIPreferences + +import SafariServices + +func handleTextLinkAction(context: AccountContext, peerId: PeerId?, navigateDisposable: MetaDisposable, controller: ViewController, action: TextLinkItemActionType, itemLink: TextLinkItem) { + let presentImpl: (ViewController, Any?) -> Void = { controllerToPresent, _ in + controller.present(controllerToPresent, in: .window(.root)) + } + + let openResolvedPeerImpl: (PeerId?, ChatControllerInteractionNavigateToPeer) -> Void = { [weak controller] peerId, navigation in + openResolvedUrl(.peer(peerId, navigation), context: context, navigationController: (controller?.navigationController as? NavigationController), openPeer: { (peerId, navigation) in + switch navigation { + case let .chat(_, messageId): + if let navigationController = controller?.navigationController as? NavigationController { + navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always) + } + case .info: + let peerSignal: Signal + peerSignal = context.account.postbox.loadedPeerWithId(peerId) |> map(Optional.init) + navigateDisposable.set((peerSignal |> take(1) |> deliverOnMainQueue).start(next: { peer in + if let controller = controller, let peer = peer { + if let infoController = peerInfoController(context: context, peer: peer) { + (controller.navigationController as? NavigationController)?.pushViewController(infoController) + } + } + })) + default: + break + } + }, present: presentImpl, dismissInput: {}) + } + + let openLinkImpl: (String) -> Void = { [weak controller] url in + navigateDisposable.set((resolveUrl(account: context.account, url: url) |> deliverOnMainQueue).start(next: { result in + if let controller = controller { + switch result { + case let .externalUrl(url): + context.sharedContext.applicationBindings.openUrl(url) + case let .peer(peerId, _): + openResolvedPeerImpl(peerId, .default) + case let .channelMessage(peerId, messageId): + if let navigationController = controller.navigationController as? NavigationController { + navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId) + } + case let .stickerPack(name): + controller.present(StickerPackPreviewController(context: context, stickerPack: .name(name), parentNavigationController: controller.navigationController as? NavigationController), in: .window(.root)) + case let .instantView(webpage, anchor): + (controller.navigationController as? NavigationController)?.pushViewController(InstantPageController(context: context, webPage: webpage, sourcePeerType: .group, anchor: anchor)) + case let .join(link): + controller.present(JoinLinkPreviewController(context: context, link: link, navigateToPeer: { peerId in + openResolvedPeerImpl(peerId, .chat(textInputState: nil, messageId: nil)) + }), in: .window(.root)) + default: + break + } + } + })) + } + + let openPeerMentionImpl: (String) -> Void = { mention in + navigateDisposable.set((resolvePeerByName(account: context.account, name: mention, ageLimit: 10) |> take(1) |> deliverOnMainQueue).start(next: { peerId in + openResolvedPeerImpl(peerId, .default) + })) + } + + let presentationData = context.sharedContext.currentPresentationData.with { $0 } + switch action { + case .tap: + switch itemLink { + case let .url(url): + openLinkImpl(url) + case let .mention(mention): + openPeerMentionImpl(mention) + case let .hashtag(_, hashtag): + if let peerId = peerId { + let peerSignal = context.account.postbox.loadedPeerWithId(peerId) + let _ = (peerSignal + |> deliverOnMainQueue).start(next: { peer in + let searchController = HashtagSearchController(context: context, peer: peer, query: hashtag) + (controller.navigationController as? NavigationController)?.pushViewController(searchController) + }) + } + } + case .longTap: + switch itemLink { + case let .url(url): + let canOpenIn = availableOpenInOptions(context: context, item: .url(url: url)).count > 1 + let openText = canOpenIn ? presentationData.strings.Conversation_FileOpenIn : presentationData.strings.Conversation_LinkDialogOpen + let actionSheet = ActionSheetController(presentationTheme: presentationData.theme) + actionSheet.setItemGroups([ActionSheetItemGroup(items: [ + ActionSheetTextItem(title: url), + ActionSheetButtonItem(title: openText, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + openLinkImpl(url) + }), + ActionSheetButtonItem(title: presentationData.strings.ShareMenu_CopyShareLink, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + UIPasteboard.general.string = url + }), + ActionSheetButtonItem(title: presentationData.strings.Conversation_AddToReadingList, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + if let link = URL(string: url) { + let _ = try? SSReadingList.default()?.addItem(with: link, title: nil, previewText: nil) + } + }) + ]), ActionSheetItemGroup(items: [ + ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + }) + ])]) + controller.present(actionSheet, in: .window(.root)) + case let .mention(mention): + let actionSheet = ActionSheetController(presentationTheme: presentationData.theme) + actionSheet.setItemGroups([ActionSheetItemGroup(items: [ + ActionSheetTextItem(title: mention), + ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogOpen, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + openPeerMentionImpl(mention) + }), + ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogCopy, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + UIPasteboard.general.string = mention + }) + ]), ActionSheetItemGroup(items: [ + ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + }) + ])]) + controller.present(actionSheet, in: .window(.root)) + case let .hashtag(_, hashtag): + let actionSheet = ActionSheetController(presentationTheme: presentationData.theme) + actionSheet.setItemGroups([ActionSheetItemGroup(items: [ + ActionSheetTextItem(title: hashtag), + ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogOpen, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + let searchController = HashtagSearchController(context: context, peer: nil, query: hashtag) + (controller.navigationController as? NavigationController)?.pushViewController(searchController) + }), + ActionSheetButtonItem(title: presentationData.strings.Conversation_LinkDialogCopy, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + UIPasteboard.general.string = hashtag + }) + ]), ActionSheetItemGroup(items: [ + ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + }) + ])]) + controller.present(actionSheet, in: .window(.root)) + } + } +} diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift index 5813018150..6ecb190d68 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift @@ -322,9 +322,17 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The let _ = telegramWallpapers(postbox: context.account.postbox, network: context.account.network).start() - let availableAppIcons: Signal<[PresentationAppIcon], NoError> = .single(context.sharedContext.applicationBindings.getAvailableAlternateIcons()) + let currentAppIcon: PresentationAppIcon? + let appIcons = context.sharedContext.applicationBindings.getAvailableAlternateIcons() + if let alternateIconName = context.sharedContext.applicationBindings.getAlternateIconName() { + currentAppIcon = appIcons.filter { $0.name == alternateIconName }.first + } else { + currentAppIcon = appIcons.filter { $0.isDefault }.first + } + + let availableAppIcons: Signal<[PresentationAppIcon], NoError> = .single(appIcons) let currentAppIconName = ValuePromise() - currentAppIconName.set(context.sharedContext.applicationBindings.getAlternateIconName() ?? "Blue") + currentAppIconName.set(currentAppIcon?.name ?? "Blue") let arguments = ThemeSettingsControllerArguments(context: context, selectTheme: { theme in let _ = (context.sharedContext.accountManager.transaction { transaction -> Void in diff --git a/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift b/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift index 2c43d29f14..02bea114a0 100644 --- a/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift @@ -8,9 +8,11 @@ import TelegramPresentationData private final class UpdateInfoControllerArguments { let openAppStorePage: () -> Void + let linkAction: (TextLinkItemActionType, TextLinkItem) -> Void - init(openAppStorePage: @escaping () -> Void) { + init(openAppStorePage: @escaping () -> Void, linkAction: @escaping (TextLinkItemActionType, TextLinkItem) -> Void) { self.openAppStorePage = openAppStorePage + self.linkAction = linkAction } } @@ -20,7 +22,7 @@ private enum UpdateInfoControllerSection: Int32 { } private enum UpdateInfoControllerEntry: ItemListNodeEntry { - case info(PresentationTheme, String, String, [MessageTextEntity]) + case info(PresentationTheme, PresentationAppIcon?, String, String, [MessageTextEntity]) case update(PresentationTheme, String) var section: ItemListSectionId { @@ -43,8 +45,8 @@ private enum UpdateInfoControllerEntry: ItemListNodeEntry { static func ==(lhs: UpdateInfoControllerEntry, rhs: UpdateInfoControllerEntry) -> Bool { switch lhs { - case let .info(lhsTheme, lhsTitle, lhsText, lhsEntities): - if case let .info(rhsTheme, rhsTitle, rhsText, rhsEntities) = rhs, lhsTheme === rhsTheme, lhsTitle == rhsTitle, lhsText == rhsText, lhsEntities == rhsEntities { + case let .info(lhsTheme, lhsIcon, lhsTitle, lhsText, lhsEntities): + if case let .info(rhsTheme, rhsIcon, rhsTitle, rhsText, rhsEntities) = rhs, lhsTheme === rhsTheme, lhsIcon == rhsIcon, lhsTitle == rhsTitle, lhsText == rhsText, lhsEntities == rhsEntities { return true } else { return false @@ -64,9 +66,10 @@ private enum UpdateInfoControllerEntry: ItemListNodeEntry { func item(_ arguments: UpdateInfoControllerArguments) -> ListViewItem { switch self { - case let .info(theme, title, text, entities): - let text = stringWithAppliedEntities(text, entities: entities, baseColor: theme.list.itemPrimaryTextColor, linkColor: theme.list.itemAccentColor, baseFont: Font.regular(14.0), linkFont: Font.regular(14.0), boldFont: Font.bold(14.0), italicFont: Font.italic(14.0), boldItalicFont: Font.semiboldItalic(14.0), fixedFont: Font.monospace(14.0)) - return ItemListSectionHeaderItem(theme: theme, text: text.string, sectionId: self.section) + case let .info(theme, icon, title, text, entities): + return UpdateInfoItem(theme: theme, appIcon: icon, title: title, text: text, entities: entities, sectionId: self.section, style: .blocks, linkItemAction: { action, itemLink in + arguments.linkAction(action, itemLink) + }) case let .update(theme, title): return ItemListActionItem(theme: theme, title: title, kind: .generic, alignment: .center, sectionId: self.section, style: .blocks, action: { arguments.openAppStorePage() @@ -75,10 +78,10 @@ private enum UpdateInfoControllerEntry: ItemListNodeEntry { } } -private func updateInfoControllerEntries(theme: PresentationTheme, strings: PresentationStrings, appUpdateInfo: AppUpdateInfo) -> [UpdateInfoControllerEntry] { +private func updateInfoControllerEntries(theme: PresentationTheme, strings: PresentationStrings, appIcon: PresentationAppIcon?, appUpdateInfo: AppUpdateInfo) -> [UpdateInfoControllerEntry] { var entries: [UpdateInfoControllerEntry] = [] - entries.append(.info(theme, strings.Update_AppVersion(appUpdateInfo.version).0, appUpdateInfo.text, appUpdateInfo.entities)) + entries.append(.info(theme, appIcon, strings.Update_AppVersion(appUpdateInfo.version).0, appUpdateInfo.text, appUpdateInfo.entities)) entries.append(.update(theme, strings.Update_UpdateApp)) return entries @@ -86,24 +89,48 @@ private func updateInfoControllerEntries(theme: PresentationTheme, strings: Pres public func updateInfoController(context: AccountContext, appUpdateInfo: AppUpdateInfo) -> ViewController { var dismissImpl: (() -> Void)? + var linkActionImpl: ((TextLinkItemActionType, TextLinkItem) -> Void)? + + let actionsDisposable = DisposableSet() + + let navigateDisposable = MetaDisposable() + actionsDisposable.add(navigateDisposable) let arguments = UpdateInfoControllerArguments(openAppStorePage: { context.sharedContext.applicationBindings.openAppStorePage() + }, linkAction: { action, itemLink in + linkActionImpl?(action, itemLink) }) let signal = context.sharedContext.presentationData |> deliverOnMainQueue |> map { presentationData -> (ItemListControllerState, (ItemListNodeState, UpdateInfoControllerEntry.ItemGenerationArguments)) in - let leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Update_Skip), style: .regular, enabled: true, action: { + let appIcon: PresentationAppIcon? + let appIcons = context.sharedContext.applicationBindings.getAvailableAlternateIcons() + if let alternateIconName = context.sharedContext.applicationBindings.getAlternateIconName() { + appIcon = appIcons.filter { $0.name == alternateIconName }.first + } else { + appIcon = appIcons.filter { $0.isDefault }.first + } + + let leftNavigationButton = appUpdateInfo.popup ? ItemListNavigationButton(content: .text(presentationData.strings.Update_Skip), style: .regular, enabled: true, action: { dismissImpl?() - }) + }) : nil let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.Update_Title), leftNavigationButton: leftNavigationButton, rightNavigationButton: nil, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) - let listState = ItemListNodeState(entries: updateInfoControllerEntries(theme: presentationData.theme, strings: presentationData.strings, appUpdateInfo: appUpdateInfo), style: .blocks, animateChanges: false) + let listState = ItemListNodeState(entries: updateInfoControllerEntries(theme: presentationData.theme, strings: presentationData.strings, appIcon: appIcon, appUpdateInfo: appUpdateInfo), style: .blocks, animateChanges: false) return (controllerState, (listState, arguments)) } + |> afterDisposed { + actionsDisposable.dispose() + } let controller = ItemListController(sharedContext: context.sharedContext, state: signal) + linkActionImpl = { [weak controller] action, itemLink in + if let strongController = controller { + handleTextLinkAction(context: context, peerId: nil, navigateDisposable: navigateDisposable, controller: strongController, action: action, itemLink: itemLink) + } + } dismissImpl = { [weak controller] in controller?.view.endEditing(true) controller?.dismiss() diff --git a/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift b/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift new file mode 100644 index 0000000000..e5cf15cb24 --- /dev/null +++ b/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift @@ -0,0 +1,443 @@ +import Foundation +import UIKit +import Display +import AsyncDisplayKit +import SwiftSignalKit +import TelegramCore +import TelegramPresentationData + +private func generateBorderImage(theme: PresentationTheme, bordered: Bool) -> UIImage? { + return generateImage(CGSize(width: 30.0, height: 30.0), rotatedContext: { size, context in + let bounds = CGRect(origin: CGPoint(), size: size) + context.setFillColor(theme.list.itemBlocksBackgroundColor.cgColor) + context.fill(bounds) + + context.setBlendMode(.clear) + context.fillEllipse(in: bounds) + context.setBlendMode(.normal) + + if bordered { + let lineWidth: CGFloat = 1.0 + context.setLineWidth(lineWidth) + context.setStrokeColor(theme.list.disclosureArrowColor.withAlphaComponent(0.4).cgColor) + context.strokeEllipse(in: bounds.insetBy(dx: lineWidth / 2.0, dy: lineWidth / 2.0)) + } + })?.stretchableImage(withLeftCapWidth: 15, topCapHeight: 15) +} + +class UpdateInfoItem: ListViewItem, ItemListItem { + let theme: PresentationTheme + let appIcon: PresentationAppIcon? + let title: String + let text: String + let entities: [MessageTextEntity] + let sectionId: ItemListSectionId + let style: ItemListStyle + let linkItemAction: ((TextLinkItemActionType, TextLinkItem) -> Void)? + + let tag: Any? + + let selectable: Bool = false + + init(theme: PresentationTheme, appIcon: PresentationAppIcon?, title: String, text: String, entities: [MessageTextEntity], sectionId: ItemListSectionId, style: ItemListStyle, linkItemAction: ((TextLinkItemActionType, TextLinkItem) -> Void)? = nil, tag: Any? = nil) { + self.theme = theme + self.appIcon = appIcon + self.title = title + self.text = text + self.entities = entities + self.sectionId = sectionId + self.style = style + self.linkItemAction = linkItemAction + self.tag = tag + } + + func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal?, (ListViewItemApply) -> Void)) -> Void) { + async { + let node = UpdateInfoItemNode() + let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem)) + + node.contentSize = layout.contentSize + node.insets = layout.insets + + Queue.mainQueue().async { + completion(node, { + return (nil, { _ in apply() }) + }) + } + } + } + + func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) { + Queue.mainQueue().async { + if let nodeValue = node() as? UpdateInfoItemNode { + let makeLayout = nodeValue.asyncLayout() + + async { + let (layout, apply) = makeLayout(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem)) + Queue.mainQueue().async { + completion(layout, { _ in + apply() + }) + } + } + } + } + } +} + +private let titleFont = Font.bold(17.0) +private let textFont = Font.regular(16.0) +private let textBoldFont = Font.medium(16.0) +private let textItalicFont = Font.italic(16.0) +private let textBoldItalicFont = Font.semiboldItalic(16.0) +private let textFixedFont = Font.regular(16.0) + +class UpdateInfoItemNode: ListViewItemNode { + private let backgroundNode: ASDisplayNode + private let topStripeNode: ASDisplayNode + private let bottomStripeNode: ASDisplayNode + private let highlightedBackgroundNode: ASDisplayNode + private var linkHighlightingNode: LinkHighlightingNode? + + private let iconNode: ASImageNode + private let overlayNode: ASImageNode + private let titleNode: TextNode + private let textNode: TextNode + + private let activateArea: AccessibilityAreaNode + + private var item: UpdateInfoItem? + + var tag: Any? { + return self.item?.tag + } + + init() { + self.backgroundNode = ASDisplayNode() + self.backgroundNode.isLayerBacked = true + self.backgroundNode.backgroundColor = .white + + self.topStripeNode = ASDisplayNode() + self.topStripeNode.isLayerBacked = true + + self.bottomStripeNode = ASDisplayNode() + self.bottomStripeNode.isLayerBacked = true + + self.iconNode = ASImageNode() + self.iconNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 62.0, height: 62.0)) + self.iconNode.isLayerBacked = true + + self.overlayNode = ASImageNode() + self.overlayNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 62.0, height: 62.0)) + self.overlayNode.isLayerBacked = true + + self.titleNode = TextNode() + self.titleNode.isUserInteractionEnabled = false + + self.textNode = TextNode() + self.textNode.isUserInteractionEnabled = false + self.textNode.contentMode = .left + self.textNode.contentsScale = UIScreen.main.scale + + self.highlightedBackgroundNode = ASDisplayNode() + self.highlightedBackgroundNode.isLayerBacked = true + + self.activateArea = AccessibilityAreaNode() + + super.init(layerBacked: false, dynamicBounce: false) + + self.addSubnode(self.iconNode) + self.addSubnode(self.overlayNode) + self.addSubnode(self.titleNode) + self.addSubnode(self.textNode) + self.addSubnode(self.activateArea) + } + + override func didLoad() { + super.didLoad() + + let recognizer = TapLongTapOrDoubleTapGestureRecognizer(target: self, action: #selector(self.tapLongTapOrDoubleTapGesture(_:))) + recognizer.tapActionAtPoint = { [weak self] point in + if let strongSelf = self, strongSelf.linkItemAtPoint(point) != nil { + return .waitForSingleTap + } + return .fail + } + recognizer.highlight = { [weak self] point in + if let strongSelf = self { + strongSelf.updateTouchesAtPoint(point) + } + } + self.view.addGestureRecognizer(recognizer) + } + + func asyncLayout() -> (_ item: UpdateInfoItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) { + let makeTitleLayout = TextNode.asyncLayout(self.titleNode) + let makeTextLayout = TextNode.asyncLayout(self.textNode) + + let currentItem = self.item + + return { item, params, neighbors in + var updatedTheme: PresentationTheme? + var updatedAppIcon: PresentationAppIcon? + + if currentItem?.theme !== item.theme { + updatedTheme = item.theme + } + + if currentItem?.appIcon != item.appIcon { + updatedAppIcon = item.appIcon + } + + let textColor: UIColor = item.theme.list.itemPrimaryTextColor + + let inset: CGFloat + let itemBackgroundColor: UIColor + let itemSeparatorColor: UIColor + + switch item.style { + case .plain: + itemBackgroundColor = item.theme.list.plainBackgroundColor + itemSeparatorColor = item.theme.list.itemPlainSeparatorColor + inset = 14.0 + params.leftInset + case .blocks: + itemBackgroundColor = item.theme.list.itemBlocksBackgroundColor + itemSeparatorColor = item.theme.list.itemBlocksSeparatorColor + inset = 14.0 + params.rightInset + } + + let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.title, font: titleFont, textColor: textColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 88.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) + + let string = stringWithAppliedEntities(item.text, entities: item.entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont) + let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 28.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) + + let contentSize: CGSize + let insets: UIEdgeInsets + let separatorHeight = UIScreenPixel + + switch item.style { + case .plain: + contentSize = CGSize(width: params.width, height: 88.0 + textLayout.size.height + inset) + insets = itemListNeighborsPlainInsets(neighbors) + case .blocks: + contentSize = CGSize(width: params.width, height: 88.0 + textLayout.size.height + inset) + insets = itemListNeighborsGroupedInsets(neighbors) + } + + let layout = ListViewItemNodeLayout(contentSize: contentSize, insets: insets) + let layoutSize = layout.size + + return (layout, { [weak self] in + if let strongSelf = self { + strongSelf.item = item + + strongSelf.activateArea.frame = CGRect(origin: CGPoint(x: params.leftInset, y: 0.0), size: CGSize(width: params.width - params.leftInset - params.rightInset, height: layout.contentSize.height)) + strongSelf.activateArea.accessibilityLabel = item.text + + if let _ = updatedTheme { + strongSelf.topStripeNode.backgroundColor = itemSeparatorColor + strongSelf.bottomStripeNode.backgroundColor = itemSeparatorColor + strongSelf.backgroundNode.backgroundColor = itemBackgroundColor + strongSelf.highlightedBackgroundNode.backgroundColor = item.theme.list.itemHighlightedBackgroundColor + + var bordered = true + if let appIcon = item.appIcon { + switch appIcon.name { + case "BlueFilled": + bordered = false + case "BlackFilled": + bordered = false + default: + break + } + } + + strongSelf.overlayNode.image = generateBorderImage(theme: item.theme, bordered: bordered) + } + + if let appIcon = updatedAppIcon, let image = UIImage(named: appIcon.imageName, in: Bundle.main, compatibleWith: nil) { + strongSelf.iconNode.image = image + } + + let _ = titleApply() + let _ = textApply() + + switch item.style { + case .plain: + if strongSelf.backgroundNode.supernode != nil { + strongSelf.backgroundNode.removeFromSupernode() + } + if strongSelf.topStripeNode.supernode != nil { + strongSelf.topStripeNode.removeFromSupernode() + } + if strongSelf.bottomStripeNode.supernode == nil { + strongSelf.insertSubnode(strongSelf.bottomStripeNode, at: 0) + } + + strongSelf.bottomStripeNode.frame = CGRect(origin: CGPoint(x: inset, y: contentSize.height - separatorHeight), size: CGSize(width: params.width - inset, height: separatorHeight)) + case .blocks: + if strongSelf.backgroundNode.supernode == nil { + strongSelf.insertSubnode(strongSelf.backgroundNode, at: 0) + } + if strongSelf.topStripeNode.supernode == nil { + strongSelf.insertSubnode(strongSelf.topStripeNode, at: 1) + } + if strongSelf.bottomStripeNode.supernode == nil { + strongSelf.insertSubnode(strongSelf.bottomStripeNode, at: 2) + } + switch neighbors.top { + case .sameSection(false): + strongSelf.topStripeNode.isHidden = true + default: + strongSelf.topStripeNode.isHidden = false + } + let bottomStripeInset: CGFloat + let bottomStripeOffset: CGFloat + switch neighbors.bottom { + case .sameSection(false): + bottomStripeInset = 16.0 + bottomStripeOffset = -separatorHeight + default: + bottomStripeInset = 0.0 + bottomStripeOffset = 0.0 + } + strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: contentSize.height + min(insets.top, separatorHeight) + min(insets.bottom, separatorHeight))) + strongSelf.topStripeNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: layoutSize.width, height: separatorHeight)) + strongSelf.bottomStripeNode.frame = CGRect(origin: CGPoint(x: bottomStripeInset, y: contentSize.height + bottomStripeOffset), size: CGSize(width: layoutSize.width - bottomStripeInset, height: separatorHeight)) + } + + let iconFrame = CGRect(origin: CGPoint(x: inset, y: inset), size: CGSize(width: 62.0, height: 62.0)) + strongSelf.iconNode.frame = iconFrame + strongSelf.overlayNode.frame = iconFrame + + strongSelf.titleNode.frame = CGRect(origin: CGPoint(x: iconFrame.maxX + inset, y: iconFrame.minY + ceil((iconFrame.height - titleLayout.size.height) / 2.0)), size: titleLayout.size) + strongSelf.textNode.frame = CGRect(origin: CGPoint(x: inset, y: iconFrame.maxY + inset), size: textLayout.size) + + strongSelf.highlightedBackgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -UIScreenPixel), size: CGSize(width: params.width, height: layout.contentSize.height + UIScreenPixel + UIScreenPixel)) + } + }) + } + } + + override func setHighlighted(_ highlighted: Bool, at point: CGPoint, animated: Bool) { + super.setHighlighted(highlighted, at: point, animated: animated) + + if highlighted && self.linkItemAtPoint(point) == nil { + self.highlightedBackgroundNode.alpha = 1.0 + if self.highlightedBackgroundNode.supernode == nil { + var anchorNode: ASDisplayNode? + if self.bottomStripeNode.supernode != nil { + anchorNode = self.bottomStripeNode + } else if self.topStripeNode.supernode != nil { + anchorNode = self.topStripeNode + } else if self.backgroundNode.supernode != nil { + anchorNode = self.backgroundNode + } + if let anchorNode = anchorNode { + self.insertSubnode(self.highlightedBackgroundNode, aboveSubnode: anchorNode) + } else { + self.addSubnode(self.highlightedBackgroundNode) + } + } + } else { + if self.highlightedBackgroundNode.supernode != nil { + if animated { + self.highlightedBackgroundNode.layer.animateAlpha(from: self.highlightedBackgroundNode.alpha, to: 0.0, duration: 0.4, completion: { [weak self] completed in + if let strongSelf = self { + if completed { + strongSelf.highlightedBackgroundNode.removeFromSupernode() + } + } + }) + self.highlightedBackgroundNode.alpha = 0.0 + } else { + self.highlightedBackgroundNode.removeFromSupernode() + } + } + } + } + + override func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) { + self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4) + } + + override func animateRemoved(_ currentTimestamp: Double, duration: Double) { + self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) + } + + @objc func tapLongTapOrDoubleTapGesture(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) { + switch recognizer.state { + case .ended: + if let (gesture, location) = recognizer.lastRecognizedGestureAndLocation { + switch gesture { + case .tap, .longTap: + if let item = self.item, let linkItem = self.linkItemAtPoint(location) { + item.linkItemAction?(gesture == .tap ? .tap : .longTap, linkItem) + } + default: + break + } + } + default: + break + } + } + + private func linkItemAtPoint(_ point: CGPoint) -> TextLinkItem? { + let textNodeFrame = self.textNode.frame + if let (_, attributes) = self.textNode.attributesAtPoint(CGPoint(x: point.x - textNodeFrame.minX, y: point.y - textNodeFrame.minY)) { + if let url = attributes[NSAttributedStringKey(rawValue: TelegramTextAttributes.URL)] as? String { + return .url(url) + } else if let peerName = attributes[NSAttributedStringKey(rawValue: TelegramTextAttributes.PeerTextMention)] as? String { + return .mention(peerName) + } else if let hashtag = attributes[NSAttributedStringKey(rawValue: TelegramTextAttributes.Hashtag)] as? TelegramHashtag { + return .hashtag(hashtag.peerName, hashtag.hashtag) + } else { + return nil + } + } + return nil + } + + private func updateTouchesAtPoint(_ point: CGPoint?) { + if let item = self.item { + var rects: [CGRect]? + if let point = point { + let textNodeFrame = self.textNode.frame + if let (index, attributes) = self.textNode.attributesAtPoint(CGPoint(x: point.x - textNodeFrame.minX, y: point.y - textNodeFrame.minY)) { + let possibleNames: [String] = [ + TelegramTextAttributes.URL, + TelegramTextAttributes.PeerMention, + TelegramTextAttributes.PeerTextMention, + TelegramTextAttributes.BotCommand, + TelegramTextAttributes.Hashtag + ] + for name in possibleNames { + if let _ = attributes[NSAttributedStringKey(rawValue: name)] { + rects = self.textNode.attributeRects(name: name, at: index) + break + } + } + } + } + + if let rects = rects { + let linkHighlightingNode: LinkHighlightingNode + if let current = self.linkHighlightingNode { + linkHighlightingNode = current + } else { + linkHighlightingNode = LinkHighlightingNode(color: item.theme.list.itemAccentColor.withAlphaComponent(0.5)) + self.linkHighlightingNode = linkHighlightingNode + self.insertSubnode(linkHighlightingNode, belowSubnode: self.textNode) + } + linkHighlightingNode.frame = self.textNode.frame + linkHighlightingNode.updateRects(rects) + } else if let linkHighlightingNode = self.linkHighlightingNode { + self.linkHighlightingNode = nil + linkHighlightingNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.18, removeOnCompletion: false, completion: { [weak linkHighlightingNode] _ in + linkHighlightingNode?.removeFromSupernode() + }) + } + } + } +} diff --git a/submodules/TelegramUI/TelegramUI/UserInfoController.swift b/submodules/TelegramUI/TelegramUI/UserInfoController.swift index 3af7a14cdf..6b383bff36 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoController.swift @@ -386,27 +386,27 @@ private enum UserInfoEntry: ItemListNodeEntry { case let .calls(theme, strings, dateTimeFormat, messages): return ItemListCallListItem(theme: theme, strings: strings, dateTimeFormat: dateTimeFormat, messages: messages, sectionId: self.section, style: .plain) case let .about(theme, peer, text, value): - var enabledEntitiyTypes: EnabledEntityTypes = [] + var enabledEntityTypes: EnabledEntityTypes = [] if let peer = peer as? TelegramUser, let _ = peer.botInfo { - enabledEntitiyTypes = [.url, .mention, .hashtag] + enabledEntityTypes = [.url, .mention, .hashtag] } - return ItemListTextWithLabelItem(theme: theme, label: text, text: foldMultipleLineBreaks(value), enabledEntitiyTypes: enabledEntitiyTypes, multiline: true, sectionId: self.section, action: nil, longTapAction: { + return ItemListTextWithLabelItem(theme: theme, label: text, text: foldMultipleLineBreaks(value), enabledEntityTypes: enabledEntityTypes, multiline: true, sectionId: self.section, action: nil, longTapAction: { arguments.displayAboutContextMenu(value) }, linkItemAction: { action, itemLink in arguments.aboutLinkAction(action, itemLink) }, tag: UserInfoEntryTag.about) case let .phoneNumber(theme, _, label, value, isMain): - return ItemListTextWithLabelItem(theme: theme, label: label, text: value, textColor: isMain ? .highlighted : .accent, enabledEntitiyTypes: [], multiline: false, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: label, text: value, textColor: isMain ? .highlighted : .accent, enabledEntityTypes: [], multiline: false, sectionId: self.section, action: { arguments.openCallMenu(value) }, longTapAction: { arguments.displayCopyContextMenu(.phoneNumber, value) }, tag: UserInfoEntryTag.phoneNumber) case let .requestPhoneNumber(theme, label, value): - return ItemListTextWithLabelItem(theme: theme, label: label, text: value, textColor: .accent, enabledEntitiyTypes: [], multiline: false, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: label, text: value, textColor: .accent, enabledEntityTypes: [], multiline: false, sectionId: self.section, action: { arguments.requestPhoneNumber() }) case let .userName(theme, text, value): - return ItemListTextWithLabelItem(theme: theme, label: text, text: "@\(value)", textColor: .accent, enabledEntitiyTypes: [], multiline: false, sectionId: self.section, action: { + return ItemListTextWithLabelItem(theme: theme, label: text, text: "@\(value)", textColor: .accent, enabledEntityTypes: [], multiline: false, sectionId: self.section, action: { arguments.displayUsernameContextMenu("@\(value)") }, longTapAction: { arguments.displayCopyContextMenu(.username, "@\(value)") @@ -1178,113 +1178,114 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us let globalNotificationsKey: PostboxViewKey = .preferences(keys: Set([PreferencesKeys.globalNotifications])) let signal = combineLatest(context.sharedContext.presentationData, statePromise.get(), peerView.get(), deviceContacts, context.account.postbox.combinedView(keys: [.peerChatState(peerId: peerId), globalNotificationsKey])) - |> map { presentationData, state, view, deviceContacts, combinedView -> (ItemListControllerState, (ItemListNodeState, UserInfoEntry.ItemGenerationArguments)) in - let peer = peerViewMainPeer(view.0) - - var globalNotificationSettings: GlobalNotificationSettings = .defaultSettings - if let preferencesView = combinedView.views[globalNotificationsKey] as? PreferencesView { - if let settings = preferencesView.values[PreferencesKeys.globalNotifications] as? GlobalNotificationSettings { - globalNotificationSettings = settings - } + |> map { presentationData, state, view, deviceContacts, combinedView -> (ItemListControllerState, (ItemListNodeState, UserInfoEntry.ItemGenerationArguments)) in + let peer = peerViewMainPeer(view.0) + + var globalNotificationSettings: GlobalNotificationSettings = .defaultSettings + if let preferencesView = combinedView.views[globalNotificationsKey] as? PreferencesView { + if let settings = preferencesView.values[PreferencesKeys.globalNotifications] as? GlobalNotificationSettings { + globalNotificationSettings = settings } - - if let peer = peer { - let _ = cachedAvatarEntries.modify { value in - if value != nil { - return value - } else { - let promise = Promise<[AvatarGalleryEntry]>() - promise.set(fetchedAvatarGalleryEntries(account: context.account, peer: peer)) - return promise - } - } - } - var leftNavigationButton: ItemListNavigationButton? - let rightNavigationButton: ItemListNavigationButton - if let editingState = state.editingState { - leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .regular, enabled: true, action: { - updateState { - $0.withUpdatedEditingState(nil) - } - }) - - var doneEnabled = true - if let editingName = editingState.editingName, editingName.isEmpty { - doneEnabled = false - } - - if state.savingData { - rightNavigationButton = ItemListNavigationButton(content: .none, style: .activity, enabled: doneEnabled, action: {}) + } + + if let peer = peer { + let _ = cachedAvatarEntries.modify { value in + if value != nil { + return value } else { - rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Done), style: .bold, enabled: doneEnabled, action: { - var updateName: ItemListAvatarAndNameInfoItemName? - updateState { state in - if let editingState = state.editingState, let editingName = editingState.editingName { - if let user = peer { - if ItemListAvatarAndNameInfoItemName(user) != editingName { - updateName = editingName - } + let promise = Promise<[AvatarGalleryEntry]>() + promise.set(fetchedAvatarGalleryEntries(account: context.account, peer: peer)) + return promise + } + } + } + var leftNavigationButton: ItemListNavigationButton? + let rightNavigationButton: ItemListNavigationButton + if let editingState = state.editingState { + leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .regular, enabled: true, action: { + updateState { + $0.withUpdatedEditingState(nil) + } + }) + + var doneEnabled = true + if let editingName = editingState.editingName, editingName.isEmpty { + doneEnabled = false + } + + if state.savingData { + rightNavigationButton = ItemListNavigationButton(content: .none, style: .activity, enabled: doneEnabled, action: {}) + } else { + rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Done), style: .bold, enabled: doneEnabled, action: { + var updateName: ItemListAvatarAndNameInfoItemName? + updateState { state in + if let editingState = state.editingState, let editingName = editingState.editingName { + if let user = peer { + if ItemListAvatarAndNameInfoItemName(user) != editingName { + updateName = editingName } } - if updateName != nil { - return state.withUpdatedSavingData(true) - } else { - return state.withUpdatedEditingState(nil) - } } - - if let updateName = updateName, case let .personName(firstName, lastName) = updateName { - updatePeerNameDisposable.set((updateContactName(account: context.account, peerId: peerId, firstName: firstName, lastName: lastName) - |> deliverOnMainQueue).start(error: { _ in - updateState { state in - return state.withUpdatedSavingData(false) + if updateName != nil { + return state.withUpdatedSavingData(true) + } else { + return state.withUpdatedEditingState(nil) + } + } + + if let updateName = updateName, case let .personName(firstName, lastName) = updateName { + updatePeerNameDisposable.set((updateContactName(account: context.account, peerId: peerId, firstName: firstName, lastName: lastName) + |> deliverOnMainQueue).start(error: { _ in + updateState { state in + return state.withUpdatedSavingData(false) + } + }, completed: { + updateState { state in + return state.withUpdatedSavingData(false).withUpdatedEditingState(nil) + } + + let _ = (getUserPeer(postbox: context.account.postbox, peerId: peerId) + |> mapToSignal { peer, _ -> Signal in + guard let peer = peer as? TelegramUser, let phone = peer.phone, !phone.isEmpty else { + return .complete() } - }, completed: { - updateState { state in - return state.withUpdatedSavingData(false).withUpdatedEditingState(nil) - } - - let _ = (getUserPeer(postbox: context.account.postbox, peerId: peerId) - |> mapToSignal { peer, _ -> Signal in - guard let peer = peer as? TelegramUser, let phone = peer.phone, !phone.isEmpty else { + return (context.sharedContext.contactDataManager?.basicDataForNormalizedPhoneNumber(DeviceContactNormalizedPhoneNumber(rawValue: formatPhoneNumber(phone))) ?? .single([])) + |> take(1) + |> mapToSignal { records -> Signal in + var signals: [Signal] = [] + if let contactDataManager = context.sharedContext.contactDataManager { + for (id, basicData) in records { + signals.append(contactDataManager.appendContactData(DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: firstName, lastName: lastName, phoneNumbers: basicData.phoneNumbers), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []), to: id)) + } + } + return combineLatest(signals) + |> mapToSignal { _ -> Signal in return .complete() } - return (context.sharedContext.contactDataManager?.basicDataForNormalizedPhoneNumber(DeviceContactNormalizedPhoneNumber(rawValue: formatPhoneNumber(phone))) ?? .single([])) - |> take(1) - |> mapToSignal { records -> Signal in - var signals: [Signal] = [] - if let contactDataManager = context.sharedContext.contactDataManager { - for (id, basicData) in records { - signals.append(contactDataManager.appendContactData(DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: firstName, lastName: lastName, phoneNumbers: basicData.phoneNumbers), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []), to: id)) - } - } - return combineLatest(signals) - |> mapToSignal { _ -> Signal in - return .complete() - } - } - }).start() - })) - } - }) - } - } else { - rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Edit), style: .regular, enabled: true, action: { - if let user = peer { - updateState { state in - return state.withUpdatedEditingState(UserInfoEditingState(editingName: ItemListAvatarAndNameInfoItemName(user))) - } + } + }).start() + })) } }) } - - let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.UserInfo_Title), leftNavigationButton: leftNavigationButton, rightNavigationButton: rightNavigationButton, backNavigationButton: nil) - let listState = ItemListNodeState(entries: userInfoEntries(account: context.account, presentationData: presentationData, view: view.0, cachedPeerData: view.1, deviceContacts: deviceContacts, mode: mode, state: state, peerChatState: (combinedView.views[.peerChatState(peerId: peerId)] as? PeerChatStateView)?.chatState, globalNotificationSettings: globalNotificationSettings), style: .plain) - - return (controllerState, (listState, arguments)) - } |> afterDisposed { - actionsDisposable.dispose() + } else { + rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Edit), style: .regular, enabled: true, action: { + if let user = peer { + updateState { state in + return state.withUpdatedEditingState(UserInfoEditingState(editingName: ItemListAvatarAndNameInfoItemName(user))) + } + } + }) } + + let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.UserInfo_Title), leftNavigationButton: leftNavigationButton, rightNavigationButton: rightNavigationButton, backNavigationButton: nil) + let listState = ItemListNodeState(entries: userInfoEntries(account: context.account, presentationData: presentationData, view: view.0, cachedPeerData: view.1, deviceContacts: deviceContacts, mode: mode, state: state, peerChatState: (combinedView.views[.peerChatState(peerId: peerId)] as? PeerChatStateView)?.chatState, globalNotificationSettings: globalNotificationSettings), style: .plain) + + return (controllerState, (listState, arguments)) + } + |> afterDisposed { + actionsDisposable.dispose() + } let controller = ItemListController(context: context, state: signal) @@ -1449,7 +1450,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us } aboutLinkActionImpl = { [weak controller] action, itemLink in if let controller = controller { - handlePeerInfoAboutTextAction(context: context, peerId: peerId, navigateDisposable: navigateDisposable, controller: controller, action: action, itemLink: itemLink) + handleTextLinkAction(context: context, peerId: peerId, navigateDisposable: navigateDisposable, controller: controller, action: action, itemLink: itemLink) } } displayAboutContextMenuImpl = { [weak controller] text in diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj index 8851e56c03..bf5812eda2 100644 --- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj @@ -152,6 +152,8 @@ 09E4A805223D4A5A0038140F /* OpenSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A804223D4A5A0038140F /* OpenSettings.swift */; }; 09E4A807223D4B860038140F /* AccountUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A806223D4B860038140F /* AccountUtils.swift */; }; 09EC0DE722C67FB100E7185B /* UpdateInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC0DE622C67FB100E7185B /* UpdateInfoController.swift */; }; + 09EC0DEB22CAFF1400E7185B /* UpdateInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC0DEA22CAFF1400E7185B /* UpdateInfoItem.swift */; }; + 09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */; }; 09EDAD26220D30980012A50B /* AutodownloadConnectionTypeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD25220D30980012A50B /* AutodownloadConnectionTypeController.swift */; }; 09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD29220DA6A40012A50B /* VolumeButtons.swift */; }; 09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */; }; @@ -1372,6 +1374,8 @@ 09E4A804223D4A5A0038140F /* OpenSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSettings.swift; sourceTree = ""; }; 09E4A806223D4B860038140F /* AccountUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountUtils.swift; sourceTree = ""; }; 09EC0DE622C67FB100E7185B /* UpdateInfoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateInfoController.swift; sourceTree = ""; }; + 09EC0DEA22CAFF1400E7185B /* UpdateInfoItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateInfoItem.swift; sourceTree = ""; }; + 09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkHandling.swift; sourceTree = ""; }; 09EDAD25220D30980012A50B /* AutodownloadConnectionTypeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadConnectionTypeController.swift; sourceTree = ""; }; 09EDAD29220DA6A40012A50B /* VolumeButtons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VolumeButtons.swift; sourceTree = ""; }; 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadMediaCategoryController.swift; sourceTree = ""; }; @@ -2743,6 +2747,7 @@ D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */, D023836F1DDF0462004018B6 /* UrlHandling.swift */, 09E4A804223D4A5A0038140F /* OpenSettings.swift */, + 09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */, ); name = Routing; sourceTree = ""; @@ -2777,6 +2782,7 @@ isa = PBXGroup; children = ( 09EC0DE622C67FB100E7185B /* UpdateInfoController.swift */, + 09EC0DEA22CAFF1400E7185B /* UpdateInfoItem.swift */, ); name = Update; sourceTree = ""; @@ -6037,6 +6043,7 @@ 09F664C821EB4A2600AB7E26 /* ThemeGridSearchItem.swift in Sources */, 09A218D9229EE1B600DE6898 /* HorizontalStickerGridItem.swift in Sources */, D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */, + 09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */, D080B27F1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift in Sources */, D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */, D087BFAD1F741B9D003FD209 /* ShareContentContainerNode.swift in Sources */, @@ -6171,6 +6178,7 @@ D0E9BA651F055B4500F079A4 /* BotCheckoutNativeCardEntryController.swift in Sources */, D02D60B3206C18A600FEFE1E /* SecureIdPlaintextFormControllerNode.swift in Sources */, D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */, + 09EC0DEB22CAFF1400E7185B /* UpdateInfoItem.swift in Sources */, D0192D3C210A44D00005FA10 /* DeviceContactData.swift in Sources */, D0EC6E391EB9F58900EBF1C3 /* ItemListCheckboxItem.swift in Sources */, D0EC6E3A1EB9F58900EBF1C3 /* ItemListSwitchItem.swift in Sources */, From 888ad578c0e181b22662a261b464845eea1145b7 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 2 Jul 2019 18:55:43 +0200 Subject: [PATCH 2/2] UI fixes --- Telegram-iOS.xcodeproj/project.pbxproj | 8 +- .../Resources/intro/telegram_plane1@2x.png | Bin 3991 -> 1248 bytes .../Resources/intro/telegram_sphere@2x.png | Bin 9949 -> 8335 bytes .../AppIcon.appiconset/CompanionIcon@2x.png | Bin 3060 -> 0 bytes .../AppIcon.appiconset/CompanionIcon@3x.png | Bin 4914 -> 0 bytes .../AppIcon.appiconset/Contents.json | 22 ++-- .../AppIcon.appiconset/Home100@2x.png | Bin 5084 -> 0 bytes .../AppIcon.appiconset/Home88@2x.png | Bin 4485 -> 0 bytes .../AppIcon.appiconset/Icon@2x.png | Bin 4464 -> 0 bytes .../NotificationIcon38@2x.png | Bin 2429 -> 0 bytes .../NotificationIcon42@2x.png | Bin 2794 -> 0 bytes .../AppIcon.appiconset/ShortLook38@2x.png | Bin 6958 -> 0 bytes .../AppIcon.appiconset/ShortLook42@2x.png | Bin 7932 -> 0 bytes .../AppIcon.appiconset/ShortLook44@2x.png | Bin 11280 -> 0 bytes .../Simple-iTunesArtwork.png | Bin 0 -> 162976 bytes .../AppIcon.appiconset/Simple@58x58.png | Bin 0 -> 2993 bytes .../AppIcon.appiconset/Simple@80x80.png | Bin 0 -> 4568 bytes .../AppIcon.appiconset/Simple@87x87.png | Bin 0 -> 5071 bytes .../AppIcon.appiconset/T-Ipad_1024.png | Bin 43316 -> 0 bytes .../AppIcon.appiconset/Watch100@2x.png | Bin 0 -> 6551 bytes .../AppIcon.appiconset/Watch172@2x.png | Bin 0 -> 10640 bytes .../AppIcon.appiconset/Watch196@2x.png | Bin 0 -> 12834 bytes .../AppIcon.appiconset/Watch216@2x.png | Bin 0 -> 5473 bytes .../AppIcon.appiconset/Watch48@2x.png | Bin 0 -> 3238 bytes .../AppIcon.appiconset/Watch55@2x.png | Bin 0 -> 3752 bytes .../AppIcon.appiconset/Watch88@2x.png | Bin 0 -> 5674 bytes .../DeviceAccess/Sources/DeviceAccess.swift | 2 +- submodules/Display/Display/ListView.swift | 15 ++- .../Display/Display/ViewController.swift | 30 +++--- .../RMIntro_Xcode.xcodeproj/project.pbxproj | 8 +- .../ios/Resources/telegram_plane1@2x.png | Bin 0 -> 1248 bytes .../ios/Resources/telegram_plane@2x.png | Bin 3991 -> 0 bytes .../ios/Resources/telegram_sphere@2x.png | Bin 6082 -> 8335 bytes .../Sources/CallKitIntegration.swift | 16 +++ .../Sources/PresentationCallManager.swift | 5 - .../TelegramCore/SearchStickers.swift | 25 ++++- .../TelegramUI/ChatListController.swift | 15 --- .../ChatMediaInputStickerPackItem.swift | 2 +- ...ListContextResultsChatInputPanelItem.swift | 63 +++++++++-- ...rizontalStickersChatContextPanelNode.swift | 3 - .../InviteContactsControllerNode.swift | 61 +++++------ .../TelegramUI/ItemListStickerPackItem.swift | 98 +++++++++++++----- .../MediaInputPaneTrendingItem.swift | 2 +- .../StickerPaneSearchGlobaltem.swift | 54 ++++------ 44 files changed, 257 insertions(+), 172 deletions(-) delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/CompanionIcon@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/CompanionIcon@3x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Home100@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Home88@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Icon@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/NotificationIcon38@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/NotificationIcon42@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/ShortLook38@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/ShortLook42@2x.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/ShortLook44@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Simple-iTunesArtwork.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Simple@58x58.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Simple@80x80.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Simple@87x87.png delete mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/T-Ipad_1024.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch100@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch172@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch196@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch216@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch48@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch55@2x.png create mode 100644 Watch/App/Assets.xcassets/AppIcon.appiconset/Watch88@2x.png create mode 100644 submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane1@2x.png delete mode 100644 submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane@2x.png diff --git a/Telegram-iOS.xcodeproj/project.pbxproj b/Telegram-iOS.xcodeproj/project.pbxproj index 15b3dff1e7..94321e98e9 100644 --- a/Telegram-iOS.xcodeproj/project.pbxproj +++ b/Telegram-iOS.xcodeproj/project.pbxproj @@ -198,6 +198,7 @@ 09EBE2AF22B004EA00F670AB /* BlackIconIpad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE2A322B004E900F670AB /* BlackIconIpad@2x.png */; }; 09EBE2B022B004EA00F670AB /* BlueFilledIconLargeIpad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE2A422B004E900F670AB /* BlueFilledIconLargeIpad@2x.png */; }; 09EC0DE322C6339700E7185B /* IntentMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC0DE222C6339700E7185B /* IntentMessages.swift */; }; + 09EC5CDA22CBBF9600292E42 /* telegram_plane1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EC5CD922CBBF9600292E42 /* telegram_plane1@2x.png */; }; 09FDAEE62140477F00BF856F /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09FDAEE52140477F00BF856F /* MtProtoKitDynamic.framework */; }; D000CACF21FB6E380011B15D /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D000CAC821FB6E370011B15D /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; D001D5AA1F878DA300DF975A /* PhoneCountries.txt in Resources */ = {isa = PBXBuildFile; fileRef = D001D5A91F878DA300DF975A /* PhoneCountries.txt */; }; @@ -316,7 +317,6 @@ D08DB0BC213F4D1D00F2ADBF /* start_arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2311E49DEDE00988324 /* start_arrow@2x.png */; }; D08DB0BD213F4D1D00F2ADBF /* start_arrow_ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2321E49DEDE00988324 /* start_arrow_ipad.png */; }; D08DB0BE213F4D1D00F2ADBF /* start_arrow_ipad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2331E49DEDE00988324 /* start_arrow_ipad@2x.png */; }; - D08DB0BF213F4D1D00F2ADBF /* telegram_plane1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2341E49DEDE00988324 /* telegram_plane1@2x.png */; }; D08DB0C0213F4D1D00F2ADBF /* telegram_sphere@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2351E49DEDE00988324 /* telegram_sphere@2x.png */; }; D096C2BE1CC3C021006D814E /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D096C2BD1CC3C021006D814E /* Display.framework */; }; D096C2BF1CC3C021006D814E /* Display.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D096C2BD1CC3C021006D814E /* Display.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -841,6 +841,7 @@ 09EBE2A322B004E900F670AB /* BlackIconIpad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackIconIpad@2x.png"; sourceTree = ""; }; 09EBE2A422B004E900F670AB /* BlueFilledIconLargeIpad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueFilledIconLargeIpad@2x.png"; sourceTree = ""; }; 09EC0DE222C6339700E7185B /* IntentMessages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentMessages.swift; sourceTree = ""; }; + 09EC5CD922CBBF9600292E42 /* telegram_plane1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane1@2x.png"; sourceTree = ""; }; 09FDAEE52140477F00BF856F /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MtProtoKitDynamic.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D000CAC021FB6E160011B15D /* NotificationService-HockeyApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "NotificationService-HockeyApp.entitlements"; sourceTree = ""; }; D000CAC121FB6E160011B15D /* NotificationService-Fork.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "NotificationService-Fork.entitlements"; sourceTree = ""; }; @@ -960,7 +961,6 @@ D050F2311E49DEDE00988324 /* start_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow@2x.png"; sourceTree = ""; }; D050F2321E49DEDE00988324 /* start_arrow_ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = start_arrow_ipad.png; sourceTree = ""; }; D050F2331E49DEDE00988324 /* start_arrow_ipad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow_ipad@2x.png"; sourceTree = ""; }; - D050F2341E49DEDE00988324 /* telegram_plane1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane1@2x.png"; sourceTree = ""; }; D050F2351E49DEDE00988324 /* telegram_sphere@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_sphere@2x.png"; sourceTree = ""; }; D051DB0C215E5E2300F30F92 /* NotificationContent.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationContent.entitlements; sourceTree = ""; }; D052974422B0073E004ABAF6 /* WhiteFilledIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "WhiteFilledIcon@3x.png"; sourceTree = ""; }; @@ -2173,6 +2173,7 @@ D050F21B1E49DEDE00988324 /* intro */ = { isa = PBXGroup; children = ( + 09EC5CD922CBBF9600292E42 /* telegram_plane1@2x.png */, D050F21C1E49DEDE00988324 /* fast_arrow@2x.png */, D050F21D1E49DEDE00988324 /* fast_arrow_shadow@2x.png */, D050F21E1E49DEDE00988324 /* fast_body@2x.png */, @@ -2197,7 +2198,6 @@ D050F2311E49DEDE00988324 /* start_arrow@2x.png */, D050F2321E49DEDE00988324 /* start_arrow_ipad.png */, D050F2331E49DEDE00988324 /* start_arrow_ipad@2x.png */, - D050F2341E49DEDE00988324 /* telegram_plane1@2x.png */, D050F2351E49DEDE00988324 /* telegram_sphere@2x.png */, ); name = intro; @@ -2750,6 +2750,7 @@ D0CE6F66213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */, D08DB0B8213F4D1D00F2ADBF /* powerful_mask@2x.png in Resources */, D08DB0B4213F4D1D00F2ADBF /* knot_down@2x.png in Resources */, + 09EC5CDA22CBBF9600292E42 /* telegram_plane1@2x.png in Resources */, D08DB0BC213F4D1D00F2ADBF /* start_arrow@2x.png in Resources */, D08DB0B6213F4D1D00F2ADBF /* powerful_infinity@2x.png in Resources */, 09EBE2AA22B004EA00F670AB /* BlueIconLargeIpad@2x.png in Resources */, @@ -2834,7 +2835,6 @@ D021D4D9219CAEDD0064BEBA /* Config-Fork.xcconfig in Resources */, D08DB0AD213F4D1D00F2ADBF /* ic_cam@2x.png in Resources */, 090E777622A6945900CD99F5 /* BlackClassicIcon@3x.png in Resources */, - D08DB0BF213F4D1D00F2ADBF /* telegram_plane1@2x.png in Resources */, D0E8B8B02044496C00605593 /* voip_ringback.caf in Resources */, 09E9600822C23FF200B13673 /* BlackNotificationIcon.png in Resources */, 09EBE2A922B004EA00F670AB /* BlackFilledIconLargeIpad@2x.png in Resources */, diff --git a/Telegram-iOS/Resources/intro/telegram_plane1@2x.png b/Telegram-iOS/Resources/intro/telegram_plane1@2x.png index f56072cb178d67150b91e92d302ac907cf3e61da..7a5a342bc9ce71c8c9e86846c23560e5cbcc7d16 100644 GIT binary patch literal 1248 zcmeAS@N?(olHy`uVBq!ia0vp^OMrL^2Q!e=5-hq0q>=-CLR^9Le;R{XuDlC?)+m$& z`2{lwa7ZX<7+5%X1Vkic6jU^HOqj7?#fBXRPF%S0Bu+OQuhso>TdPEqPb%N<;5e zc2RXNiqG^#ZTWNV$qdn0)3*IRQlBTj*FCRgDEzVNiR$j1F~;jNKGvKpdl0HT&*!>s z{>Jls7bk7DTe2<+NT%$OJW(mXDW_t;oWH{ZC}B2bD?*A@2sfaB`!S|-0x+# zYfhTGaP!87+mbuEwyEFLyl%W{&J``Mqa1e&nvU#kE$F`Zu*a=k;^T3d`zxjee|fj` zsHNKqVRg%0)5We!EcDy-`qP^P4H@M{eZp6Pa=LCuY?q(92JojZ-igyzq@)@H=VmA>Z1s>9Y-D|!W`8~?7%(|j!OaE|QVwI9+v1-Bit{H5@T zb@}p^nUBO` zbFAm3e$#ZCGg0b$$E&|5x#*}BAXiQv-~A3YqZ$C0zP=j z{@5Y-=*i(61wXqpyhl#9M=G|wcu*Oxx_Hy4$7}Yy@CcVZv~q3Dac%v)mnoeKrn&8V zJazgUi`bS6VQs>^9QtpcbT6{mYxb`@>4ibIP5Zqc`dv($?){h2NSGlDG;L?A#ZLq6 z6T<&zAFnXm%V*zG`6D&YkiF`7w$T}9%a;AQ7cVBUR$f}%8ahGUHfoKbKKJSPD&ERN z(kzn`>n^p$&lK7`<*n}hUdd-((`T1Syt$xb^3OnDU%#HY?+wew@XFtRfn^ATr>mdK II;Vst0Ht(*2LJ#7 literal 3991 zcmV;I4`}d-P)IY~r8RCwC#ooSFsP zBxuAS3WP+ZMQrTG&iM&!Q zdhGu%l2;;fNnmXS#}bZujvkz4BI_zK4+j;j${e{$&Pood7AaBDmkp9QSiv zjuzL#wE$wL^dUvn=o1|GaoojmqD|KX%*zExky#-j`J!^eD=oTVF?9%#qH;P-x#3rB zbi<+&AVmu)#&MH!!}Sii;X+CZkfK7Z;`o|!!zCVk|53@ZMKGlsl^b5o5%uUkFc#S& z4jEpZtlSX&!(|%W&s(u5%?Oa;65Q_^j&E>$o{U))U9?M*n(*jE)i1nX^%HfJ02u?)`nhC{4Ei z)x_~-)hwUuAm27>s6BSg%JKs1V~MU z{@~rJSw1bq??Hg{SeK|w`Bu_&I&XHCXgZyt?92=`)Ws+oi3pGZ6UGYfP#~V6>rG<* zE;%+u$?-{s(U?+hs;{M!I+~sOmWMf^IV?cBr?skYh}o28oo_Ui&Qf1;jGZxi%*X3% z9Yti<{0|6__N$TRrt{9z{bu2V!()>)JUU79m)W4XZf&Y}^4rG+Nayq^1>v0>?S8mn zxZ+WE#ne1k%>7m|jA*JIuI}m)Ang@um2XiXUgnpZM$(dV#j)dEG2d@Iv7KRbzSb}y zK-!}fWDH*4%W;yQZhTtx6&G?vsJWq*7PmLMQTIB)u}^@kUKqgMpfcs_$!F7f>D1ZR3=;W-?TQ?(Ftu$Zr)a0fUHay z!2TxrqaLNGD-N+ECQG;?)W(@~SF7ub%mqjjYN5FS>@)rRAZA<xiLR%vzG4)>Fay;xnVg>f~DoMdsB7s?fU5P8^h7359 zZfW#9M++^G7_`RVHMS5rHAoMZcg10LMYF=}3kJS5Q0SWM%T=?CA)DHuJse!|D7#|X zq$^?y5HMm&Py^w>qz}RXB-R{mQc231ApVxY6$eMTuQ+br6(dX|7D-^SgeFRq`eYD* zJWD}{6Qi0bpqff?UomOk74tAIVHg|qfw5%&(a%64MZ8TVDHjB}6I_ieLMS^}(%Itl z0^867`Ei;nn(qqw&_Fe=m>W`v8Zg$ywEXe<9>_2i&0BIs1I8#V?P{UgMKwA;+AtNF zq45KdOUWpj$B@m*6cSbIin$+V4a3OJ7}FERygSbN2}rC9y<8!2!@W@Gyj`@AaSkya* zT&*CyTisYF1y>wkR~)h6iV(&ZF|-qnMEvsTiE;^z8$jldEkm<>6}fkaqn4UXrE@ED zG8SAh*TmGtax*ZIh_7B}!YnXO2zwjeNBSIF=BZ}TR~(t3k%?)`*J{LGJMPp>yPnY4 z4P->Q;AZ8DQXXNWD?%>TOnc^#b|f{OG`G*;YC+I`SA?*rcCou@~$|Y&ds*i;ffH-4N!LAW0^{5ssR#j<#q+)T0zfQSA^P|>#4KF_d~St zO0r-x%J1xj*_1Xx&v{pbJSH*x%s<1>PsyRHafkDb=Wx}dzKQI*gv_>#&cH7E!81;<5#oBOT^ zVfQiYLKYy!i@{i`$%ZR_m*Yny82D{5F7 z=t=)E59B6+(HmFH!>D0ppeGr2KB)o0GN!nYE6ylaoSb&#`WjaTx{}ZoOKMgKdhWVn z4#sFCx0X@U%0N5&j}^T@@cFLbcdRR7F~pIh5J-twD#e;^sOJg`WD)}YfUznd^D{Mg zL*L_gkV3X{XM8HfeZ`5~$)`@rN0otgX^f0@4<%ph{G?|7)FD=PV_hSPumZid5w6%j zGEQTYDaXH;&ng4$(hiPG%l@K9k8iRIb%^5!WYk8V&G8T|aN1H3T(P$==?aWUT$XjV zh7CrjyP7XDvtk_6iWex?#3u2}{rZNoxp75zToLkNWuTqHQpMj@>X4O|FhrFNZ&Yyl zX481L`ign^v@+06Vbj>RoCdN`NQBmtu}|a8q-m|S+pY+?c$%ut2@PgwvTg!-Ojn7F z(+%L9s5sQ(@FBNd5%PIupj~>IW1Xqd2Zwg9z)12_DllwxgM#x0@?aPVu83(r0O_WD zUK!|lLSv^x7X2A1$K0qK)bW+4UbrIU(E*ma3P<$)z8Z&gbF--q)z`dD^*wE!t^j}l z(QQ|RJUqZsSDnuBj_yDfYO%`FH>#}N(jXlY79=ics@)bqY;P7A3siQ=nT|jfYPo_F z55RmDg*7(3uIKOQZ+#8Fn#bL$Im$~dFy@P~ zVl{%9IAl@%lZ=HNjtZ55%fnTSWrv11J_r?%+>gXMyBD4O9=T#H{m%>xq&xc2Asy{U z*5+Vr5g0w{KMIfq$`xaEg|Zk+fV9|bqo4A&o!7*W4u*Doa%P~eN`w+fyIm54-Alt; z8EBXKIra*WHt6u+IL*uoQ98JzpMk`#2qRW6f|FU_`EZDy?b%0TQ)$7fdhHA~klc?1 zJB9*-mAO7sjDxXIsyH+V@dXkaMZI4n2_RGP~uXe&?094^j7fM{?)Xh{Pey z3^yFDKB+O+Pkist5IwhRKTS?&1V3@elKn_n+&`Rh$U^mxOw!iGUOGBFAqdXt2pMI} z0;CCHB$CL@LZcibLAfY^O5T-7PsW%~0;8-u_W> zNCDCskajh<=!fq3-$8nP&ru55$Pgwb4hxVAH``dSTTy|L9S&KjH+u(Y`|blYoes^E z<4z|o8l?656}ewhp(VZ;~wOthaLruE{ z$kIZ2tmy@fPB>&obKPqj)~-6AjM{M=(RVM$lmHn*Ah{n22)0&|jMxn0s|@1>^FI72 z$0Z#50|sL+S(vg7i$g+x_rf7No9q6=Fn+Gcr!h2gE*ZOSh&zT1NX%=SBF!#`1dP|N zU3FoZe}-k~8#sPK78ex|J<0yU4dQ-CzD zzm+9pX4dlhMg`-=Reb4_97ufL^zl263y|hjcKFAtJ9f6z@2C>Syl|)x5}-f%@cr&r zT@V4%WV5}yTvnU1Fb2smzI^RDD=)R-Rxw0{6DGdH;ir|q-A-OSs5>kDwbUmwRXQZY z_!7go&c^#hzu{+OoCDb>Kn54cr%F0x6+kkKFEEUkIds37-S$ZYg4pb zu+kx)u9o`k4C56J-}6BZ0RKw?GI;$+tRUZF2apWo^VgiS@=BL(9kWfFIqo4nryTci z3<{7o_an__*$m@z4C7TE-21Od&nd^a)88P-Kw@4yRjorZjL$NR>plMAujP1Fqj$Pf zfULgRPO4;K0f)?*f$SvU!vdtWW*aZ?H-#T7R@}ufZqXRVyxt{a z%JI)ZY_7xLkkErSIs13_}gNGcnSV&XlA2b=hh_5CAL7Y&b3 zuUS+RePvNiU@m3kd-FgrKGFW<;15=%LFJ*hhtp|`MJD5Vh5@WDu+i)#p z@+TLLR7jI8s#I8%fyEh5*l?}Koq|yuGJL{`qFB!MQ;y~;zP?Xo?+2Z_L2<}%X;$?s zS93f@l`YV~5YI*@VU(mMyuvvaq0}j43=^$af1grL xm{7^kYi`|$42+Ak(s4k}$_Z5>jr4y31^`I)N7LHmaytM3002ovPDHLkV1lOio9h4o diff --git a/Telegram-iOS/Resources/intro/telegram_sphere@2x.png b/Telegram-iOS/Resources/intro/telegram_sphere@2x.png index 15cc5f5277aa40b2f6cb072cae40cc46d53cabb3..85e805a00fea8bf2f39254676d6787b630a41ec3 100644 GIT binary patch literal 8335 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 diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Contents.json b/Watch/App/Assets.xcassets/AppIcon.appiconset/Contents.json index 9409bb80cc..b46b3e5abb 100644 --- a/Watch/App/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Watch/App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -3,7 +3,7 @@ { "size" : "24x24", "idiom" : "watch", - "filename" : "NotificationIcon38@2x.png", + "filename" : "Watch48@2x.png", "scale" : "2x", "role" : "notificationCenter", "subtype" : "38mm" @@ -11,7 +11,7 @@ { "size" : "27.5x27.5", "idiom" : "watch", - "filename" : "NotificationIcon42@2x.png", + "filename" : "Watch55@2x.png", "scale" : "2x", "role" : "notificationCenter", "subtype" : "42mm" @@ -19,21 +19,21 @@ { "size" : "29x29", "idiom" : "watch", - "filename" : "CompanionIcon@2x.png", + "filename" : "Simple@58x58.png", "role" : "companionSettings", "scale" : "2x" }, { "size" : "29x29", "idiom" : "watch", - "filename" : "CompanionIcon@3x.png", + "filename" : "Simple@87x87.png", "role" : "companionSettings", "scale" : "3x" }, { "size" : "40x40", "idiom" : "watch", - "filename" : "Icon@2x.png", + "filename" : "Simple@80x80.png", "scale" : "2x", "role" : "appLauncher", "subtype" : "38mm" @@ -41,7 +41,7 @@ { "size" : "44x44", "idiom" : "watch", - "filename" : "Home88@2x.png", + "filename" : "Watch88@2x.png", "scale" : "2x", "role" : "appLauncher", "subtype" : "40mm" @@ -49,7 +49,7 @@ { "size" : "50x50", "idiom" : "watch", - "filename" : "Home100@2x.png", + "filename" : "Watch100@2x.png", "scale" : "2x", "role" : "appLauncher", "subtype" : "44mm" @@ -57,7 +57,7 @@ { "size" : "86x86", "idiom" : "watch", - "filename" : "ShortLook38@2x.png", + "filename" : "Watch172@2x.png", "scale" : "2x", "role" : "quickLook", "subtype" : "38mm" @@ -65,7 +65,7 @@ { "size" : "98x98", "idiom" : "watch", - "filename" : "ShortLook42@2x.png", + "filename" : "Watch196@2x.png", "scale" : "2x", "role" : "quickLook", "subtype" : "42mm" @@ -73,7 +73,7 @@ { "size" : "108x108", "idiom" : "watch", - "filename" : "ShortLook44@2x.png", + "filename" : "Watch216@2x.png", "scale" : "2x", "role" : "quickLook", "subtype" : "44mm" @@ -81,7 +81,7 @@ { "size" : "1024x1024", "idiom" : "watch-marketing", - "filename" : "T-Ipad_1024.png", + "filename" : "Simple-iTunesArtwork.png", "scale" : "1x" } ], diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Home100@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/Home100@2x.png deleted file mode 100644 index 9a05846398cc6cd103ed1261268c866ac7f65439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5084 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 X@>ymYOd;NX00000NkvXXu0mjfnpmpg diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Icon@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/Icon@2x.png deleted file mode 100644 index 9c3c5f0da32e81ec69f2539e7e0f0a74c9853923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4464 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 A3jhEB diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/ShortLook42@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/ShortLook42@2x.png deleted file mode 100644 index a9077f67e387b03a8aefd9ff8a93ec9e7542a39d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7932 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ε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 z%0Aw8EN)91NFt4?(N)Je{bAbxe#WCrJj7WJbbE#N_8QCRoGR{{9u%}bmXy49%tY(6 zYF_V{+3nd&XE~Qm!OLaz8Y7o7)k;*}aXC(#FqZ z_V#YGDoB3`D!KhaGEPbYVOw1Hsp7wX5MlZH#Lg;_7k>D8LeNHJ7NY4;3=nT+#3tR5 z_apsUgS;mvUYe=D!6t;l9efa0f6373h;0DW-T6Ojb?`M%3=&lVafG+KV^0*UB`or) zhuAKr(rq0}-iEcj7G<9iNG_kheoF6D@^Kf+XY{MH@!Fbq!JRX4sQ^9KaC*H|_@s6i z9b8J#4 z4fBtRQg}3bo%W~Yf^}$vaxBA?tZ=oK;3pFUl^vl2om##cVB(|fIS?G#Hf(3}M3^5T za=C>RJK$W~BO2tr`DbEvc~CQKT}`cjY>l(VML+=? zQk7~Wc^*0S&rM$upXp*iMk?~ni)O^1P)+t$v4|$N<-2dw&l!0HYCe?XM7Z})voPQ~ zOJX2O{{H&nvMn>O26_Eyp1a6`k^nll7!Q2ak8tZZD-=@D`A(Lh;^72FGmx@9{-gRiUb*3z9{u}{% zs8+}D+3rnBdUK%tgYCWlYMb?Cpt$%mXwjeM15KOtCr|x(TfbVo z=!l6i0cye%S z@C4rXAF$RH?wQU+rOIkHZOIO-!AVFKqgOYXWtwqCu`Rk&#}0k2huq>qE;cuGXq8xa zik!*clDNmo%1yT6A|~Nf*!Uz6Bk(7b{@o8MfS^$;NKBkmJBCPlH--i*7htLdJ;Q*1 zD&^{>=0^p0oiim4)#{vn$ou5GSBrU=(mqKU3m7uMXShgJDN=&B0Eu1}DjQCFX#PzG zsTu77c+)O8EWm7tug}zUJxtNIEhBms@r|U^l-aoC)iMV}N`B?X7p<=%dUH>%uxBl@ z4m{KT?K^Pk!#|R}ubUqy*HKH9YwSRU+M&>zp9ga}AAgJA&A}RaU2plJIA%pOul3H) zIACuxP-h$zJ+f?RP;fg@JF}%4qZRtDl#)V_{ZolXQfvt~5lwpBRQiYSTgkym3JQKXipZ7gH$BVnHRn&!Jl(H09tR)$0d#$kmybB!`C=hiVu#ec z&a+}c94RjU;fMyE;?~mx5A&tUKC>Z0t%oA z=nefb_Zt<^ecW1>hVmBSa=nf-yITun*J0aIf@=wCOoM=9PhIw~ZLvTRX#SEg9l7h- zIpK8dK{$D=FElaxSh(NQM$m*=K}lMYfKKimP`Xr7zBxP7_wz`Zb#Aky(o(S4r6t6%J*+t}EGwuXpGwYTt=U-6&@PMRcX z^{Mx|=HGu6%~H=%7C@}Qb~NDymN~Z38WMZZ&98jWaPV*-ckD>VYK-e=m?7mhoLvzN z%ef2E|F=b@XN-SrV;+V%+NTZD(;E8wnKn|590q@S_O?Z&_`>5}jb3Kjw-nu!0o9UU z1)A3YA(NJtfbd;zVn^F76XSnevlw#-aZ(hIGxBqYDK}uViSA9H8QjnR{*4B-)T~_HHi$J7W^}0zm;Oqy@CUy0*}*a($|7!-I`qQF7vuQJ_r< zTsgo4Ed7aO+tvL{l25qj1S=yNQa)uRjRa$@1ATzQW@{h!QT`&b3Y zI6UAWGDG+RD)kIRw8!-=2LVfu&$M4T-w%Qd(Bh-UZ%58S?MqMHb>TlUapl!23E2Q}7Db+ECW-J%JPJc)M8n34D5 z?UFqn^4?77RsxLLz#L>@)6@k?TrQAI*SLj>M^S)Oqrs!xr+op_0;QgOG#xB+O%%gv zu4)I;2AR0K@ zr$>$KxnQMw$Xq;g7;5L&?Dj5SB)RkHar@5&TJPo&AX2$-!P0TCqO0)UL^v(!TijAX z9i|NbMjq>G=)=^~W98HoAyO>Aq}~H&JX-K8#Ih+BP?%)%d!C?V34NgNAi)0V5;IfG z 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

O_A zMbTEQU4+x%3xM3n>SWBY%*p z5$f2mGZR~3J(w)RU;SkL33uh7vVs2mqlEfZRGJo?h8EXDrs38I22;?xo+le?`qViH zjRW&Cx{zb_H%}cjKhN%?ValhtO#eI#y+rr!)tJUTE;VP!QKHw7?*l*HF%WkhBTJ%$ zy*J|`n7GGa68uD?z+(D!35{pTwp>G2^=qiZq2~?EkMen05X1gi{C?N@MiQCxI)Z~= zs9AjD?{dXx$1SAH^|)l|@%+orx5j>4i2p_5iElbRhb}kR9~r0Iv6Wh`LSPkR182X^ z{8`S?@GPYtF#|_#5<@vOJwYrI;q~DDP~%L6{zRJiHgc#1l~uxhd*HSuKcws%EGREs zUU&tgwp2T{M<`o7Dj69n2l9EDyOUil(U`K|bp|U)9W|-5juP9)nyXLYo->wnJ(Np} zp4K)sBF&?S9iNoM=!LcZgW0^*KLIZr~<~vY5nTgPs&rT&groZb<|iCyhzRR z5iYON4LOoRtxzdqG9Y2=m-lGJl~h+@J1tK3^2eLd;t5 z8Q%e++Nko19-7#vsO5-_gsWWDUwocS_cXsYy>jN9RezAO1%dp0H}yBlwC^jUI;vu- zcZ_@_)_+madkRySv0tjIF$%c=9q2|w z;1pR)u4F&UNZ-!~>*26~Uy#R;MZ%Tp38zw)h32!4=56`G&)cp?rqSZ_!(NfN{GavD zd$ub(ygG0r=12(Ws-Ya$z@J~JcY^LpVA;Dbg$m26Ay;APC$F8GcpmIHP$8%@K0NYn zh+T^+pdl{7FypQbf(QTNFh+z9;l5){na6OQULD9{$Z%et;5zX^h}Fod_3S%Cy)FS4 z1Kv_IXL=1Hp`o-Mg85!^Uc=Hi8 zzVQ`R$D{7z(%J3pM8lAwyV%IWiV;p7j?tf7a_Kh-mqfd|JwNX%t(jUSut~b*qLfqFW)RUR=I- z8*-dMCq7fIJ!*{|x1HWzdj>&i30Co}pBD9&a@ z$4*jx4OYxujER5R*XAg$lwT~@&pS9gIK!s%B_Dw_7uE>O`_d!!l5PYBH)TACH!~3F zJefaegk4CVC@wep%OOiLuecLPkI|eke}d4eO96QlimIGEtg!>to836-r_%aD&KYC?-GlO$Ou$}$*3DwSoD zokE2{mh1{M%9?GmuNkss3&R*@yPq?k@AEv@?|H7@bv^$)*X8nu+qv&^pZlEie!pL@ z*ZY0Gz@xcd;<@nc<8$yU>$jpXt)Eo<8M?V}I^!-R!Gx8*Tq=czer&)H+m{sjSI&#^ zJWpEpPE*Ej7v~R#1jiETd#8m}j>I`6pFF9;Z$zaMM>AUkO~(=wQ<^Yr``|9`BFciH z7BwlMfRu$_dQ&kasYr4iV*E|C&vtzx4&aSPK=yu~>Cf58<0$sk(B3iHw{(Wm9wvji zcBF`$n0g&Ur}i4`KvCM5-dv1<` zNj6M1&Xda?oV^S3E;7Xm1$}fM4et)(>kElgdrhX%e4AH+Q#l6?+K~EZ0@el-ovHLW z#JaxT-WK?k0aO(nA^Y$Uw!d+fAWaqT92YWN{dyi+tBYX=-YEN#-m1yi1##8O#%@_a6 zd!t4gYHc&O0HRhG6x1!S)k9LIKIi;7LlAmn$lq{@H~K8*uD*S=mXYw=(DO$Eqnr*r zP~BqK6K{C3@4+VCZUhRj!~zShbgV65umTZMq~90E$l`04!Z%AAa*CFxZKs2YcR7-! z5K>nA9eNl^KoIe37A)uvXL(3jJUt!qxr03K%^7=a5NyMP@&7*l5Al8T!o6TwP@+`V zmuki##Ps~4teZ>Zq$5@NDJhhjpagR=y#CQJOCg2b!_vf2s9K2`HksT=MQz*4vf^&2 z_284a1BHqU5xBSW3B*Cj3oQ#yn~AhoPPY*Zet^R6K%u7Lh_a$;zlDJp%6Ncd`2TZa zz&~zkf)Fmm1Kt|t{_SDM#E-D(qpFtt&ujWLU%8>8YmD}c$QvOFM3?SN*e;1O2L_CP zxfk`{Qe9gTrAeB(ezn24N1SbR3#+)k9lDW2Ep$fy zX#chXf)4X8jk$`=A)yKbvRA;&pbtE5U?5erDl^K@zD+OT7>>0%a$L}kQl}}Cx($g* zB~9m|U_3I-7fpZj=yyp?Ae3&;W&MMQ~^^866%5zOD!EkgXd zIrKSr#KGzo?G##<@%TY6$a_)`9<+~4Pj8jBSA!g&3Ft+bNu+XS{bup#X1Gvw@Ot?` zCOW`jlx3^)imrc0eRtIvi09C6KF9A?@B`Y{uBOHL7+81ev?W7Vbu-tpOi`wR#n4N( zI6dgI9Ch|SJ4_ZW$!ylO&D7xY;`!N>!~6yx^*<#QDvt@zcyubH@;Z}YxHZ&zW@IIW zvnpY<^l@%pD6)}xt4Rc_7F>S@$dX{3akifq;xUin>!s?SoK2myb#J4ACFU#UmpR{gXCu>xWtCH6(2=R$E zg--%Yc|;G0UaN9ZH$c|bm#DTnT`B$g_@6&YI?Y$k=P#c>S2bnj$O?I0v1<*j(O*F( z8a!jClAc3wP0rGf=bIG+_Nin3lSbIEh)>)}t+lOlCaUEZ^6fmMQJq(Ebl`QxK;j@I zb<>FqqR%G+^xDk2R~qUaN_U|)-J&hU&qt35wB>Gg4;Y}5pj;&jY2b=JaEue@Sv>nv zSV$?dkMF~;x)k2wT(w?CNZq)8*vW5?t)=@pcLv3Bp{J3ZnzZM!lgFY~n_1!Pkq-i7 zVW{~zX10+8>!57mQz6dq9)LFG$*;T&TEoMvr-|Wl#Xr(^)^Xg6rN#aRnm7VmmOcpO z&v3%&?w<~RyqSga;yLATtdNZ0^FI!~qMspjewEOx_L_~VQ5Dfq*JyMq{>;xil~B{j zm!oP|@k3*2ssPq&>Uw(mHnQclu-44J-0xl!N7OM(xJb%R3zj3NkK-EjLzs!W$G@9{ z-uN!6^I758isA4+mzVd>z&k=koL*o|rkbZM87SgZ-g@?CCy7^TIkZkgp9jHXwdV5I zXa6crL~{e7F}ELX`nJ6MlVOg;sdhj-RNR_01@ub$^N_HDHY+ldW4##VhIL~jKKmiR za$2_Db^52`>(aIw&3A75e7nK#^5E~l14wQ7jsD;-${33C~olTEq9i?Z2RlK7kr+(w;B+CXXQDM zqCOos)%L1(uXJ~<0A2cZ1iNS`?(VJnerm;i2p?E((zEMD5sz8D%Z6ddbhc#QIO}q= zf9v#c>3Ls0C(Sc0A01y;dW)Xw?a;BCy#Ir5S7F@e;#bn<|PN?8vO$ z8?HxsHfvQ5fXgF0d07G(1xNq*zLc!8v2`^+J&1_cX*u2B#0h7XKiRQzI3Y8I5TrC~ zcMY|OJN=;;vOTlwuERzbmGmAOW}p$nV#1NV7Y?QIJUDz-xe^txf{&S5(NsQM-pHSP z%FOffCFk$aN$(Z5k2{rI{8kS)nN!HT)*x+sZF*??h~SO1X&d7$3s0HhGG9kl!(m`{ zki(V5DYadNJ4KnAD&L`7M?qQ4uk~{<(tO_C58ng;{!?KvzCHx-e*DNSp2wmVX<=Qu zcxu*Y)gaWs!87%`fxV;{e?8A6Z3^*R{HzhhAEI&b-BWhny)T!VpZD!idXlNdpF?%O zAbEIl^~LVX=0&4+hNAYz75cvR4lMIC4P1S+mp(FP@Wvx&gNZfK)|d^y9C#BtsR8UK z;gCXqmzWgYMBVpPnu<1OqU&3F)%4dgKjh2zU}Exx>fhEqVmi;kUpF~8Q1Bio+?XW22SffK$Ur?eDz-6MRXY>`G@Pbf!%#|17zlQ5oF&&sO6 zmIua@bQqGT3&jRK{lS;8&!@USdivwtj3zQ9w)@1lZ_RtSGg))T_Pq%vUPf})x00t+ z-13MNvy1UEdF!|%2Hzmf)HEEn zZ8$jy!3HZ8C+t*vz6+FeLaU4RTwlvM=H}3ihDIZk6H4>(pQV@Cq zmH8kdo7}L}JG}WB_xq0YKjV8jBzPG0Oc6;>clP_{YQ}F<@R>)%L$&2}W3**gVNwkY zA!ZZ}=3D2JUY5_)c4L!vL;V%(@BLZ}UNSr?JnV>*v%EZS1>r|5rkh)ONeJ@bRFgoA|FG6HMw+{11VNNu&l{5EQ1gNY??((?%!i)y z7H5zK84fVTK@KHzf3+MzdDIDA=}E7 z8LR2#Paz$in1ki4K1;b@gm)CUF*Y2r%CD~L5WPjX@|67vp6n+|sfR=*nk4OZ#~!w+ zmua-ZT((G@(;O)y=u1HWFM7ZJ3tk(!?};E-9U2$wh+R=quy`p(KS-HYxI_z6B5o;GQeY|oslXzqM>OUlS&~)NaQ7z8sDHOl7UkQu5DVDblZx4vR6_hj!uk&k1BDw@1M1C3qUYEyjru zS|67!-hcM)hkTe%i{K@HKJ!S{|vRG$l+f{=Y9rQdXQogbEwBo!jHweXs&RAJ={2 zzVvI|B97T#xusgvUwKom`QW5xW{9$yftc4Z^;}LhKv{0c+9Dum%Czv(fb2_{$UOO$ z9asPoyeu|KkG~~X4z(Y)&+&Exu3oHakHpk2XN%Z*lG_1{MPD&(l|&&A?`uA|hW>MB z?8Of6bNI|-eYk1sg_EXraClaTQzrL`0 zD|b3h;f8E0{L|Y2lZhAO26J(l57Kqol-d}tdCC6-yJ}6FybnJghq|dndwth#TuZO) zhnh0kyR}5`Ufr3PbepSM7JuH0O()&}ez6)S2{*{MB&|`Yy$D6DeT2|etMVe}EI?qm z$g^!xh-WuBspV1a+Sz`R6?8|U8qHQ-BR*<^Y9cz9|91Uh8;opkkN|#az#e!jioZ%R z{cPgd3Ww}}KE3tMJVEASR3H8K{*X(4W;y%0Usul!<9LuE%^~)l#V#5S{5CUCMd#O0 zW@Vv0dBNt*7pAiohVb~f>DzP19iSKe@%l1sH5q|&B%K)Od z4omyCm?9VZd+{*SIS904+ zzaO*T5Ex4086gc{ zuWxc(dJs5eJ%)Ay))lq}+d#3tEW>?o1SNZCPC#X{O{vq(q}r_(CaDd_lvDz7rSE>e zN<=pDzF4!yXi)=4aRY#|zm%BJrcj7OyW2GI355^e@+6p5yiET^@(brVHlz8u(A!Ue zoH}3gi`*rdic90f3`jrmwiLr`Q~vmK^bOo+h@z)1TdsGSJat8UZD-V~^!^41fBsva zQ!d@#vxW@Z35=+-NEq%lrG3+{P1G0&E?yc7sLC}49{PM{m;cQA&|`|449^|11w#Lx z-QmWTw&5t{BY!b*12tE30v&I6TS1PHTZIu*x#F&jN6(_t2BPg3RI^F78mMh7FP!Ab zc=lSEv^YKn=sxURC;^GA3Z=f#cluwo0Q};s+e(riP8>2SraGyWoL5m$-}*pq6X!Rx z|8PHi`|Vr(``d~`%5qpAkUZ@HhYf!gZ>@fgJliB5xO=5v1KyTGPJ$X)M;Fu8nsur- z>=)y+OlmEKj9HI_NUW>gl=a!DUcTD04cbIqbZEPYOzg0o-{bWbB ztw@m-R5cUH+~=`3P%~D(F`ils9ld$+rD*PilT(#qeXVt7<1Vm|Hm=NPqJkQ~t=B20 z*;Q}-z9RLGQFT*NC|H zNjJ7Z{?z3CS53?jag#;q>GxSpXNvk@(P3x7>_tkaCO^RcylT?Hd1cZzW_Efp{Y4iN zfJh#22-iUi?}=HP^h0Zr4ERIeJ>lW-z4l7q>u4D)MPk5yO6}hbxkyAZGYwf4w^*==n(8CBvrQK$MLE672z7#hMbVL`{GUA(sa-VxHM)`mOmb86{Vsp32A zhP$Mhe{6ftscT0(3%{(KDpGDo8*aTJlw|242l9E_oYP#Uqs|t7mMRhN1@p8?o8huo zvu`6J!|lLvCkKMCq$B%4G(qO{wM)6SO*SCN9KM=cU);1Qtk=-6>*S*YYe?JK?AJv7 zK>3@Q4v_W;g#LOq_{a;da}N%Ej@?yvi$^6m(cFlIXTt`9tOT~KAk40N#FAfhM3rQ{ zE||SsFQ8G)RC21>1od!rYwqgS*n!@kF($Uc*FL$RC{xY^;nEHNo~YCCWq!GPQY^DE zhK?`)U)uZVV@2tcfLy7qna^7#5`Q#ozTEdPdJ7&ryOebw?Ep>d<10#SSQ^h+9Y_^SqKqdDlB$2dP^h2i(11Th6Mp8g&5Srqo%5WREr z_*VhRv8Vc~VWKX?+o{tX%x%@@a+VLS=LCDyxAhlVOU7}92-J&dXYt1+-xt!l7S`C4 zT&hAl3ygioF;T$iBqF#3RRtrwH3*|Nkhx%A`1QYFjK zCrq4)@Y}#0g81v?%=Ee7=b-ua(KK8%#m=!N8T=yM2$um*}wqy_E~SVyW>`JS3!ZgwYa2QcZzE~ zT~Hh|6?Js}XhGk=*8=098x>6edM@Y5o^&9YxShX2?8jByC~_0lrVY%y)k-1I=SBCW zBHAq9Hu-l7xU@qLc`XC8Z@=k(cw;Mty=Nid*Js@Lg&?<0CC_=N8Hq@}nvT_28mUj^ zj~CGc+fs!xA7D<8(r|IjjBuKAKkjyzn{T~NVPocf#JTGq{(+emnr0g1J+!H;2re$L z`1r8b)aDZ^v(3)2GbSHm>)Bpnzr!BB-M6}CpRf0-poZA5uj)JDbPxH@*TUhGKFT5Ho;y7%B_}KIpm*!c zkW}t|hNBT>p!21P`}M|*Yir<|?WTpz)p2H%!%M0I5Uh=|kNEqV3a012VkTecQfQql z;J*t5c0&rBdT%zP+oq@{sDt4M*#+4)*gC8`#bw1MsuXgc01PK}{4 zC^^O47-rN~Yz+WNxN_F5vUP+Vv6>2RU5Op{D;#2;-64ey!wctznANWY*B+0B{neB=NbB1!3pY*0pYV}Yg5Jx!n4!~j^iRkpLOm%FF zqiY{QCU;qE)WMxqD%u7$tU z$<^FU;3VkK0Evi&29XxM#_}FCJT0yS-lBj!pM}f&bQD>esft;OtuO@I&}a7ZnPw3s z@Yf2+%eO6Ql~cKiWk-v!c~N0(d2lWN#{lq>JR&f?>NjwvX#s%N8z$ILhTs-|vN}_O zRPorZiX`Lz+K~3{ziG&+rRyfA>0pk@4v{MR<6DG*J@9xAG( zZ_I|Oe|B2Wua`IuK3DoEZvYdTpu;d5vVp*3TP&Qf5EBTDAF&n#*V(F=`J)~` zK9b@J{(Y>9Pydt~=KpGFI`nUU|7*jfVAdz`zu)8wV4<6iQ#8lKlkJc)dnobm^4ou+ zV1lL}j~bnsvi_Uf8bVMAx!Q$4pAr-Z6r!6(v_Q;8#NMyp9@!CfD>}T9wKZsQ>e~88 z;xUR`Ym!i~Ion=tfZb^bUZL(pte>A&!e0*)+fCY!GcYyywl_FBjN%s-MFQA9bbU8^Y&=DM7c?pfWEx5JFDtz4?o63;z|j`{oOgkk-$tjX6O z?wh9h7`Vazd=R0%*$BLUONIXiv1M3-higiQb(I!HUX~4-O;`!Ol5~$OyN_1I^a~W! z+AvJXkv)3HQB&VJ&L&PJy1yxK4o%^aM@hTKL$1R%&piaO;eOOo`CyS7|FoJ$6K(jM zwZ=)wSDU?|NIR7 z6J(c>!KWjENvNNz3+tDCtxhm6f|Vx`bVlfp2Vo1TQOT2sqE;8)D)~0tP`kwiczq0f zb$0~BGE~(Di&b&5-{UK8vorb$Gw*Kxj1s^@un5i zM7hya&zgo{p+nW9?fMfU&%(P>CK74_FqFDJr8wtAXT3z(-JPCaGOIq6e#Ro-OJFiu zEw8TCDa1Spm&si%SS@djxcbM*Hlx)q%6Gcyy<6$u0`s^{j+b5L&mC!uANY7fMW%UA zx~a1V->2`E=`%{GR@3xy)eYoYWOHEu-bqxd-!Sh(-onfVE8tuGE&DeOAXp2x?+_O! zaz|}j5$7=}<{S`g_`rXZ)X0!rK)4&wbz0H0Y_c$1_vf#`uKut>aqcIEdDhwl?R};R za}>7lZM4?CHm#bfnOHLsR@!|@J*m{I!!m8!9!5a#)(horg4!%a!vAPDB7 z%OMA3MoMS4D>~^ZQL!N2JiLd?73RSAA|~vGu49I;Y`xy?rV$hs7i`=bSolG^ipKSt z7YsW3-m7(=Gl(Z_)`%+ID--iSh{);BA|6&3YMoG&6h(yEUr(=a(P26;3a}Mgi-=Y& zKnP-wBAv_?L3ByVsZIIimmuhtI+WH$8|?XMU(Y!p#IWLD`@OJ^>flE-luqTUETCst z=`GOq6@J|2+~d=T3o_iUSHSp!_%hbt2F3uipF5oW=EL8vjzBdf%vIX&t#1YYdn|o< zu6c@m_Uh|6`K;rx$H#n~Hr*QsrX%cd-`Y|h?WXE~DLz{6YcBb9o^j3QO{)|+pqE_X z{;gbXWDr17nhm@;Vyh|`0owQS=>pNzNAH9?kpuH7-z$jfUC{?xn_1Gw8g8i($l>hz z8L;l(9rcxd6V(7)hD(=1wm?OT4y1%(KjOKJ@!#);eCI4|n7`)JTqm#K>KlIJ-ReT_FGo#gZrTdP0zhOGL*yc`| z#SE=kW>WLD4Zf9IRWRq@Kg65J@+tla}HM-S=DpvPlt8!khW~a(OleYtmuJrB>dT>K{ns8H_~- zV-(zO%xb^BMX}G2$}xE#>f!HEb@8ELiS+%2R9X!Ci29d)<_E@Lr3)JXe8jp?;WIAQ znJ=>LYHOe)ItP;EX5e{9W{wVx=F*O9N2vU^8-&gf(yvg~(wN=hu%K*ooYy`;{3wS5 zUrjEZ_HyBJK}1C1Ep^$H${f87(d(E#>rE@@E;~&9Z3L~zYC`Al=m?ZH`i#-jzs8Vt z`gik{IxRedD#IZeHOgWdt~A+}r^$(lF9cw#bj?kB6t2q!uHQB=J27r$5U=?KQ0luM zUQ^L|HEpAIJ#EkV+1Aog%f9zI)7QhPDrob*+!`(vizvL|bDVr|*mxRvY4g|8yz>k( z36(kX*T?4PlHy?ldFSJtMVCHORp{4!jw7`|`!?I_J}1z$$L+0nHvs#WKHo6MB+%z9 z329d-Z0&S2nE#=)ZGRLbfI!0a@JjJtI8WbfyfcdX>k9$gy){>C+Is8*&~bets3Et! z3c%m`f9jnedn0dzQ{ybbEo+Q!5U4ki&H1dVo8XCV4`BaITgRKhcAr3x)ywez?VAa77AyOeReVBuFt_~rM9oY@`CZ;mGdzn^rGhswMJG-s`@qJ zihjuBzv{;mYQU|h)AGbtatzOB1)IWJhn^=kmRGzFy0RbBE0Cu%4LZvmln`UtZY7#6 z<65UijY?s;=(Jl&%g2+~rj?4o$blE;*O`BPHJ8#I?p-nA?;9iXJ zZD7*v!Nj4)Ey{he6RK3>vb~O*G}lzG?$3cnrNZj2+%a|(yYS_FpXHh9h_Z?uW28fu zk}cfc+Ln=eJAAQ$5%UXlv*!Gu80u0fER%@Hy8jMbB4R0H9~g|F5twQ zi^JIX&toqC=P{2)GyBsewgwuB%XGc?F)yZLmg~Q+?Vjy2+L&Y5ncSW*Vh&juwT-Za zi$QxuG$~W`*3WP~_G^SA+`B*V2<^9jooSY<-l;l_n!i6ntTm$10<#@&5>2)?hQuu> z=@zBjOB5m+ZH{HzgGB_lAY!9ad+CJU{6`TR1C`4oZVN!0%P`B=)CBe>!Y*s9tw=9U zEFB@#05;{jBrWb z#3bl57w|<(BPb^bk?OEDf%t-8N6>YX zIyV%Z&gBD@KVPUS5Q6>ffgBzkT#JLhDLqtOLFpPKIAvW-AJJVcLU`IYZi?<0&#>B+ zzW;`FDHhiMj|$xGu8FDkcy>8KqbO+Z28q2?!I>P}Nw;T@_w^Uyf87+hgm>9n_#BXtG%dgc^(&Kgw|;p@Su2emL(a#UT&iOd4!s<-7g?O zAvCn)3}2<>wZ?-m?g)da+2#!7V1427u=*k#`bOpx+y4ofNR<`;=+Qx-# z#HFzD3`4nAdRA-v{5Elde1W!Au5c$LUeKpo)bswU^(R#dY2vhO!mS?T+RXF!|J~iT z!GO}7Ap4Y^TDePTS-Z-U`RJu>&y-&R1S2EFHVtt>I0g**(=#{6Li2Jz`<;c|QcTeh zE6C$y2>*bt1?cr~z7eZ3_0f1pqJt#RxJtMS>R680CscA!Sbx;_+8deE^1y*^Yb@>Y zZF_`&teIZ*GsIMGFI;feOQ^Kdd~Bi3#w_FG67t1djpNd^T*rE-p7ug@R{)MFCU&6z zj9wE`CPV~tt>!LASj;uGZs(85EX+IoLDIKf9C5egp|(v4c~{3)vVQwL8&=?~EHV?_ ziR5QZ8Yqwy;TyR7 zh7Ip4`LgK}waP%6hUzxC?r?(5Iaku@+yA2*9H{ z2ZEtA#eh`Q|A>nct?D*It`ui61ThM$%YRw%A?QGQ?VREmbnW~zlE@2gI&f+}|soF*hJe8^z+0tB&7?>O08HjHZ`xgm1JdseSE z*g!28ETgY8Gj!T~M7ZXc8=Ve6r&_l8w6`J)kXjZ?pv8b1Xo|dX5!31--HKEl08UCd zfcDD8TTAVlK~ru-p+xXFjwrVS9>V|gVLWnlHi91Wan5$k2YC>3^6nQq2!=q~NFN5# zIop4=^B3tA>9oE+E)0sdic!FGFT09>urDnyk{Z{e5tnXL2wV+UfMUABfJKisz$66b zodyx@$hBbCFVWUpxd4*P!vb&NydZZ&HxD8rw5zf zv*@`0@`-0sp|$Qrdz^uvC3$&IpGZw#SwHVGDhCPPQb>qT{Iaur!4J1IYVRyS(a<=> z915y8Iq|358+77;%EHt8-tA##VE0V-)vs2}diVN5bd6WzO&4@pz}9C-=7Be#7)WAQ z57M3h2tl)Bk<<0}nDNS12(23+U%OTL_YxXf>3V!VO>q1%;Fc1ic_3bWpsar|c9Ve^ z!EchZCvokh!=J4;puGRH+r9_Un7;zQ1kX|~K919r%iJX|p2xCEynb;@4Uti2%`Xzp~>1$m`$_MQ}pH zsXaXOY`m^_P`+>sjQfT4d62_(^jjU!0lEqJabx%COgE34ADC{Q!gB66A)-^`CXW@+ zZmq@9*)!#>z?<0*eESP^yzo0FHuaWkbxg?x3)sv-o#Xa5ag%h!>L#gU=L+x6{M2e!YoBOJ>1}>oS08H9k=*)SNH$NR=7*&5Gm!-)yv|JQhtY)|o$153 z+>mR>KLUr5uGB;^B71gfEoZ(}w74VWeraD|%eCme-c!x3wR-b{M%3w_^}awqwUl-K z{IkERGl&_AdqZ%~H+R<{{;m?^KTpJtQMumhf}!489Kpj-$bX(6>iXE+qY2IE&Jhrs z4_O*Kp`r)3tMKyb+Sc~~=JtQ|K zCcEEb7UEJJATOSAg+?k67Tm#DZJeDzE87D`zP#hG3_rl1PM&TWK}FwFGP!U>(W2UB z3h405w2bgY$XUVZb0+Wc|E|v!dqmS^nbsvSP#@56g+ zsRMkT9YTEn+JVXKk_H8Amg4g?gy-DZW{8PXADTi@I*DAvj_4!O6G2jg_+taGSqOX<);+Qc2WJ zR<$TebfvSphaSw?H@7@Jz}b{@+_4DEfUtZW4ip-}?_I!+eQWn@4;9+V-Q)^TNKSZS z3KOzTlf*$nl(GE1LOiL@-1{SpZv}7Ei<3PZVx&jEygIhGM77&Fy&Q@bP|aNlHc&d< zv?Vb3WJfC~(!Q*I=ueyuW$YR*=C*iqg~`9Pt>fLNcdN(bYCA-iVgpRf4KYQB7t@K` z@9B&g28C~`zNxP;sr(L+XSSd(tjQ1(ZaMbf+5-WXf={S$VKkNKx{HuY7$A7}abT;6 zeiA0(s_oPEt9FovE3|pSC-dI`T0?wfy+m0&8`RY?HBQ&k&E2<+Uy%3uI3b4RnFKve zDakOYXB;ITdA^(k2bf1skb)8Y2DOeqrfp!6DAP;P^QyHL*@`H36mn4mOq z3!|Q@Vk&uLdUM$o9IT@9(IPC}o>Kq}+47ey>N*yVC-7$58kq?4J+Et)(PO=> z>o<3=;*%nWt~EeUME=8yjg6^P)>O7e+cwtc|;ier;Hl$NSce&nYSO?oA7QS>{u3x76^qJwcCxTdsR_-Oq@~xt8X5^w~cX zTAtlEap8>F*|PO5PV;7)ycWz_nYJmq@UZaGVRL^jOGteFzb>B!}vr_>+J16rN0AyY=4{hE@*~m+AlMIe%lx`m(cCU-cU6D$+K?t^PIqxN6Z>; z`SdAU)n%c+`Sip}uSf02kHRLGf3}?3WoZ{HRFIVfJ=wi7s#x23nxt^Wd}$0$&bs2 z4!04*qKs3w>Mb*08|okJ8*gPC=SL)1-JDuA*`4{mish{M7}>SV3@cUmq`ibT4Z^vP zN*P9`uU#GPuxLlzNg7HTI=^(?BUd7?CO2}`0ctqRf<~JVfd|K9)@MKoaW<`f70J7g z9+j_uN0c|{nP9Q#jvft=N1&hBt4sB?+otf3VQg#{iP)ixToDX(Ck$%jP~&dMs&Vex)=2?)NK{m*A zY(`@yeKRmmBdQD+XnH7`5)dNa}e#d6IAK#mdYx2YY&oI_z!>qI^{jyY~iM7j$e9$ z{_#<@r4)-S#}E7cDLh&MM7vHm!sqW-zXs!OGijh(Axu1quQ){B(CyRvuN}`zUAiE~ zvP#iR8<<5w&9#=99Yz2<(~zWGWe(^--_@J13w3y^KiXv#Ffpeerz-Y9@&4;_$zJl> zo&eaNl?L(hK7(3A8$`aGKLyreo2F`#jrT~=p$_5z`hr!wA%{7^m5PeH!l@bM4aATp zu#Qfr>$g)ys)6!Da{LZ_+;Zi#Ejb~vgUr=?XH+=$-;)Z3`|s8qzP*WHEt_#96Vlla zgAb0sqfe2dq6oYX5C;6b@^#CQLc-MX(}6Ky##=$6pm0J12OYSCBh8flWclkw-bhi`sp$Itb(7|p1N#A2Ok$Se8 zAZNYDXKRllL?13JW;>rF$4G2nJh{!2jEXn7E0d4c`<*^ff}KR=<4UiT4>CM$Aygvi zbW~urNh&ve&|R`L}#l-$Bq(*M|5dp8w0DShp*&lb(?s7WpM1=qcyOg$fqqlPC zJ-d5Df0eI4^EoppP;Pi32t$zzXsIczEIoOlXiki&DCPheLWo#LDl&L{VqJC1jkj_Z zWdLeAfw=<&#VY<6S?Q|s?+(8fx-pjj)J^=j{fqL<{eH7W&c__x`u1{f_e}@TK!6TA zRt!xtaHk+D>~FlhhbUL~pni^EIP`fbP<2{R=*n!BPKuSFYtYbD|Ge1!tY-r`|ak5&!5TKm<1;#jPSmns7NM zMQQFKI}79Bpq`6uIQ%(R{x=cp`pDJxzHz-@eAm}?Gz~Lt?dgSPG9ijikUaJgSiMWI z;B)U@5_q3K-=n2{Fcf5Ak44D-=Rb*-ELbsGvza6X{Y{1jbY`FYwRbTVD%*Du8_fB2$_m5>%a*vXXLT=X_8e-va`N%;hX;>a`LyD~gO~W>0OdJgo2g=T zfU=CgR4iB6GC)fX!r)h>?dw9AWzD4hd|Ein8D#^(q~QUMSZuf7qoQ5 zrsE7do6GfAFQl6g){7`Y8)0!DkM}+v9whw1uS#m4Qn|}{X-L`Fd3F4dqc_+71-=U{ zyBHd?<+=&YH<3s|fBXY_&||T|6L5TXY3WwVm3y!C?-(gUFq1qZVu^4`^@%3nhM_@)1iL zGc&YaLD!8Vu2FFE*xx&tK94Wf05t0A1yEJ6bS|yA+1+j+X!@l-NQn7|i<1>`7!YID zUJ4JLdF-(pWMZlErF7J+K9h9r=PUVjB&_+j6J9-Le$q4FjrOpSF{Kn5bR@wL-9_#} zUYndv&#)zBkQqXSQwHJXw>-x&3gnH$=+omn$<$!Tz5TgiBy8|r8HUh(d$;NDaI+aD zGF6YL2GzCb3G85M1|Ak`jP6Zq7p#Xu!|w7fp1wPKj)NT!b?%nNO%|@B5sW`JsC;LT z4z(x(sxsi9L~`~0mm&k2_s#%lrJ3QpX~lX)gK6wpKrDtV=((&a&=ha4#R*0KbSP;X zhH#F4=zCu$v2I*YrQjQ;ARgX^@b;SfhTZx)bM4qonYifId63)&GAvRr9}oe8TU&0aB#joKg*0C03{BUZ`HMNvot?}G&J zBsV7K;n*b*9!`f(bCm}6@0O$FJyf~7Rk=Tb<;*kZRt@8SYPcnN-q6?*h#Lq1S!#{> zzWbZF?4IF>wUW0b`Qisw%%%tlmeG3yatybe;w{BpxcG8~KJ$4;C^!6U?G8R9l=kx9 zmKVf*j+64e=MOhl)jbM&5bJm|Z92{g+XCWLL^((s`Dyq+b6fm6H=)HIfb{w||C$>> zY)C080B!Kn?oBI>5KqL8Na0MWgBV6Bm_pu2KTw{wxNa~;M-RAtrgic&l$CLYSSrYe zNt=F^JiLEe9l2HP-7+Xl|EEgxRayDJtL^u%^7|-mr~p#;YmfEyKT zWC*#K!CEt7U+Rn)fS{j?CGivEb5aBD0*UVDXKH}}`T0%+4(Ml`;e8Qg+=<|+<`o)9 z%%L&zX{&xkXg?-^AUiW*oLFWLo%L6-Ck)x#!!zkCadbq0m&0?XmIUff2~W=cjmA~{ z<&P+)y*d}er@P{~Bj9z@`g^m5SXj?;8&`Ta5nxYcR4lVbbh~PbFAm-3Y7en3D>2X4RQq+Lijot)a?6PZquH9w_x-KR5Nai-zTxn@=> z_8A))A&JGQ5ViW!9)xF($>oNZQO53XL9k$I?mCSW>=!_Phc9&mLV1suAy|Pst~wE$ zuvJ*GZ(eQPQK`~+=Niu;iTMW~PWIFHmc;$ATZGQ9a0^I&*EP>9;HKPF$gLGNYL5DM z4U5-IgpVyYkFA)#6FD!kH#4=%d|t3I!sASctDMu$a-RE|=%z%R*l~lTulg}2XEd3i z)lz`}T}mrciThmHak=+O>T{1LgpN1PnDpmtX}P+?EQC?%3tOIoC56GnwjAy<&Z&$!9Zrt9T0zh*lSn!=>;W02?4w zl(dF^_dqANzl*Ir$8%2cGhw|ci03EiM_1$X)QcUCuao`ie-XM$-)--E_s>jb&z`;a%qqXNerq@kTltR1ZBKio zZo8K#?>dGxo*vv%^O<+wOz3w@eifhIv=I@lsJjV~_n3@9C%dkH2X+rBACr}eC6-*6 zveXhNbeRdED41F`z9eSj%W6}MmU{A~i2C*;Hw41(@y;0p2ijhOZO5;0@jXllYq5t~yJt5w)$ zrLMxLa3(m);e{C-b_BPONS5)0BJc8K7Ew(Z`8#v8-_5pT$@H53w_m10HC@eB}kK zV5e>6MH%C>c{$@8=BbNfOt~1fz7}Vdtj6|AdU0iIXIhnMorF| z{xj2XaK9Yom&=cjWM0jgo-bN1HCY268q;TNTr@1UNo8m<-d$pLX!LrBbWf@T9m!3p z4O1fw@ac=lz|b%h9*w~N&;Gy>>VOG9waf6;uX#ONX)P{7VN%o(?Ohv0O68f9T%n)2 zQv>kQWNC-CAMqPH#hbx{n4>d$_(?_x(SR^G48HoAMKh*lLb=JH(ijR3U@25TP zcwxo12rGWYwiz2Ob)Fhw{E`G}TiCI)&rfA_g&&~6HF{ww1!YfRqcf3iMJk*D33&zZ zo36T~CVipLNHTu12ZZ`QxBUpEfe9Hd3JOUHDT}UI?ceaZ8e!?#n{nF};2ZnGLea*} zhcTgNv;=$#1f(*JD?G|sM^C##j)6Jp;3;t#`dp7{=1rJzc%3L8tXL?O>p{4HA9J*d zHw6Q8_W_Y1s}w$EJ}dMeFF{L2Kr90UZezn0-KSO9yJd#Y55=FB(!VqjZ?+}bL|5A^ zSpT$FoJyZaPL4e=vrQP-j`Z(o(cLNKe#QOtAW<(v(+LJbe2KoQdR_1 zW7hdyC_Ae02Bry4T=FeB9T>UtMae9Oz=RmS3|l2ZE-76fGJhyF3zi_$t=Klq>W}f~ zSoeP;Ry@PRv74SI`y}oQRUL_x#pYDawzm=mBoBFAZ^~7-&^yVEqAIfBAz%7K6()^3 zYlQlSqT@PN-pWDvqnNGw-BlMHC{><@HWlVY=|53WB>hxqN$-TgRTZ*TFrs-u6M zYVzA*BQmwep$3HwA9Y)-61k0_B?;gc;Ui}V;M+eq^ zZBBoNaZ;I?2*dN52_gUR$Ca|K0TZe7-5rH-fa53hR)a^|Pzx{j?gqX^YDT5JdA4Du zY{RvR&3;=gGJU%p?1St zL;Np@>{HnO+kS1k!Gq%_`c5*iOG4VTNz)oJNTnYZh*JTu0?IYYT4899SuN1;qy+~Cn`wI@h7z)7 z)?hQn`9RY_kkBabffUt|0chRIhow=PE%EikGdUp6A$)2qTRki?%dW2GrdXM@j`P@A z_UrhYHSeM9S?DnAk~+T+KYJr<5sWoCPQCbLxwPs58;ff5e|yc85Pyb<1chgM{64wJ zkt1p#f&d;MkZrpGzyF#jKh-jk-gi?mz+LS;tmjM|+J;#DwTDwwMF;%BT2KR$@K>V@ z5E5^x1{`qfTD~F?T^Gmteh8kMd4V-wkVJutvOxK{BX7w;(&`Av4u6J(C`;O^bm_}bNn^*QwDUQBicF-;?&t&e zGhMd~>{PKYx^QdCT0&v$O=tN_m%t@g)!B9uwF zpmb@#jj8BYTBceS8&fPO%{aUQvoY>}EK5`-@)QHQTbR4Uh$7^P_FKf#?Hut8Ws~K@ zf;7G7EYd;`j$50+qO8F|daXB}rgvkfQl(#%5l^&UFA`5#sX+ZWI*WspBkEL+a<*rA zP85xKYem=J-;uOc5tO9`jP3*->n*Do`62)Mb{=mvLWLqeUc8!- z3|JEh-whlVnD8pl_1CQdi7W!NPJ=Rk-bQ?rG1&V$+J9VNF#D$tXZ#T4?ojgKjeC)9 zXLqGr)LfpP?rZOe*K(@*!ea4nq!mcYIrp@s?y7xpY0+(=t`~4xe>A|^G^prY9$6E+9P=X_u%R%&<5n&^>l1C9{ zgt2RDCuB0jV}4UsxI#$Q6?8!!?>4$XWZO(e8VW;ev#|!97(&0=V)E}H^M1G&(dXGE z(i~UP_p0^y8}j$0>a(VnfM|I~26LK4+MT(d#U+Kk3PHEJKupgP3>j9I!P8}{H=&<< zDFaj>7Np)FTfsDimAt|$6i!uIpkqP>c>46VF*Tw2FUy2g^X^mvQIMMmQ9l;gu7!I_ z^NPjPKXnwfpFAs0$W#E*G{T0d=WP@=@$!J_!y~AvhSdq4V>l#}FBP8kI6Ga+Te9bdEaKOb=6pzaG(QGJU_ih7y{B69 zF>#QI9;;CQ-b1kw=+cj(6B)ERt-iBSu-Sdw+asRr_!dGgBT9pd#QZe*t?q@F zEfL=Mz(X5G4vpJ}-(rPsARgNtakVdaSx^K#!#q2*8@RV=GT&XZF0m$tB)?Sh9P&dr z-VLMDF-O)CL*@R%!$5`ZxTscVp}4W_+hs+BkK50UjlH~7vtym83Fh>bgY*tk*vk*% zD~^kt>`F`ufjv{(OBuv|0Xlp61`m#n(4bMRWK6~{c+e%bf!Gql-@PH~X zp@rA~#id75kZYE^4Ahw&<@ttwG;+w^hT{F&JG)vE0N84CEwMK!A1J~*)~cd*bR5U& z--gbYPu{$)@cT=$(>raxM>LpV133jwQzF*5ikmdS4AVaklx!{*a1tzOXbQd)Ft?_q9jpXutk@0Kcig+=dALAo3w?ih z@7qNGAWHD89I{rO51vR>J>BVV7*NFWPycc0Zv}08W~sueh!c~O9Uz_JVh3i#mSI#t zlG`B!Rog7!`fOsK-R-OZkO)Z@lm*QleTs@F!+P~{;5LtL2KOD!yoKPBC%&ZZV}JwQ zrX>p=j$D|sPV>KlUPQ#^+TUs=2X&cen*Wat-iM{sabs4cvB4+#NJOA1=Pj*84R*@8 zK`pA@(;X0Ui1sVG(66wEt-Z7)#;IhhMX`#@INXLIl& zSpVY>VV8pGF_nI_uJcuG!!HpmZ{fW}bNDGDxFMRk{WkmT)0aDS5AJ!m*!-{8T+rbQ zf_tqm`X;TBac&AzC%`>s$ULr<`1SgV;AwU8e@Wy4tKOqd-ITf=+{fHx{3O3Iu}~Vi z@qDwB=6_=Q{2$n<+r%tmG3&352;TX6#}<+i41_w=L9Vj{V=ZbEURKQU?8!2?V7Hk= z)g?kIKTCfse}V;`!I=VPXTj##YcEK!_Rj3DNuJ05bdvr5rjvcoquQB0bvwf@?0Tjo zbmzh0QaLPGSz~ppCFD9-LH3Qdn6X}_xc`+8@?UV-5^wm ze?xq<|CIBenmHzRW4W!yUdrGp1!?ZH$P}=i>s7o(g5aj~#tFs?xvRe~%uU&FK=$m_ z!B@zXY|QViVb5Wc#61BoL#k2*AQcxRq28UEfdoWg4@*`RpSSyHU-?#WCIQKUFW+SzX0|++2{4THw2ySY2=S zGJ4qRgX%3cayLly1sS8LJb8Y$>WcZ~A!zF7*xwyxt00dS)`^$E%d+Y=ejPFvzI$DX~HcZ%zw3AI&@y~cCf_ufR`Ye zUDbDUvpmqJTb>{VfNc0UdZ(+YJu?~76OAet{?CjnX$*)Tn(yU`w)-UYO@hd&258jC zjg=)ZjvIHwrV9M&kHB1d?PBCRdFcO71Mv9oLHJ`CO+wE`3&3pE{IVU4$e;^I;Nt3PbH%tiK@cfd+4?z(ga1gjU6F)_HS9&uG* zNnp0Mc?WULL(}sgh&;xlac=*8H*!6FsC<^Mhe7*mzr4)S$2lQf*L^`XHa54q<9 z!y|Sv^eg)INRHhmCE*-M%BdbueK4T3Vs8)TES7$T4c+Hvxj`%*xms@W9{#7NK(|Ex z7jP8C1C$;LTfjQySts}o+n!gL^~-r)^L(jY2V=Z3k<9@~#`aFhWSzQ2cM6f^lmD*W z{nS&kVFX#HR4spe>Ln<-k2}eNfx+zBO)khgkzgtZq;mY}^aXrHmshUYE3!MY<3RiA zBu?|sn>^uv5NV4A%O`r~tPCpkb_E{Vp4HZI1k`vpK_hJn%+)P#UNbNV5{#}^FfHF4 zDNx-qwd5PXt#l6!9B8PUO=nPC)Ptip^=NjolYi&?T2X}^cdVWrPdq3T=4SM>yi8@T z2ex93PBTiW7#=^fdN6*LsXfR58J;^g;f}f|{2s!0FwdqzDs?}wd?xTDnnnOUPL|oS zS&JE#HLhRyNDtIsV}|cUFN7K_lifO6ILK$s90(UXwG51|evjR=bnh@YEiiml?bpLv zsId>Rt`IKqT9eKXvkyJk-+CxTJkxWDp%U<8s_l@gp6!^p@SN|>t?=KLj8DntUJuvPXJ^AeC?s zgoy2}(E!S`l|s0&heV47a>t4Vv>8n;$?o@M8}jjIi7kR?UFA@IwEb|+c^l77Kdy|X zR5v!kXFR$xoY9B0iZZ_EUAnc=tFl8W;|0xhqsU9eMFaiYpgdwtWv7V$!1=cxaRiVV z67)}ST|cV0PuK1mqLa{dvme7hb!GI&cc6<99(n(!_bsd?{?ckyGp`I$5m@#bA1uHu z@6GM5AaF-lNdPax|1g*d7g3kT$ZFH^HY?x$al`>AYqJ2aYW)h5asJ^9-xmzx?$+2` zqrd>18w6#vp9>$17|-!5M2VYDs^}mbZLSFX(TJD87O8dBmv{c~As5-RA?qV*dDxE{ zy5T1gQ6JBqV;}xS<4AZpbvCBV-N56Vc+WwmSH*$6atAA1|DOX6g)0`nwx3smR$Qjo zbw@uredWl?zQ>QBZ?j5`IKQ*tos(E9Zqeyd?sZ`+o@ysW#c04A1f!( zbraCewWcS*D<@p!WX3BBCULJx!W3K9b*4nB!vU7oJ^ENVGOlHJ?X)a1sl`w$Yh&Qz zW|v~qxX4&1b%~Je->wmFva!4eMi6PhJUk1duU~jU*A8zcV4hWAlWo2Hl+R+A%&;#_0j-64mEY+bS6W?#N_L z#k>GL-n&fD;4vr`ND=u}g7{C*HK>#&Pb8d=8a&RXkmj2f1uX~Me4Z7r@F70B8C=3h zUcW&sq5~p~5h~*Ooi1Ksk@^Q3ZW-Rz9MwsdEQqV1yTj)lY}r4Z72+Zd_k9zOt7vnQ zlR;9+VSNpijQ1d-D26`%0BlL>&`}>H;`sTI|6yvJ8?9i=u{2MI+IR%lT8!ErtuyZ+ zzxw_K*kYNcypX`Pq)em_0wq z|0IGhD5m0zSx0gZ;Vt&^+ZU2`pCHU-ul5w|jGi9ANG%zs;Ji$#TZ*5W4WO&0FeJufkq9(`Qw$E%A%epc-?x&Nu$W>IFms9+xr0#;8ZnBWkMR&oBU<#m^9S`amn(u1 z=2i^;QQvpC7y=UEWi~wTjE;EExEFht0!-M3@+))?E(<$OPqM){v6uB360S7@e@uW! zR~eYHk?Y3;aT8>>^Ysv+d?L&=A2pS9eP@d&mW9z~ZarXUj4dnD6xUSL-oQW+7_cv*a2P1eToTSHpht6X^^#a;RP#tE(hyiD#9A+w(<>9!YnG|Bi-+jjb+(V+4=sty z8O*rIQAsz!P+iPO_C}fh?iDeiJT1%d*PeI3yJz{{a*3sT=7WbLNbk5%XY`w`QE2V- z1{=GR+QpcwgGJHxUChl!@T-Gpdu8g3K7pI~+CLUYjHSiVkGYzn!4AhpLm(bd86PaB zsewtEN7!mS6Y0D3q&9Hwl)JvK{^P%B zzwORX6Ye_21u^iJIm}ca@vQR?ca;|hDf~nYI(vByJizxgJ>*lf;`BWj{fMOjkasPk zkhCqh;8W0)Oked`qF>?f`){JS9E$EdFgSO2!qO5WHFj}HjUzzmWiGEJir zH;6?oL;>j_PxSQmb`sk30Ea<#Dw2#N>p4m?)kiyVYgK@pi$JYvWy4|pSXjZGzj(s+ zZe8T2L9)S!K*j;@>Od9BP=7$6!O{9fePkz8@?*1BomSl$^n0&uI*RBhP*}%1ORsAv zepzcX)Kb(7+DUaqC1^-e^(@z=P};4!{}f3OYr01;S$;&vzw|!E9l`(oCfa9eesEgP zMV<=EK)YE(07i>z+2(sq)&#X*Q@?=eXRBDH*1^ zmu;m|n@N!Sz>zUYp;UC#frZfSwlm+!S!j=P*ZWkV(tEr?dFrn1_K|Usg)f3-#30gJ ziDxZaVR4a(0qUbEKMb`-17I6MpqxJI0+A83JH%9%FzjmxveX9+4>EmB1k`w9nP>-j z|EHaex*JxTPX-zWb}f;Tpmvk@UyJbhx%qTsjtX&)a!N>Xj}#;gjmp8+0kQwZ8(pke zmc!7r*1=^-FhubJF>*p0ceNj4$oDWTIR!M0!kf%+kk=T?aFO>{Y}B3E`~oY*lK=5R z=N)QKWr8Nue9($8sLdmP7;YL7)A!_2pbjeZ2ThzpYJ(W4xh3?u_5bne&2KZ{Laa#; zgB%>HuN;Z(H;6&xNpJ4#5I>z_8MEOVy7_x6&vJ_|{N1`kN)z&REc37PhER#*)kYY&brUJytmJD2DxU-t zZ$Pjzc*<)hoLfB9cqCA1mVD*H*s_;9CMcVA+5Lsy--^Tr8kevPr0z%+>t7d2XFTP~ zm>8aTpx6kV7pzyiG(lgfh;A-(MN0$Ouc^-vc`^}KRVn)o;e4RV8U9?sIT>27x@r+8 zJhUKaiT^=^J3pmizHY}0%#{cG#K^BKnxLWlGu(d9acL~(V$hE_E%_6xo>$Td1tCGq z^&@o+#RE(Vf1N4$19s)Ro-Ls=JOA8guLayy{}p#jSkKM3_*9t@Nz z)V}Dj`eXVVLT_5U>-t?bCD%+8YMnx(_%<-!ogh>t(#uib!X{;?tA3GS0rh%<(Odl_7U8n$X{Z$R5ouKaA`|3nwiB~@(lCfrfm0_OCw zraijubCE(Ww<#f|c2>2u4!_8!qhcSA6L+*$vNY5l_<*AN03>KHpmGQb+2HdV`Y0OH)1S-*+3pMF||Qp#%m%@shA-vww|X%&(@g8G}M^taM2R$c@=X zAKikjrT!{fJ_uHX+*Coz`|AX_b9{J7_4-3@;)Cd%ca`0vo5nz$aXCz++@fS%1VP_u zGkrGVv10l+wQ~2kVdLTn$Hx{X0po4i<2n*A=>2yI5hvQT>;f-j-o%d=nZ2izM5U|l${-|q(*PF9`-eU09HR1aOs za#cg(&9F4hVGVT_N=#d@{=_3Jz84v1VM6>iiX}%5DE7}IMf!(Th5}dxiTR5?tr}6z zYQ8_cJFJah+?~U4%Q(EnqVIokvT@Qim{SImAbH(q3T>2&CB!`JIE! z7rqZ(sW8MRV_oMPEU@irzqoVCZRXYOmfYmgiUQ8+dTh9sj~l8Pt4tSspEM zjwpoMA&zq1zDu}tIjh?ue=v6y@7bHnxVjoVZ_akZc5}T0z zVA8{w@D@(x@n7Kny7@9IJ1Z@$ZTmRXFu<%*fH!c5wtc#eeC~t|M_PzEB6M}_Q?YU+J&f@?Y@OnJtm|r= zGgm1{TnF)5&WL(NcUs{m4YL+vT1=JERCIao4hs;#00ZFV-mZDQ<*myf`Tz)8AXq7$ zD`O(Q3e4**Gsl4w2eI+Z<%a&|JnqiVvR#8W(}m(sjej-|w+HG3)HwaNwo+rqxEVD#${O^~ZsP;~NL|3~GJ`r?LT_E=18;xxj55O>PXk(pQf@r!KU z5RHxX9b{tO^Z}3H{K=JUlHt*XBFh<`P0(NXWs;W!CV(309(wMykjqvaASGEqU~%4> z4fXR*s*&#?dl#7;!tQw>9T9Y=a`G{Ce*2igsXxlv*Syc8C}l9sHVnN%4qdyhlW?rC z7+Kj4-EiHj6?#SPxz|A|Gm%^0z*qBJas7b?HK8&tU6lmv%Vtl;;xNNcz(Qn!jb(GJ zW!~OLPY`U5R-@K+gRic7A(V{6MY){D3nW1uMm+Q@AXJ}5hT|~0Olx}~2$HbMftLy} zv!D@%t(`!HNJd*0QS+pPF}ylAt-kv>g{je%PV>I!pFBSW3Lo%_g}k6&c4-v*8+Vr2 z(5`v^UX1=VrPVF>cN(LZ?&^jaMLu^vGAEFl6J`R-ym+J(VfLF(|1$6MAcSMC5=XTgWlPnQk($cYl&(8Cm~VTIC++>cve>Z0cw# z$`j3~)}agY{_YB_`G9c33}Z+@sYE+_kDvRi`$>|M`i$N`mk>d>Pgh-v(W%pz9skn( z?S#y$vm~IgMu4N#snyQ$p--R~USSb%qx5L{L1gFAEs$FJ`?f9u4H)mjq}%>3`V=$$ zwnaBcqi>!vtq0VOf0$Dg**@kybz}@Fl+W8YEm8Yh@NH=jLM|33rk;|3)(@qwc!Ul8 zHE{?!S1Jxu3`(COvppMQG=1|NcbtwimG-CJDBxX53`;L^=FaI41J>+Yi4~xSjp3Cg zRHhd7O>8Nof#0v`qkZTtkGR~~ZjPw+m}NDYFu=-iVR1T@Dnmw>Tc&C}>&I)lUb+7W-yUV&dG^iKVOxn9& zdbTJU>fOkaqilb4`fyCAdI}bGDXa!~R`C=x%8tIE5pY1|u?eXDothiu8|y-Kf@bs< zAEOK*mFx5^rBdFJQbYaGA^V&xlAp_C7*P9T!xtac8AbAzSisvkOPXrvviSJAp&v5O zUukDz{gQ!Lqls5o(VkLUCNc}GhRR8V87YXAqT+MJv|Sy0;Tz)H2*O=J5b~aUm}l~~ z4LKn>r(F`Zl?&h~ImoawsUYKt?UvshdJ&GCZbzY09myJ7K;8-_v7jcCbP)&yae&^bBD*QmE zTUB#c;d`$6D^LBwc?vlbeQjfkhLu&slmbZ~FTcCU+lT}Y5v`rYj2gatHaO44bhea2 zx$KrbAMMr55z?H0+Q9PfsRQ$rb%M<41OT|j&rF7g&F(FE7~;tK^MM5NeXx!3xpn`A z?+tAZP1FjCMaSo)bc~V5_i!D>r#~HsXG ze@DnYkSCrGPVwKgJa6IKgC}JeibW?dbL=^GqW;)CBs$ROc4nXzNeKiwj`_g951y|p z*LDrMi>7IJ=sF*4pGN?26ti*sj~O(dzL4%lAjZ|#04#x+VH2#;|bWhlc1^2Ho0!487f%6YbK?IpQAHb zShv>~{w^yj$Py0~38&rvP;e_!uUN--#Ni{CV{+|2s+|oC=4R{*o6yURI>M)Hz3%(4 zwS~4cuvfJTMP9vFk%gUN-O5rU0W#UIDZywuGm%Wdvq*hC7hL2O1Y_NP(aLB@&BskU z?yA0qaaT2`&*XarBG~b$Xf)$k%sbiAQ}809p`eo;V0`a-<4q55p@I(5RLX3XXfL8K zEzzvl2XK6V5}03qSZH;IWZ4B*xcQ^SHj74>#uAkhi--jIWmN4C7Xv{F+X53`qi+zQ z)O`gsEviIYbsna15zikf5(=4^hM1v9{xW!O`6yuY?qZP{H`mbj?nWeO#8NzlZIb|Q zu-i#2@1BZJ?0JUUo46ZpCriH3fLa9B&gBp?^9w zjaX+93OG(}5b%tZ#`&x;#^n1SA&f^_iNW5KhLv6<@O_m66sYZCu`=AwB{k_2aG?D& ze-|)iTg>IrC<`csyY_Y%fCtRYEx+fD#*$9FnO@x=9}b9z?*~i4I|D0|@GVVpZ-VwZ zHj^$6Hn@bOm59b8&t=qa6dhc%K2(hTS|%!wTB7SAGkkK-^>dt)QXKqdK*gxJ^L8##H)+tzOI`=Zxce$z=m zb_bDZfzc*;2k)DeN8o{$6>E7O&$0M58h?ICCQg^pHW!#bvi-5r_ts?^yy^WsTWo!o zhB@Ca`vM4LdX&l@#bgB!-W+F}>6XvMY<&fl9Yyu*l8+Lfxa|6b?w!GjQ*=7t8l*jQEn_Ke#gbj2?P7X6Mofn`Cm$hq!|uIWk~o2UmP zW7_@xUtm+D**mWn-xv*l-eZWqe&fVz1N=2hxvPw1#E`!IY!&7xcNjQLle#?lm;`5B zVHP05&R%(ZG&rV2wuj!{OEM$@$xNxsB%o4Sd7guzvs<2G*@If&V@wp^$1Hn3uOEVk zA~(z+b&ZX;-9l?Z|!WTYM|UfvvDP1peIX=aCQix`PBCYBGYl%xm(M`t%f8#Rth1^yFcTBFwgtj>e@Bmjr%j!6oQdKH+93)|Eg zbEJDpl3|ml%(l09w)kfo4c=(<5f&TyJ9hlIIx+eK2p8!q`U=HEU~v_{-shRZAKa^@ z%Z{dC!PrzDOs+9)P(&}BxI+;H8I~|{US#$vXj@g3{nkbViEAdXtlD#5XU^_*m!t0g zCP8dyK}V&B)l_rLzgaG74a_*ouO&|o$lwp|pzc4Q76hWd>#}$o0fG>U3~CNVZUb15 zrJbQ*9Aw2ELeN?mb*Bg_y3~B%$K!37SYJ88@!z~aK;`fvdz=ZOI)WdvX*2{cn>cmb zGAt=lK5oNjDDkskwCX}?#_TPh}7$?@)GGqx(=hlXu->#ohqRP@jG;bUWB%4 zQMFL^(hrQW1NVZ`4aQ=NP5_efA<8@gwo(Z^&)#l)?k*%NZTza*I&*z#`*Ni-wD}e7 zz_cHvMbSscu#pyUR%f*sgp0EpKe5+YNR4m(+WdZ)4P13>tl6q*U}GniymjEGOQ6iC zv*gC%;b%-hgfuL>VBdi2+AR#I38gz`DcLXK!Yr~zfXjAH6v~2 zWJwdwUjZI?mw%J(mIyW&Pt9%=56vaEtFbLVNT%dcTfAxj`pN^Jht*e@cR%EH?jdvs z@cKQmn^>}KXMyEyT#sPGGPC>(2m=V_4z->dtvQ8STQc}oze_GMa5m(`FY4!2>j}${ z1A35a{F^HOt-IjL0W;XW(8{?K=_j6ovX%ar;!+0cYg(Wi5!xxWW(K2`UMbptl3To^ z=(`){_Ew5Vz|=BV)Ts0wzeneiQaOa1$E(gq1dpDP@(+WMu`T)M!BTFa{dP*|jM^HlbUmzX5H8^^8o2zXf0)t^FEz!9KdE%dK3j_VIYVrnD6FPb~*@kmrsH z<$3o?_LWW*lQF+}m;Jvs$G^5Z)9kjVwymlKG${xdeiLwd-2N4~J?i>3V_^97rdUjO z{+g7%8C$KKWXv}%##1Ro=A+K^k5(T%JMw6y@!61&_pog?7mz6wm|QQ zru4r&2m?Dqi{*hT7iD74>euYO8aJ2)B#Tzq%7QKw~HEYiu72*G)mqEMUxJCEA2of)_ z%;DVm(3qg}I&qzoHvRK()NocAU_k41{7UHXa|;?gVN$j=c$O=9XPHZ&M^-$6S1k!s zfUig8AQA!Tn8{0>(s1BiRMSWB>K{c?FKb8d$X-Ni+-JMQ0L9+l6AH$0c-CX@2??MB z2wu=J>7WSp%QJ16-BLVBgHr;6*{SOOQX#6)se^&C*C+`?@pn<(&l~ghe`qn4fQ9$> z3mqZMMqEqEOKU4W)$XVeHT3hZBTBK63$2bJzTAmzGwRltMXAMP!+UvWH{|dAPU%P# ztCJDi5N|C%%6{IUvyP=nFlRx#1mbrHQDb$XmUuV|M{14MPVHD>L9!!tuifqW8NyGu z+-W4*P%Gg|8SwPV7F>q;7e0woN;`S(k z&$w7t@Rg13q%>gNXWc^V86?k3fU7NBgv-webe6(C)i~+byjHC7<>LXifCfq^0RQo; z28Qu`$M@ak*LZ`;e|Ea>U{Vj{i$Jb^{Wh?_zK|m-8~b#B7we}|OEvERwuZ3 z;*RVyKS>AkTa2)A7HJ+k^*89F&9fsPh}dHI6|vy_fAP2Tq)nLGPK~mO)I#52-)h#raMIAKhfFHEH}yLr*t0VxF1hO zuyPwefd*&^KEm%Bh${ae1~rR`g3omIG~6FO%gG~4B7o1Xrt>%FWkK-Yt{q1wvrlv| zc_u%IY-@l6596kK&puVU7M2w-c+(x4Zpzff;lVKEP6A{7QB(z@B=o~~8f6{+JML3P z4=154oRRHcpk{-aqt*!=#cg;Ia-}=`9Dl0*T-2Mez||hic=UbkG6CZ;x|!(Fb!Pny z4GvU1dO~5Z*12E!{_MES@#6#GU*B)NxFfLcUEY)0KhdF4OAHvz@pB)+WMc7j@W{tn zi?En~8++}`aJaCP+|3};|DG1ZnOp_*`N|C*wehN|t|2U&vn*`l5hI35f!+xVz2LB_3z*Qd5!g- z+gNE}ufQ!|(P);j#Jf3j_R$ba{#xDzxHX@)n*al2sP%phdm_Zv75-Ms7pRP(LnUrQ z1sccEJ6=eA#=lpY&%0vlG_)EqeP9%Pb`z|TaiC@J(NGJ-7rR%`-}b%m+xBhty_Rli zlj3ETEXfqhZY_G;xMn;os5zPmZk(+E?b&BRk2!t2}7=+g@x_7M#FCgHSto4-ccYBi1Ng6Z5sBN6GA&a(C2C5AJ{8YXvD-4~;{qB^*Nt~o?33*K%vT^> zCvo>ukyKwADFkOBC7ULtk%_OhQM2F4o|Kf@fQ0^;M9rXo)M;H z7OB{R6mIW^%V)l`mAoW#Atj!^WAH%k?uM|GF)$zO*qNnlF~uE;OYnV)1^98yM^4pL z1HU0mVMXiF@^(yUN8@;*iA4U$ZL@EFZ|75)fhyTRWsD}bNar4II+os9eaA;I0<4~4 z83L~HL>R_)V}O>a2(nI+oO9}WbZ&0?WyjtwyvmFI$}PUC243Rjjcn$YFKeIcazvhRv2gXzB+^0?fHu)^ot1@||s{1lHk^(|3o+7)1yIaDS71HK2Qq zMHr@Gl`N2Ac3>Js9`wn9T+$iny+6~-ShZHg@YYNk-3u#ye3>^+&YaBk7y00?fa6>d zd!dgB6H;!otRBo|q#%ZJ=%AANO5$VDLU}D6G>FEp;cq$*!5Mau_7K{S$6Hn>SpG@7 zLPdUsIZ=t5k7TrJl5~=B+FIxG% zy0$j_MBOXc{@w2tLCGk&>sR7Na^GJk2!mn-;S|J_Ni`SgQ{Sx15t^s3vQ4fjU#vIZ zx!aNiMhS7i!2E^zBr+i=+$)ckYL1GKyg|+;Lc8k(xgjYnj~(5E46;g?RR=Wog93fa zz2F!b8#&zx99x#zPl9{S58Q8+-VnMT6p(hEdUD*RPjvLoB!`)Pt;ex@ac;e-*}K5a_rx#28q`Rz&@27K zF^|9>PcsQWGA7&b%Nw;v_|!f)vsUX^rNVvh@r#s$5MrDdDqKcu$75+Kbs7onq95GH zl2K&6QEsfUKM4sDGL;CDL1r667c>kThc>PTo`Vw8-EV&4B8#8-h{iD!^o}=|yBh9x zF#@yW;w46Y6|Qo_Jb6duJmpspEP>Nagst#es>N1W$g(Zk4{z!I4FOAQtNBuS3#BO^6Ta=od~w(qUBhnu9xTu&*$#`nPUX{&#rU{}YGTv{tJcd*a{{3@RDZ z-75&;htHp{n;!NiWs5Zu*p2RafH11a{Ct#D{(EX~Yw^?}=x4rh zOCH*>!<;>+_!T*`QM`CFIA`q!H#)(ROH9pWlo{Nn{G>Y$WizfUzF(76z^%orm`%Bd zf+~yJQf@MpGHARA(YIfeyPMTcUb}%dZb|e^Y(G^NJqY)&9fX#{QgDm!IZ+9gq1R!) z?i)-?yIp~b0Z(4lF7AGP9t``}?|rYm<&JI`qbk=d>%5ImH$?6sx^iW;8_Wcal=jVs zpre>Fjq#$}42`H{FfzLqSu83mHbQiaYrlVBV>9jQlgMUhn&zbJ;^88-UAJ6l9e!uVX`u$VpTF!N@bDi@!=kxiz-|y3~ zvMNk(96;VQeGhM6`6SG4T^~SNiB$ox3Eq1*!P+QKY5r6a_f31CrtAsnx|KJD;n6p~ zM;+`2)$PY5Tz0wu9yxJnAXw@!V)6sx<(hxq;Q66xPql=yNx1s*J^x{co7KaIuFfzJ z^>u3u2O6vQc&&|ak{|Qux5|?{T@z%Fy3VTx7)hxSg6(0$Ge$$pZgBiVV}OeU8TE0g z!^Gy3X<=)rurXQu$R727Uf%UYa%eIN&MT_ac>e@N%C_b@S{Z!upBFe1Qv-k^2BI6Xs6s{I>O>Xem^{&d*Ky2_Siy7Z_`kPfYTx5q zlGtFq)ynN-Pur$st6dt^Vbc>uPqLqct%c$k=@W2h>n^m{hIzQu$3V=ReKOE&Ge{~1 zgq53*%GhbyZ`} z;1W;0ZHc$1wq%~|^LzrJrpb8Eg9VY2Xw}PlmHSr{5~)$;_^?A{IVbJ0tXuxUDRs-? zyk70auIv3uONY>Dh#A28aUd7?r_^EkF#xtIoZckxsa~wdetXQ?{nbcKKhgJ1@!AGz zOFN>7xTjxITK|GKvj3~&^&;JW)dB#F8Gmq5e*<{#uot1nVXPE3>*1Q9f3mv?<9$^< z!}B27HEJ;qd#qPda{oJP0U!h=6MfS>4-Oe*0>Cg*@R_`oC<=seu0^i;c(K89tnU}- zo?LdZ^>khn36wTufbDBH05k%ZesF@slHi0TFM^o?{Z(bm@=3^H*R51@FSP_>Dgk>9 zWkr&dMw;x1BK;|WOy2+_FwqNuTqQ5k;EMz!PZf3V!&BDJas#6lK*_-^zqS!hpze>( zG)O=SiSDe6iM6k$T*V)krdJaxm_LqfR5{BmdHn$4D{H~Btz<1!#5AiLx%%&K(*0rQ znqy)+^qu8{I_DZ!AhDKgVD$v&+2@0k9ek9M;lLa^{N?aEPhxbdfhi{cRlU(gVn6AM zz^W#XC;!qRc53RNe_=|AyNIV9BxX2FVw`t}fe8*+RLP@ebpKx;75e8=iA~b#xr*uP z!Ysj3@b1!!wA$Yp5X|kyJ2NjL7Gqk5u-LPdRc^F-=d3u|f>IYXtCrg#-G50jw(kU~ zdO&>%Df*%Q_}llD=KJ7SvB$eGad!Gws%u#a5prZUUa=1AtPzKa%v#I7Nd*LAsXfdP zzpx4iNn-hHSj*aB7Y@!hgbHP*W~fMf3ge<``i7fvccIm$mTuKmn$g*_0~=hI5;C^b z8C>^kz8fMAS6Y`OuZB6`=xl20p*;4DC?p9YxkELhbss%`0EdaFEc(dhW zVuChe3AeR(b)eoK4^#n^EfWK1V{sk^4MA-fjW6Jzv_ z^F#pAZM+O{v;K!Ad^FIBF{5q?o(KQ!b^yY+0N0c?T?bS+p`X@R-2Fq6JKaGMNxiB7 ztFG|{K-u>^^}lY+DhAb9*C2UtEGXjm4G&Q8t2?tbhXBp%Ho$76YPWYFTGh0diLzD>$ZCU zCYX+M8rzZ3npE(2n_2{52KWm_0&v;?@wa5t z+Qy?eH0^6`zLN2qxw1xUe&7gx9WlK5+|yfoue&@5{PTJ>Rxk6$R`B0x*lG#iZ|$F-@Q3mN8Ex&P9jcNO7bIlMe~5tpXCGfz@5&p0dM~3%#8y}UaFo@iv`2=}E*Yii z6Pw8_C8A=e$?caGr$0REed@IN$S~$gznQHTvziXqnfYOe7EJ7?#O5V_;E>QmZ1s$( z|GkIE*ldlOV?th@{@OLi+uuoP zIxg=hO=^)WyH-RNS|#AKUU(i}#{-7uWxM)E$?w$vR=Ba@G%w@9ezp z0`mjRpND_|SC!}m8-~9Gt}v`v;nuv6NKD=QG(h)a1*R3O1N{9#IqJ9})KVkJ!ysEW z&>$d6H@NabX)!(Zkq4-D|Xi?5yjuxw93P)HS0@Sb2U9sSo2V*A=6#SQY(@Z-WMrZq}D zqFgCS1BJEh8P0_2srDZt-iPf`DyLE=euaxH4S()Ny?E1;O=aS8!<6Af97}JUOKI2f z8Jlr#zrg|vG*7HenTlhbIA8*gq^pTzA#=s)J)0-Mo2=5t`laTt7YX!fhNPa? z#>VJ_Uol%Bq1h51=D!omsH0Z^*R@FoSc9*19;()3K?z~1?G?(@YwD`j$^g`2u?{rX zR)WX3dQ4ksxiT;vAMavs7~h^(ZRl9m@X!RTz%Qje@(oW{fL{3L{lNhjbu(= ziFY?nY(E4@h>R;&AN#u*JJtS=T)6+KDj$Qom+ZX!DLeu$9e!UPC+l|P8(SvQIB@R+ zhw4y=YsAvTR=hg){wyxt_j9yIKIeOB>tWSK%s{%uUjoFz zSOY-H<5yFm%UwGJt@_3-Xz_-?*!vQw>)Lg%)(k5MM*zBxAe_%1C_P%f#ozDjjm?3Z zXR{6kUyLb-{z11JLyVH)lnWn-00<`GeMO4&drxINH3WaR5l8vZ7l6QZ<&JM+Jll5Q z&JpukkQYoSMpzI~E?eHCjpvq2(R}}o$#4?`PlK<(9|3Ghj5>0i5%Bo|11?g}XuRYk z=(%^qXKz7RaT?o>6BCpP*m!Fj8ef}TR3A_Gs?I?EAz?K9|2b!1CWiW_F3i9o|G$St z%tQ&*OkyCq6{d$G3i;H#)Yuc6nIfWeeqg`(gI4nu_hMSlPa3)MEQ6D?XI_ojWs>a3 zKf7RA0I#P11N;I}l(0T~-gyVyGvJv~z@olS)5w+X?M&Bo5nTq+QZaA=yd!>LlC%Aj ziNRcp{|<$16Q?71sW?XLrcjMndP9o}Yvb>N4M;a5U<1n0_#t-SavQQ@pN3KJ`^qLf zZiV$4&D8_X2KM;mQ;w2Pqc$BqGrh04HzvEa)}6@qb>`aP59=s%j*%B%vY!Fwu@Wv) ze609If0l6H54&7|M8|dRZBZO{g+`;Ym}mMchpNQ_ki(=9a1F+g(|&PHYWgNJ|AR+~ z5Yw-9@VJDF7O3E2>MR#EGIipUGcv?ly`r1AGM5bhdMx^3(qD+Iyz-(M8xYcR5Log- zvp15gxrzHxGy0P@l}WIEL>HVCSxR|pJ!ur>C$OdUu)D7+cW_!j!cJ2T|H_SBjN)NKj%d`+IcR!0K1uaVFs+ z4!=x{elK98dHOH4NTS5!&plh8hR!O?VS87+;x}FaDVd3lfM|L!wXpKi>EXUX!6!*- zV%qSMiQ=!YSE^e}Ea6{!(h!#LwQXN*dgCo;tqwJi&sjgLZ8ykxK8f2RQnt&g=%91++2xu8e_?2lbHo)V#{6W?_< z1HK`wMBK@={I)eRsg=lnnXTA8Q-5{q0vBI8%hfMHV{6w_vETkCgbk^U^i!tal59Cq z_}aaah5efcKOR2YInM_qG90$!zAupuXEEik^xYM3@DaloV@pYjh;7%t(O9B$hpU=G zp<4=ZJot1>J%bWlJCjD>Oe_hPgx0u)(q>Zb+U>D6vrZW#%cazw7J@31OM889;5;0& z@7E7uv;#9fvBA55#dBx(7EHP62UhC6J z*AVxfu(wbPrL@-YaGB(zRXpro;VXxTkhRJPNY^C*$Yk+dCp^LAzVw1V)ciK{PAhFw%jgY{U}!q4#T<&&O~kbQ|EfltlBIPnotP5k|4L8y7pc1 znyJ6(_Mbh-y~Ey3X{kD1q|RM^CCew`{o-oBKLG6IVe9Ke z&5Gp?`BN4H<%Qmd9MlW=$;9i{8JPy(_O2mSK+5>=>OW8_;R*Y2d?CQPCGz+dGsk-9 zY7=GvvHH%mpWuf|# zh=l_gkTsGX?CAL3Wy8)us@BR+S*dfYLlM<5mrahedA96d%6Io|G5oNNc2NVuA z?2^KdWuIC#uKu1)ozeIIx~s3m!ROXjgLpne%$$2P!TW(j+-UbgoOr61gLtCVEw9PR zLg2hFCRPP^H8R9Jp+NX%kK+O9B|d|T>`ozbzcNv|Bg%EgQHS0M4Ntgo`7>PDp^?3$ zk>O)EQ@hI&E1`_=Z=}F4E$wS0uAtE@K{I-Vgnpp6_j|z}d@X3rlJHG#4ux=;Zrt5g z&qbOkTk%RG<0o_fzz3oU?zyp3!;VkO(T&@z=uCNsiS`-0$LHBh^_vH*8}lOltDrDp z?uB=TWjA@k?B{PCoicmrJOXlfAHy=G@H|M8 zMNXHU9_`nfk04aQh1pP8#FzC-Yq>HRDuKzi6Z-z|b&w3A%EEw57s1B={-idF4w`Oj zv#5S+)=2DVRK4tq zC0I~Ek&GnwislV7kwhgfzmup52+Hu@L3T^|@{|f%(;Kr->S7Up%EHq0r1l4F3<(n%Twg*d1@j`iyi6I{M`0D!{78B* z0hdT@Gu=0o2|0Egx*b-1lv2wCa*rKsI8fIPi?n1`ou=}BOj}2om6RQ52bkR%9(u!9 zjtyr`5u1y{P$2*SSD3@`cq8d!WnHP&OBgw2RY~*Jx>e;aDhRn&N)P8m9clHi%CE)rq$=iv!F!0{lov!k^c) z9jpsSA{T{w2N{&+VV$?YQ_|d_ET3(%#q^?+QsB66CO#9&S{W5qJ;h46jD|W{&4v+C zwgd?!%8`?Dt`;luaG4BGt0AWpiA`p2Ie&6K5OoSuXV~~@U#wFSwqL7YTc8Hhx=L<&V3ewBew*SzNq( zkTD0-M1{F(*$CUkV?o08|~`91dOnt8?D0Jv_4GI)-53HX>P$tWm1a zP2UntbqTRqW~#$pd>mJ|6`4NoVAMos)n6QV*}@N&ZJ)_+eDxWb=1Q_SmTR2ld!mf; z!J5t(vkUi*vRwFRl6!f^rjisSXaV>wglkr+Q1?g6;(PN_>&d>h8GS(6=V6jv*~HWO z{cpB*A^z|81D${xKfI5v;90@UfcPUKnSghg+zp-ok1zB#PyhH*&wTge_RFt;*P}s_ ztV8OR!yN`TOJG~MV$E9aNP}R>ZoGQ98!nan9ZwO;)ewwJ&HFvEMz4tg*y$O;Z?a*Q zx^!o2@u%h*QKW2e+V#KibY?#zvk=RUfExX2p9Yg6EtB)xKii=+7JQ#1_*lAUnCd^-dboGMPi`yO+<9 z7bXFBBXDEgl=ft-Ssqu_ zr%#YUx0z)k^TX0MprFBS=yE^F76-%t=Et9gmhAqx1nOw{yN;`>boZYb#-hrR)huE_ zPEX-Jc%oG6%Pk(FZ3O` zXT)LO`(X%&ys~SjQ5~w^*YW}GXbzBpal)$I_Da=a9&e?RzaH$T>&B(WJ&lA)+PGj% zkinP{;&u)1j8`lWWMH+LRa3PBRVBhl>pbRNxYG(k27X9W+?YL=|Ge9|Fl`OnFW>Ba zmZI6rW#G>H>#}rR8u5enI9qbx8{uyLr7)wYX%hbpTOv^L4+&!y7k=}{=6;C;#=p`u z`WcdZ3-y^ZV6a+pvQFdQ{Pc=LO?r<<9^_h-zBg$`{R?L!4=ifOQE>>{%p_Qq%Mx^g zKt3W|pr#{8J5w1ORCh}p73*$(tmqCxx~4D2|;whpP}eE0AWui|4TT-j&@0c!z{_?^ZzxPfi>gVWlnXF zrkE%GC7AIaTM#mJY5GXgy1DX&IQKlLk0L+RZz*wM3wLcAxpCBD7=ZL1Smq&DV;J=U zbyfB~XR-OoGdJr9MC0nrIGk=4ak_iPA)?d-6~SD5k0|xJV>}26X;VBQgXl-)SaB@- zU*L;5))rK5s{>#HGmzcY^qqnCSwDptcgpVZCVa!N@7;ZH0R+jp+e3#}E}MUYZ1BCx z1sE_VJ$q9&wUY(hdvD47nQ}vC;0Z}VqA^zQODsP$Z4y{`t?t#Qa)6liU6g)%0sluI z(vEz)tzWYXiN;P5rX-|_%OW6MBF>4*YX1*BY!PwC&t#`ioW+PC9-rCkIS=ZbvvXKK zTdym){E*d#!c+V_edFTrYkrgQJ2faKC9zVAt@lJdD~@}2B0iY*dlmw2>+=tMYg>2Y zciPR;35Puh*rXtX>2EF^X4 z7KG_xMG+#iq|cE#_T#}yaep5!aiudmn9z631k-`3J<;~k<+(EoI*$HQJ{+XgO(9@r zCr4;F-o^4?-?a)mC6Jbs@bH1-Nq4t&Q=@v%Eht7BAB@(Hig3p+@6jH8sr%U+$WwlX z4>oDT&p%NETm4hMb^p}U_5OOu@0mQWaATu|I#2!4^|B^FLQeny z&%AxwY~#oK0dr}SK11(%xHwzL=HiWh0q{6w4tI-2I=(E1wd+5szi}Lj?C-d^m<9!7 z0{vD<8tp^vu8O#QGO@W4fBl}S=dF~o+Kzn-a10#t%cxasNZZl>B=C)~P(8E@e%TCG zAueC_y1nPFh2ZA!W;DQGIYa1-74&I`D+iptyx8-Rl=^bdi3J5cw8UPs+Y+6-H%7-U!B!K) zX$66;E)m`9SPk*@iFKG(#Cq$$yG=!RHI&vop%Mz3Krydq*4h1hk5cgArpXIsNFv%E&mZ<5w4m*oXD<7mav_gR?zU1 z&$M3R;JL0>DjLG4R(TOImDXEx*Q>yJ%DTZ`#8e@UQ5l?-=ewqSEP?K!(tN4Xkj2x_^mWD zYe8sjh_0CA&2eGAJG*luYrI7|r6E`y9F050)h8$=qG_0GV6{ePQpn==<9B>9OP-9_ zjwBXtNu~HR(g7s!rQDKlwD`B~oUZ`b4F__l#5bJQL1VJig;CZ|>`*tZc70bYhGP2K zT}!jcBTG*m&U986e!b`-8&Ie@x36PsAhh57kkYm4KQ1~tk3GG%Z7h!!`yqIH3#SWc z0jX4SACdP1PI!jm*o>L1GQwg2 zqxFhr!%Hc`yKE|?bKudrgeNPSyJvl-af^vi6`5W=Kb~>oHBUUb!LdlPirSKP5Dv%J z0+o=x)#BW=dTGI!ly91avD8%bnaQ5WpE2pM=glkA(@}IPmqGHi9{qTutHP%)=!GmMC{dyu<6Ttu*M(NTSWvRih*t%J_h$EVIgSsV)+ z(+AprtmDL^cDJ~eAWVpy_)O}^O<|1_)YI}SO}A?zLrb8js{3yprKVt6o>o-Jz2mwR(@$Xhv@V5Sh{D_zTa{dNrkWKf{sbNMQqVu=I|?!CB1lLiCnH2DI;W zvbmr5iuwl9fu~6R8(C7<)ZcA8J^HX!>!)r~t~$0sT4Uj6kcP83A^b1$$C_LmiTu%c z33)Lj9hrgW3w?xGamR~CJTfV`c@pX31r##jbZ#z>!Nl2qkfw z>y}ZYO z_LfP#gw^?BVEZ+pL>N;PfNsMV0f;!4ctHQlt|TJOv~b`R-!WwbjCca;Wt`#Jp!<_u z7{v^wR;6~_=OHSkz|L2x6`q{K16sOVWY=~gjw>>v>BkgU5TSjI*Zjk;VwwO22U=A0 z^37p`Ic)cDF_!U?iXT=Rmb+Ba)dFxgQOk|}u#6`&Qr;>r10I#%lIfJqW;e>dKj&BV z>VSVOPw{hSb<_QrxX$MFJ#I5^SMu4cKaWlmI2)JX&EMIT%x4 z{h9U1ECUuL`-ysdNK{t7eGl)d;~I{_d)Aj~S-vo}Tc5rDAU@16>UrLC3XmMlAn?Om z8Y2Mr8)VyFe5JmYm{6dpSW3P|lhx~*d)#(hM>w^nEm!*maAxg~NO?&Q zcSm@B<@rP+37Bwh`~VP~NFL2+>CuT(zfO>^6a-5&DG4j{BODvlxYOA|j% zY6oBzJJnW>Ji1T4u9kTqJwdSnZ6=*)P47L<1juf6esJ~RcW2at%TGooWdfeCzP@6= zT6u}11Qd=BWc?!^gs6vLAa)3s4D(bGWZ6ZLhp5GSjvH5Ra?g&hr-@o`&wkloY?E z2^m3*{6wJtEbHd+?M=jw_0f3+xb4DWROBIz7qjNK?w^O#Nvxhd_Y?POzGig}$;sej zx6e<&cbqHANPbx#4pv0KLelAr`*0u|6ET2G+xv}oy&+d=p*OPODiGaBy!&OZ3zn0w zVGTyq*Vk(`!1$&-gDD@$t2$&6UDh>L()}mx{ff(X8<3t+pN%2Gmnw~Ri8mse26wwM zcxYYzqy5gGh`4&Ekx?MQlQj#ze#|2fTJ2fi@#|vAnPCY#2)X#Ge@`sqXY?B@bE^1f zboH+6qvYUPTi))lW@L$pEy}xEfE1YKaU9~a*-8L)?ywbb8aVhgOpD!c`75e$KmF;y z9_JAz1}2&rNW=hJh<2^W;&vMAEcW#P(WT3ismRICPJS0T3Lk>=_V^CS$}O=`6T#k+?_>{x%VPmV=BVCUbn-m-}$m`^85}K z31+$xFFr7Rae6!vDv?*yozW(XEz!0-ajZsB zwM;Z}GM0D0b$2ivx|km>-g$S#GYav)<&iug3HrZoI^%}7LBs6swqBZh{HFRnsIF7BI(FEf!*KP*`vnO)2~ z(WM+s5cF&t$tP4soH~HMG#2p4$L1V`jUPNPssAIk?+BW=TX3Flxd50U*dcZ-psiy$ zDRbiXB-4H3-F&}Ev9s@`63v86;;vIUll8(M62CJT@!WU`i1e-&q?=5SI_A5FQq z_9J&<2>hvz^Y!Vo8+s1@M%UiZ8T_+g!!i=+Kw%iimaK;4YWI8((c`#(I9au@Dk84! z_o0&FBk=Q2G6mtgRGHYG$w6$W1GVv~VGon0Cr+z|OM8$(XC* zp2c>T*0}$QKKUg{U!V455Er4a(c^Uy$~r>G+q$HvyzKM+z;CsO)88Js6EYzWBDIK~ zb!?7_{PJmPSQRL+_wf3xhCET>*TA%zaZGf@GvV)GHO=TQi6wAM47;sskyQK2r$a18 zQVfN?T%`}^G$UkPHyNL4NTE!#2Owja76i(pKQ#gs<#C#4Ia4&V%{j9VNfLUdGQ^Ax zj*Gml{p5iNAgkFJ+Dp&>B*b;_z|782C#)x3fcfOLO5So@@|KClRkQuy6sC!pGLdt3 z@K`0bXY_BF%f2meL{5Z&wkIO%K<5h+>P0WCh$3Tx4 z|8S1~H0={@kRLcl+c*7g$E|#R%-_aNunDmsT8&cXt0p%vJW{Tlfq&fX5I^~P#;F7( z9Ph{}o4_7-!}}v}Zlqs4#}cv=2TDJJUqy*%s&H@IAnt-b95?j$u#o6ZP4hzLj7|@a zh+;ocszw{;<4$P)-Bj~S(GR?V5o&{qfBS201yrn6_`9Iqp$M^lI6^tU9ZabI_81fd z-U|@+<2#bpp{o`K0>6>=XYC8Ev~V-~{fu9eA&g4%;pm#!PrgGG-K#-MnFVGkNoZH~ ziJyjj*PaL{SJA2^7di$iv0^Mh6vXXTo3H1_G!1O5IaByg*n>j}6Ct@QiMFmPp^_eaefbSK?AmeOS1slIK5m#?3K-(5 ze*3b&BpPXK=n3oGFtRNbamaXNc}6RzF_Cn#p(>tn2wY zs&fFEBhhz8e=z9(hH>BlRGNe!fxYoxdJ%%v`}gd&E?+2$L%25j+yZ1&=QZXP&dQOO zhsE=`OGE1eB5tD26eX@q%R0E|Hw9TWLf;!8ySaS<>!#R+gmKUIq(M2(qVy>gL50-9Q5KpvTg)KA9_kVei;Zv<^Df4f`u{E~nH zcLy6D$&r8vk9hts9YGxEM+tDw+@*A3s912iH4N@7@yURYz$}`m&?A2hGH4Koe(-m^ zqjueRu|YkmekKM67u_9JlL5@1Cr#LY^y+xEibMT^`TKs*$T&VkOa0H>e?RMXGLG7}m5P)Kzv?KoY$hZI6BN&IM6KTC_tw5$^ z=Y&Wz8psgHn`$bd!{lz5yFsrSKPid6sMHf&q1p@N1E>41`)f7a$n!9*zmdQ2hcg|B z4E&^~7A#IKzgo-{zG8QhU-_3>(}Df~IF-Gq=%0txLBFrj!M!&wMc;Iuv5|-o@XY8r zShIc~LbJLLu^FagJ)_=dFR+y;6NoQ``OvqUVDHE3GPsGJQ@v1{F5qR5vFI3k@33x|9T#1$!I6 z8XC)#D)cBX*}%yAh2mpN-8b`oUJiG=^qLq?@V}D+5}p0y1?O=RxpOC4Nutw`cto&o(Sq;DJSk_jA$6Ex5l=57hkyZ z0?ZZ%wIp+id0_hZhF=?_;ZVKH2o)LSrPA$coTcdSP!XFIHpI4#%9#-}R$>N>NAD6@ z93BB%|AD1b+L+{Zj_}h20CtNe_QUTA_|)W${l6EY$D9X;n36$zCXNHe9xysq&FalA zS=qi%(jN|iC%#nO={2wLOlv+(k~SD^3_$h29evbGJN`@hP2Xs)yXsSrlTcnjZr}Cy z9z5LEcPZJ+WBDhmDRly^F#ri;x^D z)C)deWpfGL2}Fn#zBtxyViHM9o$F+e`2$4$OD{Rn;&|vC$)7u9NIQBdgs=`tbi&a> z`Na306{sI*B5S2Tj~aA$FY|?x*cF~P!d3G9GGlQb+@9+{u!Amhxp$d4zKa!rTeu9*-|vHHt1{m*?M_RB=JH@;JC zoyu#ZGErCRl?_3JIL2!1(ix94Q?#Uf=TB*gRqU^(f3a3*Hxk`E(xeailG|sAsoQXW^0l#yMzlJtM}^F6PWx0a z7@8kv?=NdH{02Qdz8#lI;YR+9 zOwVZN8fUbkx*bx#ns8Y>Az#R#TpQ-*%4XFp z^j$Vm^Ku3fz?5R!2ubZ(RA(c^HpH0h?yl^Oo#1f?D^8c9=y@hSlz&bRiP~XLZdM<= zXM{vRShO4Gk&oCXG6ZoH7ZQ1(X6PqKK}wR4{k=PJZrN&Yd2vMmN)R{VkVoUuTty>D z5WUol=1DxKZ~CMIy;@Js45t!7A|HhNow)8EX;`=S=qG=d_sKgm^tbKxqTQW}K0qal z6^DT2Hojt;QsaEoRvi7;Z#3LL zSUZ4?fIc!Hh`$A|1POvJwrm=72Bx(3sw8VYvC&>-YQxQ>+7m>HB)V4FL)k88X|Al3 z(OZK=%{HVUhC&qXQLm6Nlf9f`lo$Yo+_B!nx$@-M|0f&{z1sxZFGCi0m}S~BKeY8c zO!K_YtT@ljJ?)TD&r2;6`-`Cd6Pxz7Bo&jX!R>v;zUD8~W=@elw5C|?8aqQO^gPip zv3@LQbkp{WkCf`7)1?fKn+9&bE4|4;R$IDw#VG~tz$B-8RtdY+dsC`cIe+x@Cp|g3 z)%(WV-m+PzN^QHjJ6tT6LY!O5rD1CZX(rjU8g4F_?V@O*DC*LnV3y+`z)jdy4TN5$ z*kxO($*fo1D7{h2Oy;qp!Z-8br`8$4H0Ve6KvVJ4Baaillfu7fyS%icXE|I7IqBd} zAltZHdb{RpiJ$w@tttN=U_AJE5*`dCjIMBCRZIJj4Id|e&bIYRAGz?qP zKiBLbq^!-ANyZc?Ye!yhpR|owf46r1swYyaJFlKLdzn-#e#(g4IDBqt zI6CfPv2cY=<#y@{yO5Jl4ty`EIWTXxlp8fEbGqMwK6y{Oi=u;cpxGig)+$f7zI1~+ z!5$eBQ>PjnNf6Y-%tq@rJK+%A34wpt<9)Fj%5@os~OR%NS*bU+r2kW3W z*0xyfYMVJiU*jUR6Skj6GVU^MnZ(>GaEFmF+)_x&nx5_HOtXbepyp5p?ay$(Z{;lU zmRcSB7Rp4ZsRsKb+tyDfK!a7U2es0Ft|li_ylK8&c0ox#vO(13pd>KAb$Mf7<5;0m z+JQ$u`R@8|wy=omaO`8l5XzMqCet5V*|@q<$C_E1-r`Kp7TJZ{!TeGBc%D+I^kXPn zd{f|DLm7q6*N)nu(EasW!G#H;miC*t@gwUGo!fl&%h+LeTeNdyH?y?{mmDRI@$CzyYFVNrgg-45`j9@t!ufP zlQP39v6x*BoAJl8$8#31kQzHQE5;b5Wn9V4zW+-%hkdpXBKcM)22P+pTIKCElag6u z3TiE5>UCB!#(p=SvwZnL@WJ)?i}7D7TYsD_e^=FnL6Yk z7q7d`GY|7w$X&f@5sz?OK3hXEN9ruu3;6uw24bWYZ7lvmc>kMSD2-d%Y|DlF6UEQF8-uVQ=;|xV7gNFoS+iCS=s&W4*Y32WcF|tH zEzn~@;~+)QKRDZK!%~s?gdBBs<}01R)xAI5fm`lcai2u}xJV7pOK;O&N?JKVsB*Ih zLOz|EeXcEiC}#f0B(EmReh=I9G~vP=M2k9F1|E7CPolgp$JCzMv|YOJyRuuP z!naekxHYw+=|RB&3`-x@+y9{~4|>v}X>XcID%i8xHcCeyN~tTMBxR!PMYi{n;5P-f znw+H^U3>}TY;F_flP_eyTwxjU4 z!V@V+jXS1m6uzAw)`yu)MF|VC2bY})8_trB4!5qV_qFe4y|^s&ua;9Ij;*5}N%YUyCvl2byWz&9$T zbPeUAuVf|xg{2Ri4)GPDD1Xr&+rbV7f=Qkk1n_ld(4}QlpryugBKI?eC6sPoTwaYG zt;Bd6&|h+5WQ$5&1t_$vZF;X4(VXH}?+Qd^gfBkNm_)khe%psqeOEge_u>klRqq*nE5va+(z!Wkl{) za)xcg^^8plgCp}{B!rQ;u(5+TxqJobhYc3G0K>n6Idi`-2s0 zlG$e6NaedT-;60m7-tZYh+N$PdYVIp5}CC+bdYrH$~iFMI$oDME2Ve%{>yc8H?#t$ z7oG`Toyfcm!?90ipNkx}?uoTR8y4(QFlw!I{eb)BVkL5~&Ik!Vj&$XJ&ngMon&ULx$sUJp)F7Sh!0>PL@9exkh|3UjnG+ zDT92q$;A7Tso;#nj=es-ve~qD&wRALF*8au#CV5WcksYy1ov?Wm|7GSKJZ^tr-|Os zfYgoynS5)vw_|pUH!rTtzjeS-?^vujiE}>txJkBH3|=KCHj>&ztu34OlH4+ zu4qf9z0Nprv%YGiX2?0DF4y5wL=!V5`9N*`sqKEZU=8aYzx*Q>V?0>cQ7JgX>|m|I zwp(i>n!nsw!iWb8Soi!UXjbI{RY59ZbGaNc{=({uIZ#NkZqgg#L+lSqgrxs-cq;9G zw*5VV8a3R~T=|9cg=b6JkErJfl?aC(Ga=dyTqz_=tol|n5wGZT;dh0#Yqv=~9x#2s zGP+k`8gZu^sp3`^@vHW8@YC{g9pwvA6~i?A98ZgKFWzDIsaT)drzCyBVv0jP!QSHr z+%N2itQG8Y#bS3V&jTl47ZKbQ`U94Q*U6nS^8fRiic?1MPLd=K;u2Yo_2SXI9e z3abJHFWQzw`m_?C1|Ux_C6}@eEYmC-?ZM_btE1zB7=w6`sAE=N)9|OqNn&eAbXvCq zFj1k#9A-##Mv|BI-k+?HXbqJ)Fd_Sx+Ek;+hoQgR&+XQv_rpuAOOe2uZ&k|{bi(q4 ze~`0gR>$H$vY>l94BQYeg@5f=p7iZ09FH5ucVx4mqjkkk7*H9-?QsMIM~!wDtR=Yn zfe-n|E>jt|eODASc5Igu&+Enx01iicM#fs?7Du5CNyT>O^@)J!$wyc6bm>R$=GdyE zZMhvQ-t0!Ytfy;lwmq4g&Amce=vegro99~_EgE}Gp5NR;=|pub+Ck@KD?8QA&e83h z-_E@q%L=)ZlM7pH6rb5yHm~`w*L;Gso(_3svp`&J_%gvmY*7|8Ja+BKbp4IeGMVX9=Xtpf}GYydR3q}LW!LnAY4+%*CYIzEku?gVjq%=<~F{AAeW=0KG71~bt+)U z5N!16pkV5DPGaugw#Ks8pIv1fI+ZRU;}P`P!HAy@pNC&L7Oo?|JgagvMd*Xg^(}oS zZ`>tr?Pln|e~!Cu-%~I|$z9C5VvNmp64*Cd(;F+mx;(h>x0=&Rq0=d?5LMlvwQ ziY08G&B6;&*A&eUo4#gIU+*5|EFBWj4msb+52bJ$eosE|$i;SjpY4SulDXi@;wfi^ z=W=a4w6sv@wOB!;%++4F)RAYyUHyP`UbfoD^jVqP&lRDbM~Rm-v^u{?R%ugt><=sa zEY4CNH#2izAg+r&FHu`G@Aq1UIWO8oxI^r81-<=Ic0*gg+g@3QU;CaY$|G1T*-E^u zR`?vbsE^&V{L@YBC-Bul)i|_}jDcVkbLKHbpYQJkKmAx49W;Qi|(pfWcJ8IOr_fkyl?d@Pl7&`uGXzHdc zv$9cpFalB3h!w_-iKp%<9TL89=ilRhyM@vBv#*igdxpriQ`zomb!&5DrT{Z}uOb&6 ze&(WzW7i@*{eFzS32+6{eNfYcD4<qNAn6xXcRTN%6XZp8tq9D0MY8t&o5C)}I0=tRT^4xb zwkZixPrBCW$OoN~vZrUQDtuN5E@9z>NG_}er3Z}&tv4OC9O0l7am`Q!s-mMtWS+?; zih-Zmk_hHy`i;vIve8Zok)nC;C0SVin5OZ;LxVff(SNvn&ytW@=X?cV#vXaX@z`u%=92g$!a@;E#y59wPI4r;<2 zb9ATq7SB8sdHmcx|F}`|BW!{Par>ziG>j-~Hq4p2ur+B3G>E4;XpqB4_I5;@Zi_x* z!x+SgzC|rXEWs99KMhKqaofoMJm%D`o~$dZH2tyS+_9GzRGt`t{nwI-{LWhnAx4=~ zZ$$ZW51Va7GIQ)2ow)&V)`!ACCH55h|JpYo_o>@dNOkIwCGshSG`} zO_(@?gRbtXM{9pbb*4DLF6~;qwD;G&oXVHy>3NSLu`OqOcj(q!OVQWwvKHi#uiOyl zm=xk()PCn!i!4M|{SHid^A_`GplShH^>inZXci%({va@qe}V?eS3UU;pmcLOD^%rF#)dA=jas zPLeu>Tt`VNX+(0J8A6>ds3UY^l;e`Y$o)2EN;pMEG>zOwNf^vv%+<{7=d*R5-*dj- z=lA;k_51VNU%S1{?7i1#t@nDb_gZ_lh<~kiK_vq`*zzh&`_G0Es^l~Odi;Y%hjWt6 zZ2uvloFdm%xd`%-R+iv~U%e3RfJQ|G*W7Kc9s1(JK$?|)+*3B`+)7E-pOPmz;+)L( zRcmfFfU7yv!ST3@EwiPLr+A>QllV{W4rQ9#P7um92pSi(VS7|qRwg?nlX3P@ed5kS zUc$li(AT~tHbsFV+qJ-xWm$+G@eGnzw}&!? zL( zlcL6A>s#*eg)`><&!$$T?z}=U_Q05~8Di~%_KYyjYo@}kM`#KYpA=KRWg8(my%m6v zX4?1Ldmwb_YfU|x8HIs>_Zp+C&}D%1n){W-QC&L#`}G!HSo9HJiwkb@5ftMxBjQSH z7d~?9g_Hb<(UhpKbY9B9P$ROTrF7lL2ipPX4go|UH^n`uOQUH0?3bWp^^x@Yc02TR zXD3f9_zA@;(D=B5@9b%h@1=8YbA#M|WJjj$51ilC4=#LvNN7}%35^NyHMQ?Q^Z5uc z^e-53o{P#9&2&O9Mm$TPMXsOq<{G^lo&iv&|HtMW%xUFgpevS31iTCILXY7Uf#Cc`7W z4XWXC3W}B$uGX*%3#n7vw}>T9)qIN(R7McI-=bZzSrrW4d~Uof@L>6UAORF0mY2J^Z=?l@_<>=Zq|}XzDDsT+ruTci z--gSIRv-P~Gy6DN;&4^|F!%)&-}|0IhNz@sGo`q8EbH$37a@-#n;5GYJ>H#icg5Ce*{tSw#IlwmWPcMBx}@#wTHf0X^EaM#?^;j&R;aG^_w0RHMu;$17IZH zAsL{p%F1Ct92=CA8l?f;`|-xr^>gaquV9#y8O+^Tqjisz7t1GQEIrPbH8JH+?ZVU- zsRZJIbA;gV1THPC%r+R~PE5slcTs77;EX76>YEIpj>DBNd?Y{3jUrNXeq>1Z$$>Ma zE~54sp0F9=kzc*^(Wu5N_*j-vIx^F_g3U%zLOgQnNfPd}S>*)X4G zlKRG4quc-YpQwA&JH(MI<86z~frT6Otb{@xhRlE|A@0L8{Us#>RUIVxF#PTE+~=5Sq=K8g zjtIxbQGkTyu-CFDNM&NYJ$LL(oP-|r)tYygKzut?hn~r0eAEYNV-0{w#x|SGAg37S`E`*L8@P~R>o%9G>NR*OWDTC#9ui!PuavSnA)88%rVju;= zT}npdkxjyfV5gy2r6UBTRL{j4&f}x z6-M%~Y_>%s4nsAmMGqC3?^s$@;Rb+srbqYOkdg~i8k~E3bqRO4*?XV%h9nFWs2^lo zPR5|W#j2L{H!ag2w??O#vD+nl5-(xas{1C);yTs2etZg)t>a#gYn(aDYcR5`c`f~T zqnyFcG}vD^UcPz5;i=NIy*6W*uQ_O@YjaE;J88_~Lv}q7t6mplv;bXogSO8btj$sh&9IuLO|mi*{=HimeZ7hntsR{O2@EbIjzhez5!Y?jP+n8 zIv)dcvC7K>7u#)`upMhTwv?LZ$GMIBN5`#)v<7Z8(Chb5Qw64F@h`SFa*Y%h1EAFh z6mhrPTaNg1r?S{oHOMqX?-5GJdlJLXw;7BS8bKT9yicS$Ne`tne@ z)a=J$BuR465YWJKZEPO%hP<@yP2PAA|GY`1DOAr6yAh~*SljVLT5G^c1$LyGTEL%f zc}9aI%vTFuVy(}2i_#z0p))%VZILrLz8Ngs`=m(VZ|gPr?HhvzDZ@k>dJwTAwAn(Y z$n1hrr?SCegSX*lo4Z~ouiM&XKHYK?8ihV?RY`jU(P+Y3i{fz)W*EIZkRwv>`W;vs z4+Q@U)q=;ia$1>W-$qyd0kS=>dcS72qI?_9Ud0R4My%>=9=^7(0LLYs``#3kqOF}C zzI^8nL2>Yv*cqI6Ovv=uKyO*z-!DFXa7K%xuk%TNwG5GYOg^KD9;&#V62*EUV~EGmh~7_73#+{7sTK!%bfd<1x-^gU&q-Q3>kmIBGg=*l0h z!njI?+qGWdC$uC5{602%oZ~%|)^z#SK*jk}ZqJti4DcTY)_xTEeVLN9(x(+s3*8ra zy}02id-12+4d-QPo~noN7=L-K)A1k&VG^kNQBfdOiODKE%BA2989ZWk7F>!jVby7W zX?R249Xs;1RN%=G8-`8=>I}LLHFWrfzkY&g>{f%5M>pKgu|BJ?6mTN}Y5I|@#voj* zX!by1qu;IytqWer$m9Zj@u{5QifnH}fcqE~F=~Kq5*jTOr)7q>+z z!m`?wif@^HpZ+3k==pC^L(_zMi907qgfN>tX!Y4RiwzZ*27{^KSG`0@aSE}Z19X(6 z4G=!yHNtwx5D@h9)2(U)zKwJU5N^->xHl? zm`%v6Mz9H_Z>eHM)tyxOw4C%f_S`RBLrWxo%yYpIS&bd&f>uccTcJ0gxn~C+5*qkC zX9xA{-V2aaYa_s|yB`fFK&NkE(`@%^WnPEGF(J|xvm^F(v2+$vW^vcq`{zx6$E&n9 zAKbT(^x}935=u46jYudXvIh#KwPB3K+TOB)IP60RnWF=(-H8po` zgTM#eejlJ|TF*}$SC-Kz+B!QH)NXS-o`ju0J$|w0d9}&u2uE+ztFvCZ$j!y}Pwsci z?Q`>6<{o2OS4~VU6z=i;Jm=QTXc6@$E#uM(e`GmEe|6?#A6KbfW<*a43dRF^$1HN7 zTHof6;=e3?zx!SL*idkFgF0;4$QFxf+?LZ}Vyjv^30)7u zw&v>$sxOkEAK3ve&x-#7E@QBh1!obPFa?kWo@|+YT^Kef2rFSXp))8p^2($vyg#h{T8@g=JUrV zG*>cLZO_o+o;m49722XNM|UF3)I_6KFQ(ZJJ09W{h#IHfT#aa&Ck_Ll^8Y2pH!%f6 zRRNviS!dHQurALRLsH>1w!;%<>m`%N*8yUYLT=YXFflW#lmr^PqN zbzyMthzIZz=zpL9PVL7Gb~r=Ak9ka4Nost%8jjhpG1p#-CQnSwl}`RVAbr@n`F*d% zkbVUve`=DyHr@={llzJvOzfvrWVsRMXSjW&g|9#cQCesz;J$`VVz+-uX6H7%gf6O% z;b+39+?qGL&b(CC(?wK4H%sy85mF0!!2D?;E3fASTuW-4)`Lx=Zeykj3Os|IW3*TL zG2ee*j3;e`DQ9y;!$_%#23nQA$!Ag(CgbI91Su_6y9ekH>5si7)}*o8i6$2mkp`fu z3z*=8B79{?H?cO#lQUHD=2Z<1K;f3ESx9(mHaczIij0Eq0xv>VrNMakJ}` z;vCdrS$ZAu9mT;;sn*mzn50BzxPs12JUMIwtnYcI*8{U{NeDmLCH}Ji)(}e463)Dc zQ&Lj>SUzTAFe8z# zYzM7Mp)(Z+DhVeU-Mbz~?z8FjzB=xW`gLRbcs0Sb4H+A^>mPx$K;~`$j~!ncIsr&O z${>4UoykZ6K|$1oRvc_m+!9lTSKnEzdVwUz3!V)P+;JJstM0_J1@m{W&$-D?^D%?! zIpy0T?wR!x8CeRe;pAtwI!7T>jVZ|Y*qPsukhGkgX7O9i!8MDq>T}y(VB1E&C8bWk zvA-OH@#gSJLXX$Gn$_4M(r0Wt6zkVCL~NxqNOzniE35zq$vp^`t?IA7qpRRTVI*BL zE{mAZl*aX=n>3?tx^r*%5&DX!_xKl?@Oy=#`1Lb{`3UJ!_PY=yHBI2uc1iHU2Zb}M zTQ>9l+}q32`Tfp|!RSxMfP9Ia+jI?f*OIiQn_E>OQ*_a6VSc29^d7oLw?U6UmoQy~ zz4B4XumAu!W3UV5Er{*Sv-hFucsh}lyEsMAy&5Enls|hscjiuoLexd0<*R%8!*=P) zRG#fMIvYKYm-c&TGhnZ4+Eu-5b+|Tva&IT8>gth#ZEiCe{dsFg3V(Zua`WqN_Bztu zBAL|P8gt7f134^sDaLb;%p{1}eD`Rrw;m~Fp>(dum>G+#_~1KE5LG(DEIl4lABEl} zL)M^Q0)w)PKlCn~$zvfVBs>rG`hdc%g>)C~34!!UJ3sFnliwAoPGi)m@fJ_I0e8;H zUM9uyw}~}r<3iKcOzn2y>&uJ58)p9Ol2}hfRXVGgchcv#R?~99+Y&h3HG_1 zhIEzl`(l|+ZGB|Zg{K3rFoAY)mteT7x(C8MbIr3!06b#Nz0ud-izgFr4e1YJ$um~h zKS$nkbb`#zc8H8>u9g5be^vRXTH2iIFR>!WMs&*pU&Y&_PM2slI^^qbW*BTSJhi+H1 zoxvEph{dl91d|3g%^_#Y(lA!t#m2?dsoDk(KB@xg_!P87q-3@Oci*nQP}EnYjB{=?Lha$_>v3z%|K8sW~|_}f6AN1 z5;t@S^bv_FuD^=M4{E2>M>d~pjO}Gx*kEZ(btmAFfIJ_Uy=4fW^vFo1D{fj8M$UF! z$C48VqSx-sVre^FowHtCResHJDr>PhAkH;EIjlr=QDfbAg=N`Sd`+$W3`zK}JHU&7 zLfS<8|M*kso6KXtd0GparlQY6549!qW;V9<&WcDN%MbE|ii^bQKR9y-&H^H#KSceZu!(BFw)hl!u@`FguOw z%6U0o!B9+Z7j^u(-@wzwVHHo!I9o38CVT;?Z8DXCmx}iQi+Vs=aO0xs5R$ zYvuRDKqe)(4CKCL4yRzmE!r3w8rK6}pQYY_z>M6t*`t@Esi8I8nlZfkTymH#lXr(T zqRMrYt;mhwWh(sQE`^#R2=nJ>Bts1xYj;8a7F~ihZjk%Z)*DMTttA0fF@wOFjOxT5 z_uK9|jl}$rrv!gvqXznp@Jvy4WOOaIoL&==$LI!q9bkc6S8yppxr4i5V?@Yx9nFr^ zmk4+9+L2Zha2w3hMfS#}_&_QxMT=1a#s%hk;tOL`t1*Q(u71s!m-fXW)g{6U*isMW zi?Kflwf6&{3C-m3?*dKmqR<}phaV?%2$n1_*0AJ_>flo`Z_y)7uKw?ER05_??9MZV ziHe?_o_$omn4qZEpl%oTDSL1Dm4<`N8>i*RO>z}=DQl5a;q8?_^5#pqiJzyUyxav| z6j8?}5C6QTFu^vuHiX|^O z7p>ld4}XOwbvMdqFg?cb+zDT-nER@WDnXIXSL%!gi5e2Z;Myv87g&h3`)?b-3sI@b z?~%+M13$OYjQQm9Os8$XY{c}i>hy+P8vR}zLsxj*CgL@LQ!lPYgWsda8KI7g6=#5Q z2&Owc(A6biMk6{HeFY1SAP2_Z>zsld7snaFV6ejt37g4d*bB);Hio@L<4Htl#&qz9 zUqwK+#h>tnNXaY*J<;x+$KS#r3fyzL^WmZq)`N_*yVf_vN|!lkpcgZ7qu$4Wmr1*} z=s5N=vzWA*UhE-osntJ~!)O;d1Fd66vpaD~E?SqxyIK7`{H_&ZCrl z`DRh7cOw3$2l^idxoes7jp zN$bE5JLU?Dz)Vl?9Aj)ZG)P$XiTzdr8oet(dfHUJJt{uMR7{hVFn|ux+uqeF_s;PSTHcyxA#j;wPOG`TPKB!r=G^}YXQI??Q5MLv+ zU8TyG(lYtmMi6v!U*uBYa`2Q=oaFIIaMl)CgsAUCWFLLAzx+{mw7G$c?9EFK8QSG; z?S!Mh4wskpS$I=K#NPQCUL!|4l*Sy*K1Zet#^s;QlMFR1h#Sex z-wLIPsW}RJsqx!P{XfO$nLSA>`L_DGi5^8O{w3(0%(qA`l6^SZKsfjq{%RWy2L<4r zhIGpM`;>*K#<-32Dc14_V9o~=IY&THYvp?$SApq>i@#_vnimO0b&5aG(i$3bY?)iO zP$Ffe(Kok6Rzji>E|eG**))DkX# zGOB*YE!KEozRIaM4Oaa15W1$dL@?>-ox?rMdG#ZRIxt!|I#%N`Q$6TB-2ZV!@f4)dJtZ7GBfszm4Wy@mmFH)QOAV%omL0=i7^>}5VRNqH&O$dnJt-B9T4N6MBl z_%Cnv+n0V&Hwa(EOZt%-U{3@e&49mP{PUdUb`NnVz*rv$zv_M z=$o27LP|Z3S0^h}^*7r{DWhlNjhAcS=X->|@m6{tCr(x}7n%t$ z8k!>Xe;@vyDDm)XNMJ1#GM$0`5l^nz0Aj)Oar!%O6+jLNrAw|x-hzr@1{A4oYcnh` zbeMQ9ef!8OnO~OAmPmQEcg*07NY=QpE>K&onC=ONS+T;C-1i(hPylEsB(1&&0&;e} zHtRI4W4a0M)PW-NK3rs8I8^||9fw?fnZ;u{Q*j4J)Nsq{f+)XQVy;)PeHq=BmgJW; zwK4_57-#JAx?*WJL*&@ll()jWwqOV#|_LN7l_X!wxr4qDYaa3mG?t}1kXeG=J#=9aSUW5mcvn6T? z#I0}k%Z-N2uP3SL zPmhwxG&S6H+`Rfq(Vwm=aczkGBcD8>oe5-Ds#P`AH06}C8Ky^fE z31E*q8`vJ6)#qkk!^JTET>Q=)Wp+ruNT;9tni{`BX_{*F8B9Y_6%W618yr_S@CrE? z9RCnZ63{50?xwObUZYkQ(%MAMhvad8nN07`j&S;QSXZreHTYGUX@qsf8{))^2qx9O z51XMbgx+;=Y{`UcvZ+g9oeR%0*yYY@fi+kX7DOc@Lz2hR>(_)*a!xXD=M@^In3H?s z>(=JxOXq!_l5%%Ig86NF55drM`SI!;K_RI4XvH4QAvI9OQ(B#Op{!)~t>i=SpRzZxu*IoecVe9^ZN9kR6>`=xbi$Wjmw-KfsX+`H6W0ZxjB>5rx1+NDkp*+*%e z&F-=0k#uQz9J#p)de}$@Zj%J9bzJr$=H0!BGsw$xm#}k(n5#HnWXhtP_N~jO!$L-> z5!c#;&3h|4C>gr~y>iQAZh>?qS<~ynYp3V2_7n7~C*DF%T<%ZK^#P!8_d4fIOBvEZ zU+&F^fwXncLXrKJ%;q}Qsd3h;jX|PB`9f=?uF{4*WY+%6JqKh%opTfhck%C8nw;jm z8wua`oe{kJ!T+UK>{_Hhw=ZWL_Z~{I?^DN`eyQ&w`VaJXX?qGMU3K8V1lqPH@Y+3& zE7mOe?M{sZO-YafYig5hn@yy09EV&t5G$JQTs3mZ!4Jw7`vg8wcVL(KdUz(a- z*ykkRNry1gWgfi9B!6rtF{<6V_BC`=A8szfS!O*DUr!$v-dnzeN0lr0?zNxPi@Gw1 zrb2eJg9pa>xATImBNZAdD5XSIS^?ksU5mdGpnS3sKI|l7!Y(Pw)6c3XoW= zW8yP@WdRG+>ml$|)e@06D4zw_zoTh+_sy$1 zd~rSns>iccz~ zass-SaO~{J;HSZ)Bc{v!(fk?jx108@xp#|Pd)uYGGUrV9+eZ;*r*LETP=tLqsUQ5b z^IAw(9BguW^o{FWvUt@~4|cZL+UYsm5&=TJ9f<6^!w0s3CJb1)@bwyJ=Z4z5_>3p3+Ef;x8I|A4@u!87a=1#$~weoj@1gT1QkP~v9{hLXmxV#T$9^# z0ooSyoSVp?qoCPr5m4&t?^+5;=Scm&-{_5<$ahE^Yxc;k9lc zJ4-%J{%w8eg|lJS+eb9z?5$=?pd*faFUN6|=vi!+zWxGs^w10cSDm%=cpHYzw2j=G z$k|%K0NWIJ8cjed$C=!6fc{9q+c-kyrK?&+R^$-Kg{? zTTXMlt5F%kfNGUFI$NDoX@7O+7?$tfgQy~7(_bea*k_x=Sm#P}f%d+c_&q#N5{9XB z#=KRWIz!(cshh^Pz{gn)UePb>B>2|9sASpuO<@%Xi{cdgU4NVd=0u(5ktG{S$(@H+ z&hfSM&&d86Za>#luyQsUz0|V&X^Ew!g*P*8U~d|F(+M|XU{wD{1 z{$IZE=h(=EEV?;JN&)bEd$8Em;bqfpMm<%PZ&tYtN(4yf84njcu>ee z^?Em}E{^vd}NCVp$?=(9J z+EV{GFT4pBLGj;qfeZZ4BK*^t{<8=_efVEF{XhL0gw%f`VJVFM14sYFxBqW&Gz&?W YHym(}mu^#*0{?zJcND_^1@iQ$cVZFwDR(!@Tb>@9X-`y6c{O z_IccUVZa}(gH1BRj6!YWeRD$ADGftN! zc{x;+7o*r+a^Q{uZ5f)RH@imZOy4+N8lI$Uqti4sGefbMK*Q3Imy<&^#ksVsET7&z zzmPUBDyD|={5t|YHk*sl$s6PJM&~HKarGv3j!dw_03~Z300Nu~lv}ykT?!!=quSCu z+QNXh)D}}CgP$#$6`+XP^QZgi^o=pYaj%OCDj85mPU|4)ABY4sE-0ceJW%OG+iNZR zx7z}Wlzidr05x~UeLX9PFkn6ftHRWOq_%`UzoybjaZ4=Y*INeq^ZyLeAqF{}%sov@ za8OW$v@Wy~V19brMaumZ`CZFO=xgh%sDOcILs zamHXXIvF8dzxABacKGQ#d(|Q``oDceU;6s~zDOaQFn@ zGNFuse*0Jtr|X!XW9qKVneyeV+wue?Ovxf-A`Je zhtCf<3y&EEv#cGMbtsF&$`J)EgF{Q|z|FGAiHx^w+HlLSwhhzaa|7x|D31i%j(w63 z0^*o-u9nO?v#jmu_)Ie8!12I_@@(zBaHgN&YZOHSeg0%0O-}2`+d!SLu!CsN{;^YA z7HiCJZs7+ul?U4w84L=1{L!htD4Y}u^i=OSHD8IRK*(sz=%Wl$9@#^x5%UxTjt4fB zi(S;grrK4`f@$eb9U}yv!zdK!4^P~1K!z#W^%z+Yc<>{c;YJ5?TIcGbRG1s1EsKk3 z-ve_U?#j9H-a6?VK8I1@XWEILF?#3vXlk2)vbkm8-2{erkk-jt_P>n_=FmqP%4qwN zQYy}u7y!@*kF-<&#EfHKQrvGF(Ld31lbdR=)iVCW)DDWv@fQwkBZ+zOZAMTTEIY&F?)4D2GSpIOxKmBW@3b z4vMy~o?A$tSXn{4>Pq>hA#?^gzfqY}kO{<8 z3M#9ta$6tu!1L(RQhH)lCA}vgy@Kra@zHaPuVC04e$0$<4;j*z3_{1y1OdZ}N^f@f zfHrgJ&8TVT{y8eQ1uAQ|s~&h&Q7(O)Q*+OXa++V{>(UhUl{=FAV(9NMC$O4 zfz+%4hO|IW@nm*K&K*Goq#QC*mX5V-wm(=^NS|6=N!yo|Qhvy16(aWH**OdkShP`m+F}dzil0&@4wwc4=pUBc_E)%mpP&uDdn)CWpI$`U)!Mnl;i;l z*E{35)WUux(bQD2BW9;+WdWz>stVf63(Nxkgo>gb{_^ToanskZ*GqMwuq)&z&0L17vKP=0O0KlH^{D zb`Q`vHzJxKq=LVY zYV99SMa=}MzJP-y!tSvYSVDn{iu{^6ul115ye41qpB0nY*P(7ATp$Y9r37tzx40_qx>q*pmr|IN4e z=v4js`lf1nf>Smd`Y!|Jm^muChk}D(SLY?(F}RZ630ho|?^$ut?g5I5I(GIF@1@cK zpi4(=+Nk3q-neO;=g^zHP2dS4$n1M?Ue+LC>q2s{)GlmgLiY!J9QgJFd@4!0>U;n| zw~RJvmr>M?%{rA)zI%DOie=29i#e(`FyJW5!0X3(@P~RMA3$vK0o}^;4kSi}n`Jd% z)|q8(H+j>s>-@LTWX_ol5#=j91!TJuA&n-uSymIK4_lX(XmyJFfUe}vrzK?tjxjYF zWH@CZSukZxJ(Qa-$LXUlx6{e%ID=+JVQFjI)^}J%c?nNFV6e#t6ao@eqzMSzO&g3H z9xMdPbxTt2s98T)LHE9LiJs%=PE4nd?s=Y{(ysu3IRJ4mw9lrtnK0e-gKbE5!krM$GVSkD*xa(qU+jpb&1aO z$U>z0(x!v&`T~3E7kpk{<6nrN8weB)U*XN&8zC_cta#Ezl%pt ztUrQUuN<;6pJQ~ccZ_zw)JjeN=%zN_POkAM);IZ2lhPOb4eK9m7(fC1D4*2U25c*k z0!9AWu$32(UB7JM|0V&rXwqYz9?<|w>!LNKRb_8QAAb#hZBGN$N1VY!BZ}^!_@#%# z)4>FwD=xTMHf78*A_3BfU|^)IX^yt^0}LDRF$yGPB7s8SDgN4ce0hb_sW>B!xK4?) z>E^60&sq*JaI-9Ou;~Tv?b~hpFkiaC$8;2#x~hzoaqn+n9@cRYA|$Y#}Zn^Uj;g{s7F~z zi{SFOqb@okukE6*+M=U%rY)7wzO?^EC3*By_9+vPu#r(jwKH6Y?E76uGO}8GYaC$A zh}l-O4cw;2>SFrY&LwFt;Y_`(fI<w3}}k zn?6wM{KYL$ETl4PplatQCwl4NTiwP#RCyy5G^bQoxH!&9>%7_#w)HU$_rJHAp3d+Z z#@iSB#yKxN*)18oc6$ZIr&pmte=b z;?BI&`Y7&?pe#r_Co%pT7MId9@2jSVGQ3ia>TgznY6r)zj?(KbgY^5hA!_Gn>wNklu z15$ne;UltP?;&a1dr&qj?>g8g`wrn_>swuAM(Qdnq_L_(#x+#Rq=qV)sJwbeW3hJ6A!$fYwfrLjuR9#t)8kE~T* zBlQaO(WcDN+Qw**$+C}o$i-5Sz6v4A{1Cn_LB8Ck}(0(HWm>3iQU($#4}v!cY>A*s#3+>kB$Re&?)KUC}u` z_@$+#2MoXuI}XTqUu&05-3LQMFbYsS;=&Ob1+duqQ5d57#@AQLedmsp=`BN}q9y$v z5CH$av0LtVvt178f)S4pTOiPoB#HtQkErk*=oTPbRN^}G$!A2TM)~2ak#fm|`grvs zbIJzr54yTO@XjtZ%LauTkPo0Z;OUD(Qrn_{NA*SPP`;ufBVRv#xLm8NbvaZPfQ#Sj zkj3xqF30{cuY23fVRGBdmXiG_`7q)48hH=@7mpLI>mvX#ib|!D0DNAbCLUP1GsPz7I`B+(H8#%SLvEnjyjdty^J z2oiKlOE3kYO{GxLLl~>=O)qTL1%u`geVq3!$_Nl7m<9)-Va&sCrdjTEu_KDp51nD6 zZ@KkV>74kRi^s`~B3I|4A`tt$Z!g^@`<0g(F$47d57;vok&}7`w7U9}; znjaK;9I{5(L7;6s0b+hWUKD`$ywxrnx{{tQ(#=>SEb@@f_kkwXv9vWh4bXgmQ&*Z@ z-yYhAHWot#1GsE!k1Sc&73ikZzHvI}=N02fnrsw+eER8I8sKSmnE&khy}_vwf9K-` z0f>Wv`&aBxUH))MRvm2s8{#-3j0=aKcGH5Bbtg60i2F|!zKoytW&E@+6Hfa+So;3A zcIa_ia{HpW1p)Z@2OT+F?LhXTVN;(LtNh_I#8Vz(20qBOQ7WN{6i> zYy=zSI1IAUNXG%TJOUDxXI++CXILFy7wUnc^0+sdJFZ@C)hCPv)0(6Tcm;9>q-zI( zg$@T4(`Yl=o{w_giJ$`>e;=XDVS|QP8a#>M0A;M4bxqzJWL|!Km=2)NrUe5M*C)<= zMk*_g$eeKvGJi^=%+_Q5D(@6}N>i2mNaydczrOE`MuLbk%X{L3J#ziYEt2c>D<^5$55SMWEw; zo=JzlqY>v40NktV_{*E|d>D-g>%mM0 z+=$@emqmyJ$N;v5B`Xan{Xj3}{UL3gVo6ry2r->E|N z)$7uE#ndLbc1E*IZYuBSeRFWJ1q9O~KKG&spMgd30P5wp4acwnKM%^|lW=quhEzKF z^|2@*+O9aUN$OLEOuDAzl8yQRaO8+h1Ca3Tu?F%;N$p#%Sfo*61orC5#F{;L@^EuU zc$m2{!AK*wIziR!7oDe*j0V#Iy%&tFlZConI8V9X7+;H@?$$Z!g$;Y_fC@_sT2CmeNF7{cI ziWsIZDscC{u{~(e9G#b%Q?@Vgb)N#=-otH}d2jnl>EBl(*Kccd4re(qnK3Lrog@Od zE*pJT8I6Y#{7R-=WziZF^o5{>CpYVA+9VCQ9xIS`>65`d%iHC7y>qVBo$aG~_?Zhl zsBP=S@HGSE_~oaqH2oX0Xg@G17(l#H;2ZJN7F`%NM3iZ85b~J^XDvPJggUwLQ!R3l zMoon`=LA*qeBl`Fp5@#06_Gxv)4B1N^Tx{Q`bJhhTCY(P_a__>(K(TAC5H{9li#us zNsPcQcV4fR!;3=PV0t;;-}|D@Q#UAZCuN@q@-^Bo-_dhO?tFc_{8R6p;Rp6&4}Wf) zoG~gtc+j&>BM_a*HXx6EM{arSeEbR%>vrz%zrzR#Bm%hiKwn^#l2DRPG;SQSqv|T< zI^BX?GrdJxY6>5wzKtd8I_2)=+okh>J@iA*Vg+wzYmG0KGmT+qzPpWj&I&1o(1C?3 zi4p-!6NZB1N!V1+Y^|1?PaP(gOls5zd;*(fHa%}=HtPPNa~%kg(yHJ+cFA~|R%8^f z-4nllKrBFKT1>Fak5Kr51u2OV0fZn8q$%{3;k4q8*(bPZUtLo1F4#wh{rvCe}h9)foORqNv=I z9+6q2>&pUfx1RU_xaagff&?4W^osFOjXX>V#nKjiZ5Vquw1e}u>B!xlG`oW{_Q*}Cc{L%>}fd?b2g6MPL zu{|h5nnZix_^_>%XI|PXafw~qr28`}jz*y6vlq<`9DRT5m96rCUI|{RtM0{<8iH*` zu7`iDu#4Vk7aSMChHW=Y->3B*=ZEHvE9-G?jlKW?Vmrvqg8$977^v~~SvfFCqC^0( z*>%ME!#IMBPZyBk9087_qhIU0CipZDt&sC|&v&7I&eUxO<}f&iyVs{ycdE=T?-H9f z^hI$!b$Rf!W2G7ge`U~WjX)!IjsavH#XJMp+F(8~4Q^!lVN6(-vJafnoIYVwF}VQ> zN2nBujBa`l%inZZKeM(g0Io&>!NMH9r~#-PHh30(NH@tthm;2%JX!5UAVEPs)AS#C zg-{wMi4izC0Fa?=fLPBZnW7xKEX+A1di7k*2<6miIRJl@9+Li4hwVUs2b-&R_hyH0 z*gtkOIeg*M61-vBc#xx@SBPO^{`%jEU5!%*tbobn1LT~8(*~B~4k!YaByV|V>7!ml zRq{NO>_>X;CY>hs9fThyLylkOqjB?@Y4Er_a)3qBNes#o0Yt%P^mfaPxkh7X`gy)H zr~~qyKsxNCdB}QJ!@ieo=@vA6An2prod3)|bebPY_VWcqCcq-iuT%ifQ2=R}oDC;8 zrC|rcdG;&UH?J!@bT4?_(`~Y1Tl(Q;Es?MHpnw>09zU|20XE_ zobY!#fI6XLK8i+^DRoK+CVM!}%?UQZ%9$6A2(02aJhMR-=`%3yB1)x?cG(jMY}%q> z++RTAesbzD-)Ot4qC(D5EYc_yK%9Kcnb4s1IG3QYE=@q7m>?rcLmzBWkMz804ay0OFM8meX3bK6?eK2!8p`ee{#ZWTg}IVGqBG!=acE;2 z+=#N40pF*zRLhd9r^?U*PSpzn5QbjSi=CU7v}KJtM)1Hv1P>fkZh4@jjIXGDzXPB) z4sb>uyL6&19?9>*L|w@{gjoR!FHbnKCs5#in)UoVKV4`!E+G`2MmFV+p`?^P2a)sh6LJJ z3>5_+?n)liI|`ib**s$tGSUPf+z8jWbf?(;;MQ<*==A3-KTUhIO@GXeO(#hE0EK;H z=b7)-Lxu!xEB2+Pq5ytrV}iEDC35E!4ItFb*Y}ctaNg)Zv+pF*(T_ig`)SJgd48JZ zFoHA*G9YkE8vrV$xs)RhB=Mz`+@UD>zFx_qO{Gvt0K(ACx_$WCtWkMwvhitvM9YDd z$%31Da{P+QW=zK`7bKbLnh&1^KQ# z9{~C4N6YZ06 z0geI`*Ppxo%WDHE)tX@j{*{%H$Xpy|ydF1cYxF{>O%H85^(A+_r`@d|P`v`vpdY+qHc8*xIZ(@+uz(u*^O=4&ZSB%S52e>i-A6f?4g%(2*Aa0000yIy;rw(QffIw27C4jMwy=!bQX6^O* zv3_mOchCRr%$+;;zyJLowpIB^|9{Ruk2B|db7tn=xpQ~hCY0nXwFH4FEzx>bX@bC6 za9bD%XTd!SZVM4;q3ZS)>TZha!zU)>(6N(p==g+;tK4}`n@n%l&(tZ>rSh3fXAHRe zkDipD4j+-%_8pbC4jhy1W5;Fi;4wL>faXz$g1d0~R9V*BE=#(n%F6x@dH=c7q_5-5 znC;q5=cU*yBS+=&!GrRgg1UMCF~LJACAXJiKj89^QUXwrhks;25E4Fthm~O4Z9R>FJOS zOJ>N2mvzhRY3GEMTl)KyfxGkIarvj$N9Cby2Sle(C4yPxUv=;-qM@r2%9BxU`We~n z8tMS}H&^z_f*Ge~Hf%Y#BjYFKo|i`C2Rp{(_(=?V8`2!coC3f>*=Zq3&iyKyCPMw~ zIvsy#Nw?g#WWg{`Yz=e^Rjr8<166y;9T&)YqpZV1;0Y`eU7gDE{IHX3NzJr-$kq`rTA;|LTPi`RCX7 z2L@q+AizOZ^e4-LgVOawa6_=d@}|T8PV4uVNxBhUL-i zW6AX=0Wiz*ok4yWX`wgN#Yimzv#7ieX4n>fU#E-RpMLOM!NS)lH4N@yy)FHt|K2Un z>^@wVEg`reICUv)u+pV-yX31^%#|*^&2EGm0v8ecnJ0JE4J-@~BPko1jks5TT>yOd zmGc^k;D&-9Q^C`_4kaD{r1-}GL`2%hu60?~2NN=g95U*V$Ld>NrI7xBUZ(kSk{HRS z9ptQwkqG}9p}N8S+Vk(qBX1qhwz&@gU^tA(W2Q0B${QBY5eFX{2vSU2QCbD-N&RLo zYFYbMpEjjC^O3j41b)^_b%FbYZnk{;=lc?a(J&qGWrC%-m3%~$MK?L4#phvX8L-xY z1eqM|oz%NNa+BLCX#@}XkmK#6uCLF^C82n zX3+xWPXnk7$C!rSMfFj}r$);=;2FJsXTUy@UcF7e@7hJOu;iXZsmMjMpa1cmTwvie zqu52ROS61vF;FdHTr_KHrM_`rS5hhR<(Kj0NYNz8F9R7iIPS~N?or(zf!}6%p5|;^Lc94JHCV>4 z{qo);0{_cU&EO`xTQ82N?lc(o+kk;=hB>twSd$mwa;NJVnh@4Q( z{>qGo?BhGEiAr#uM3Ln!pSi9qBgFDu{mRHq+V*9qp}Is{miDyE<@2V={ORq9eYD5- z$z=KoznqLbe2(b@(|cdV^jJ)VmtuPkpO6jz_Ew@4>a0PVQ}Nq+)#gh4Zax8Mjt*$2 z3|`%yHM2V9dVRF>tBbp3u7V0WsepY>_d*`kXLz8p{-At^?&|#e4NK+RuIkU^3Lhpt zxMg$_SQrB^eU1p=ut_qKxs(7fFCYBSxez?+X1if~VSc|}lWsh(M?U(VURmCkeeyd+ z?O(sNdlFo;x%O|ghv+O2K2VdZ>t zCMK*S-+ykGe0)WpM(GThT5wnd2TRgAT>JEu+~uUDO&W9!f&0?laoIL{RJFQDOgDjF z1l~A}CP!TYWOY$4)JGjzeXfp4u5O$3=&75H%e&0dzYT%p}nxjm+5OB_`ZL@r*3ec-gQ`kt-#^%m`t;r#=eX6Gan=UT763J>nr53Pc_Po+tS}j!#&TG3-n!{(hfaFMR1|lm&0~w4|qsO15VfIaj6*P zg8S;bM-pIBDW;gp*e1D^XRfPTO$SR)RS?&o*DE)_w@)sdRr}E2KYl_s=~c}}J>b#T zS^e4*r+#*7(J=DFoX`gEH=+<_ z8I2P%TZj8i7xX5>zwFTezTTGK`P^`_4SL0b>4o3|*z~E?tUYF%`BUWo*8St2Z)q_% zak&k48QOE`xZLsd9{CS_N`R_g{iS&| zU5;%VO-~8d(P)`=g|Z8*n0?TfN4enI@y={D8zOE22*Jes$we+(TLi2AHF}4H`SjvB zU9lpCY2VwtU+#ML9XX(SOS0m-ZCaLjk*Phvb8a-z0Q0^1!nc`oFC*!m}ks zqTu2z!qF3X`<86fIHw14G|olNZ?I2S)SE8omrv-amU%O#`dKy0xIX=pAMchQ?X)M( z=%~A{oG`gh;ZXnjtjRZmQ!^Kf3{Ygf&etMzK43~kwm!-3A$GIgzN)_>sD)t+5Q zbHU}X2qUqr&9)f9^BP0ls}@a{-&j2$m(6eNaNBN;*4v-jEl&)ULaR2 zj9&s(18hq&j0sSzB=f*A-=;@m%zuD8JF-I-1@}lYB^Y=%+|hs;63(%1?y~Z@CH?fp zvt(I`dwtWK{l?sSryk6}iAlCUL!y-ef9n&~p z&kTH1&ki&)A~x%M3rb(jfDCQF@TJD$AO(zW5dco7}eX*J9P2+@=x~2mAcrh)9cx*^bt#cm0MCgc6m_G z1Kg#j(Xk0)o#=+?s+pbg&FdD)z_h5TX=4h0ZB}rz(}3B|s`M2cROCNye(*+TjB+hr z+}$p3jEpD1+Ay-}VPi34@EYl3dWa1lT#Mpn0k@`?=&?-9m$?5Q(#@0q89prk@WS5I z?wjeiE0Q&{r^&Yz*xo9g6LTsrjnjg4V7wH41qZ=Drr~$!|5AOSFpqM<#ZUyePzE9o z_Jx^wiiJ#Oz49j({h35CWY5oxRS*7)A_iv;g0G=s+UO5tsNBpwR}rm>xv zudy_gul59_D!6Q{8jlY%SA$m;#*scD$AYU3>R>G_5MRHhdB8$1_ofLFIqad0);@+f zdLF!(memuvt1Fi~a6CQXryFD*cs}`gl*v)c$!PD=d0mr_!t-^O%h{}>Fh&5`k6g-h zr^x@+v-0;xawGSH^I3_D3jtuSf@i77m~4%73OeaUor|$JHfyd$3$G_rT)xe;0``N* z(eWl{{fDiWPU1ujj>oSdG=D%Bk(IhHz(&A*nJWA=UuJ%m(@1b%wvx~>tankr`{JV4ERjH$$vrdsYX@7-Jm;J zFbK+=VQkn3#L0ACf=(;gIapo0ED8BVa_Q86(;j?_BfM z_7dnfxnbb^$0Mm~R2AHd^bs~LHPTr5LkDvBfze1a<3nz`XrNs~A`RD)c5TTg$<#X` z550LnHaxIJez@JvQB-p%miL-I4|D{*AnH$Zvk&vE1r$nJ8YGa_Kd-N|@DYDiaG~lW z`dHhBt3@Z$IQRH6%lK)KX$+mQy0%DA54n{Ozs(t&hlk|z|G86e&02r$3H!Zj{rz0)l#LRDhe}{bG$+wdy6Y1RSuji7JL+mWt z>N=S|p(gwx_vIup$rrg%A6Lz(97$z*j2D87O24yqmhKVQJfzK6BG14wTP%%6lA|tV z@Yu&M139FyKJuCN9eo#WgGTW)Z|A=!wpF(o2a~_06Kb~KK7i>!iQ9`ORluVbstMf1 zJyX3o#^yjBEUMp^2~K4 zyo?;sH(s=N7z{WUm9CiYgD<-hzVwk5{Q^8{p~92pRDyllb^o$CxpQI~xXn?#eDZTl zhEpsPD_=H0Y=OGLv7!E3Yi7!odPWyJZ~v+fHNT?UpXdm7s!FN?ARCZn+Q%K^V5xc;ye}(5P;w!k|dP;V%gV z|IlLj#YOpt;lg2N!`&j>OtyeQPaSsK|j#fHb48skhfcv zb}kDhYm$fMnNE&QV;Q7T1_!0{F;x&yS$7 zu6#vLEaFwBGmWsZ^V!Sh$}PIl;{|b3&1@OCv~sULCcpEkUGjkLz2Y6P;z-kusSIW4 zpbQSm)(;~+Jxzq=@xtJZ`ikr4E}y4wWH#rhlv$SjZaKJYa=T6yU;o*#+^-;y>%J?T z24$y#>fnT6n-=#Sf=T_jtopdVmi2p=%#kH6m;#&yPC8}avdP{0h~_)`XG|W@zcjZc zIbxKa1B(_Y>Tx{X88#s?O=P(qZ28#A0l8__fXprVN7q~%^+~53T;I&+_4MN=-Ozqg z|5*HM$)Df`&}p#4NabP&Zj>&M&RL~LPp{Db5pjb)HMm%ht)4DAt>F4jkLZ(*r-ly7 zOM284?=HMKazwT%AJ2UsPV`^NOp#^!ssN(%J^h{XKHYP@T<@+1YJ5`Qx8Dl+i~%># zIs9K9yv=h^|8^vvk>Opo8T#*Gy7ic8-f{UnU8g$zj0g8r1Jca)8oz;VrZxZ1be#pa lg&lep+_T`e5P=q|{y(2aCC4S*sR#f7002ovPDHLkV1lGhHTD1i literal 0 HcmV?d00001 diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/T-Ipad_1024.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/T-Ipad_1024.png deleted file mode 100644 index 31cfe6b63156f4e2eb176047bff65c895066f8cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43316 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 diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch100@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch100@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c93a66260768c208d4db33e78d35311095c3c4f GIT binary patch literal 6551 zcmaJ`cQjn>x*uJ1(fc6L>zH9?5X5NFg&^uMqce=rdruHif~XO_L`?*P=n0}k3DKg2 zgs35+%a!k(@0|O`{qA0C@ArM5_56NMU3))k?S}?>8q^f*6aWB#T1yjQbhV=X+~lNJ zPtTQfQ|G zcM0Sl9SMJT&nq+lprGXMiL`e`-<7BT3c=m;KeQg+|4!3Y!X*8Xo|4iMQh!4FTTxf{ z|5tT)|Btpe&ItWqfB#QnZ{q+@w4@Q*8{>nuzbc#q{~uGHa8)cCiNj!xF&MYMvuNOi z!C}0eFrGkF)jwH-0flst_Rb!Egu;KJbamlc9^N>lhdo*gp~!c|BjN0ff+OT)!Qk7f zDlmu?SXx>Q233K|z@WFGD(Wgw6&Y#7-&h33-p3v7f%_Ya`Y-nOKVtthguCaJWds`Q z?2AUJV=?Z)zXFFl|FbX9f8_f&7WL1*!2S^{dF71cpYr~%a{n#5>Y+c||1|H_;Xmz< z_PFYK>{WArRV)Jn0L&y>2o+=h*)1#AWX5TqTZ+4Rc{41nTMcbIqKN2lP21j{2EOMk zni*@xZo>T!MQ;xBhHe<9@ZWr00zy~mT!(2f-5E&FtcDte7BeP}@zYDF$pRz%wd#P^ z=wg}bwt{>e9UUE7z4aD%@;>L!HDQj1Bof-1T+Dp&O=mw(b`-zKf6EWD7z1zf1Il9u zWa;nMMuxBcQ0mgM(s>}u*%@Y(7Wh<3oayOgSFcN2xDFv`1|g0sxuyVp(bdw0Tpz8F zDkr4ky{ScAby|-Q0@N1}G7(T;Uj_`7liwz}ymd`8>;73Xg`iP@f0Za@_3?oLoQw>| zxEIwKUda?n7#ay(BBJ0pBBwzRdU8cJh;c`%4baUSu*Ad+0Ko{s8YFOb?vawKK)kX> zAhzz}9Jtl>O#TN^MecLY@s{Uq-wy-d$%Tqg(fTF@NJ!PK`yD_DGRV7PXUXRcxMD~3 z61q~e_YmDhj<*3=0Y$1>tD)}4qtu;ml6b=t2bBx*IYE#S*X%~j!^gs;W&!6Y>SQ|t zGee#TT^W((*KdV}lE}hZ2~G->X!W11$Ax)t^s++UJ>fBYI%CL~WVbyyjfh$#;4Dg+ zD8~E#b-LwK)X_{)b%}UvImln zDTa#aoga`aZ&If2ZC5dT(IR|Hn;do~L~V0xmh8jBTZMd`X2~!QhVkGEzcCRT*H;?~_?!&*WTQt#p`L9xJCf zPg00^kgIf=eft%VzL&P?f^-q{TqA5aGh&|F+U2t#F<=8T4%EvikR+Hf9R&~1gmEThBIDX!ZgZ%a;07StxiMezhsyIW2OU3T0{Ca#5JR&Xl za@9Y?Gcy4t_%&v<;a6kA=}RlamKPedN8S8E@-rVrBQyGkRfMyPqqq&lG)}%s=kIIO z)S5kU4@RwmYBjv>C{H}wPEl<)RWH8moU_{76*L+$H9)zUCh<91&Du%`!x-mb{>16PV0jfcvzfUHjmvv0eh;07BJ>>0^w^;6-QlG+Tn*;R zEi0_2HSLmUpA5yj1aFNj48Cn{(CROVcxf4!3L>|l_1(ZXzt9W8I5OXB56(Y)Qf}wf zkp1%H>j^WmX5evzUn2X(Kwkoy(V`913z`ht$t9K3`N36oe8jt8PJM5C$F@B+HAEY&_7iUMv+%e>82{_J- zW}fjT@}1&bNF31efUtnvldJ`tAzb<*x+dob@oL{<@$$!`yJB2M%*;0i8t(Xvhpz4O zS)etisW+S~0UPftJQpK8?AcA|m0ErhwG30-LHy)9=!KYDuNtkc72Z`PXx_DLs;QDD zTW#Gvl)f7?WOt+5cKAdn9vaeRucE*M+OIE#5l<6p|Ev+VYXJ}ESX#~yW7V=Y#(f|e zVhI#<89Q$F(9`_2C&PJ(AH|;Vv=kpG#AG;r?S(UzrdlL^iuEu%t^?CUWlGNR`9c&0*RYg285CKM1MhZQw=AXir#!#(q9)lJ;gYIY%3`j5RNadDoO24}YFb zG88Pq-_5>WPSaEL^2^@IhL@QlWUzfdu7dNG8^(S=>3cK?Yrdn@yOQ?0HRpLtcjHc# z#vo)@YO_?Ry5?c2p_-myih@3Is^X)r9MSrIwR?gZH*fX8MJ*vs*WbY92spC87%_S!y+ofG;rJF9e?OdEx}$)`CeYG>z>2TI9l37zVt$S=+s z%SIGGGi8a;a4_wD3-fBOkq~i*mzP`k{VZTCTWueV!3Qz>m@z9q_|EOYGfA0g<+vVy z-6xwfeGqJ+RXL8L(mF^9+im;OZvo@kt$Q+8Qpu876s0LSE;Bp&X z$K#4RYr@aZEwf=w{+(9beJW$WCSU8jjB-8cQLmOz>pQLsdoXhBN|{<$$xBi4O56BS zmB-F9zSwR4@{Y;L3zryNOK~Y4tn6!u%z=e1$;MP`9g_~%roDy`M#3qivnr&I$Igk* z35=$`4(>DROt3RvaL4z`Jj_=U9x~YZ&K}tz)`vQ@9i97_)yK<%b5OZCto77KA0+S| zs#zM%2}$}iS97OZ05{p8B$}l0UOw)(VOTy1Nm9d)bAITV4!Ecl-hkIri@r_XzwAL= zBxh5A&$fUR=%9HYWTjk~0XuW6Xo!E!&XNbC^$2B)obTV4cOY@~Oa)whf94|xz}Ah$ z6)%%ZWj^vNnm2p7O!5F*nSm^5DNEIAm1>#e zne!6~rXnUQ{6i|waJp>kt~xpOx%|sEC1oM0Q(K^oPy{`-zTkw6h=J)z`-3;7oNRds z4jXY!8M1a@@e~J7H~CTO?pQzgLy-+-rQo{^=iAs5ik=A+TLb&=8OWYPU^TvTEC7@@ z?X&p`{)s->o0!zFBRr}-rLxcG`Uv^TgKtIV_oXEX7AG%MIiv3Xc6-P=^o6W-iRba5 zG+{XHMcMmJg^1@wxA~)ueoP8;PUmS#;5`6`K_3o+Nvmb(e})M?@uyy%J{Sh zn+v?oi@J5N7`+3J22emuJtxU=qbB=1K_QwG5hk<8MN@PUyT}_Cfb0?&+RRdm=J>fE zez}EzVe697oc8PT4-WRFvyRPLR7-k>-JC0_dcJVyMoJ~%M#7tZw<5hmg)CEL(xKJt zFYL~itb> zmz}KYYM0qVKAK+r3l-OK&m3nG5jVes^Nt8Kvxg|C=aN~zRWb*vWzX!%*XVT@nVNLr zo!2aiGSyqSOAWm~u`=}!nk|)gPq=a{StMMr9QdJ(*Y(f|f-8)f#DzkRju$lOtI|kj zmOvK`CN*K2rhbdi#?>1((ouJMVw>PuwFPZV;$;H+5h~N(a&ldz83?UuOi>bIq6t4R zo}0c?>`AYA{;Hl6_`@@KTSmj1QiV)#nCnLNt@+1`v&58DgH0njvN-`;%5n;49<;3* zJ`ZLNzzO9xZPnM_NC_J5ha@qqt(gm|*%>=Up75mICZk>mBq>f+E>IZnpX7kn(KPxS zKkp`OaGB}!C(`KA4U(*HE(95y4QP+yZUE+{AzceHU(hYnhO;*4r#_WqMan6fr=-xY z@=~Xw#fRyUT=AUkqVC?k>JPf;UWIETv%5#G)#ZC$i1PH@?GGODFK-s&c4Jp)=%DmC z-F-QP7<(YYBha@JZG(AgEh|;d)mv_Tl*j*F`W8qn#Mb`#y}YaP5%4>fj;*}L{6D$XZys8XOMS{y)p_@+eqELeI`7s_p)W%v%oe| zc-f38l7BO2d3JXHwA}QNGvfgyU8+&%-49r5==ko-elQ~H6b>hkvivobU05n?W5hRH zVY}K^l|IF-ZtD@kC_7xP?8p<<2ca)-LVFzfp_Va8N8Oaw?N0D=$7u1Ro-+ob%4rs7fUK$ZYV-=-)L_LKHNyx#U zdR!=-Yh3F=T&jEAX51O-Hwm01Zx=-pQC%iIqGt`HaRt7ItAe_pmsh@{3xDZOev4;g z((m+weXBj@)U-8=LX(O~H+PPAO(QB79OX_E8``&gIn5d&S;^fho|d%X%`~{K^Xkb! z>eFsWl4Om<^Y19}VK?*lww4UJpu5eHE3##-&SK2?Hxd-~Gc@B*e3WI)*H`pg;N+d` zKl2I&bVN4NRE;&B+$HIo$W5`DX-NN%olf7CC$&`OLg-S$Db(DJ3HABBcUr00rtytkd8Ms{xBE!Kjdd4KlN^njPctpY z1@ctxna2Uq^kba`Uc$i zlU?Jo;V?uvaa75`8ZOY6l{;HB^I-d(~yJzI+n-s}02X@|R>^1(C6< zH8bOBbNb>{C0R`TXOt`3X}$V4G=fS1-;SA|>{|Q|;&#}AlI{8qJjx&fS2k3(Mz#-@ zu*Ae=?cB%#0}oPpk1e&Ca-Mq^wil+?Sx1Spbp{+28&jQTyiU8QTkRO>ew>8gwQtN5 zc!RA(+lY<5B>-`a9YgY>f>?~N22pw7}@e9x7qr_yw^r-HGg^fib5<8Mk^_8ju^10^TP@5^;BM~pC%od?AIpkj9$^ZV~h z^&k()Q{FfDb0ze2BD71;3Ze^XQ;h|fnV=VBUpqWWUvqws{e_EoYH&ChD<| zn{#cvZ9whl?U)LF|9;L^0FjKy^ox)mVDCsKmC)EUi{POFK&uHHFR%k1K)h^GZLE|e zv|8khQ!gI=jYTHwQonP{Q8n?yGboSt>Ox_F@i zyE(CIgn625sZV%)ddb~L**PiK@UG6Lb^l^-q`|B4srNnsQN+Vv^mnr!ZVh@fC3bMF zt*ckns8F57TIwW|#S$-J!YT{5!d0nIJN_)Pz7?efAa>4n!v;rze&-N#v&QDPw5*>) z9yD$@*V7jWkDOl+=V+LL+Ly^Lf#OKo%=?NrCC5;heI7`*2fP zPF2^nWozA0L$@0rQMkqiBD|&ohzYit^zQ!{@f!$orfJX`DEYBgm;xQr`S=y`s61iZ z25*(&Loj#mW6y&2_ru0uxCTo$havv+7w$*%2e5aDi5d_V=0hg}+h&Vw&G^{$`r{!w zD^qyW;at=PMvLLuAudm1bjgXgqv0{eiskUMFxr#Bsf0`=Dx%u`WHYt1_uqU#?{ZDp z_Us3~ZQIWd+Rv~fFi9U(3-tME?Hj=`fId24d|!}N=qS$5x+Y^j5v_r&3E69QJR=0Eu9f5 z_Y|fT=r*}TxN|YVHtl!3>BHW1Foa@@6G&3Mh*(Yb#q+We zk0pKP#NzQCyewIv z_5Q*Ub;Cd+{+DZF+;UBf$=-45eX|ADC@+u9qr-)2))}QAdMs@SNzt95x=APj0~I5A z_`Re&4ClQdY7R6Um0yZj_C844yVxx2EX*diER~hE_6)mT@k4Tis?#PUIdbwuMbXH-3C4+bJS*SRof^2-C9Qd_7n z5!tMaag4#I#BsB}!OviKF$?aQ*imMSWE*zbuN}HF>R}cfG3dMYbv3-CHn}*9pE*~Zexg3fvfJ*wOKsX})U!3@7VoWG>w!{CnNHvn z$%FCrgf%M4*>6X+!Wsa}kV;0_#Iv|JFDTfE?En#4Y~eTPqbX4CUc@CLg`Han&ELP7 zCTkRwZ!K2~N>xNX{3t+>MT}~=CIeqrEf0i4E8?$>#a4)&afVh3`bhKM-~CM~1vvh3 WQ-nGXSN!K!iI$okqUN@3|G4MQJTukZPt~ugtLmAa>8Vc|YKl0Ruol?d(%X3mEQWx9%mUFda5GSS1GIoTaGC$* z;qr2DdX`2&5R>$BGPke;yV1S}TSFYh>Caj_=xHIA;`I80sywPrvS1sCl8*~m+eb~u z!pF`6U`a12K`Z73dlP|Ah;DZvP$TrlFE0U z9|SqDtAz{1$qfQ^r2UI%{vPV?CQkos>Hkc@!RbG+j;{Z9)3d|4z094sdAWH0PU#;; zRn`ALtAoRTxLw_}!2fIS{}b3%$J+_atp#?4y1Q6B2hQsCUsX;(Sr@Rm8`MPy3bp^o ziyAgiH>j%()QMJB_OI6fv@ELT77)k3gRK9OQdI>iJG#1=J6eF1<;3ZqakwB5OQ4*v zkbr=UtUN%FM}U`C9v~tu!VeIU5s_Aq7Ln%XmHS6l4r<}<0CsfyN7nLxWflIb?B9fN zaC+7(2X=vYfGrhVpboVEnm7>h-))iouXz8Kwfyh4$o*GY?q_4T|AzPf3im%l&pGtB z`Jd!{?))eH!H&;4@A917HvCFm2ndXi%5u^=UdzYtFp?O(6>EM% zPWgScG4m!5A#XkhEypS{6z7-gb3d_0;`a{nJadj;=iM{SLHbuC5zipU?-KE72D{+1 zB=S=TwwVgEg$ONW6I zkMNYWqh5q(uwN3$7b9NFAVH?`{%Vq_h4~ebS=%c>0OS0rE110?@o^t2t>!p4qxz(L z81+QB!HsKxlAKe3=vT-V3ZtC5>XH7ULD797XkPEC^DX5!Mb0Ztj;=;;{-OL*h2ZOm4!6f2fUJ4HH=Nh z8rGnR_v;*2@NwV?zQ66gDDZa@8 z$=abh8W_aJjm6ysW#RnXSQBY)^~E-7-F}~kQ8@J(x6lK@Qr@x!pmznJ`m^yX67MTvO^@-@ecURqpZkJ{laovZ6s+{4pyDM&pJiiIA|$33Euyu) z;xpD<5pQHQcWE!@pE;0_AWh90jBI_cQy+C@Y?QQwEfv)y3cm~3y*7Py#!Z>C<9$dNw($2XV%5M+7(@e9_xvb5!Gzpj4 z&&ShoL_GGI0<3Y(o{oCR9Cyt6SW;iQo9E^5Mo8}@g_V;9d4AAOX#CUFanx(*=WnI7 zl8(4oE{wZT>nW0HnO%w8bo7M2&oGMF$-3S1Wteob>m zvR77AqJV0~MBn>^pWULNr;@gFOORLAOIOl%hn7lZ>&v>k#YwF5ghX{V%CY+IQ2(u4 zbh(dI%6eAy6Efcx!2BuQ^coCU7L@@{*xSjo9DF$8$Oc#6rN6g;7tt$-TOP*DEA|MP zj>>hV@l8@)&ny4|jYv#82-=Nd)+CHo1KzOaBJXOP?SafY=czl1Gl-nYw0X5Z7(p`7 zLPJS6QXS0XSm>uVGMZ1DI9kP;4lP~kAJ;Ka-nwC)Y_A~CA{Dv^R%AZm{qUFA3W zog~R?E-g~yN<^i8JMPeFGT=V1*ofU?XK_9BYEnqP)^6a%a`tI@W>DL9C7oEkx5k>w zj-UTtd|0|NEt`;_Vr}3(i^PrA`gf$`36FvEw$%IJaLR}`2TkoZgWg56p!+T;}1SW6?*HLNcu&@Ps{Q;b2{wO>$YUzdy5jDPRdpT16uGDuU z8{~9l7ou|_que)sMIROfU&I?U-cOb&M(Jk_CoV)AXGk`)FhzQLnE(8-bNHiOgVXl! zXhA-QIf-f65!tPOB6rrSVEUk+! zIDH_%syCvJve^FN**(B+JNXw26=z+av2alb5Pi>Ld2{)hlFr?PhRl<;^IWwJ%XV#< zfNqWCD(h!ghcBuN(Quj08@`3ZaSUwhU9kGT>4n#kox4CzJ#M*%EY}726!z-we?8-t z+Y5f&T5rU)fO71<>wKJP#LxBAs>MuWe9fCkF%C`=Xi*SCzDrI1>@;O zsku7z;BYR27rR9DUGSoa!dc8qIZfXmY?;Q-RKs%huo)5DLR#E}2SX(^kt1 zwe1afRRgxQfP%A&Kba;h3i}}L){&-X)d&s6t0#DC#cxQflaAN#T4pvBDCc&ZMRKC(V|ZE9Yzpn` z$mRIUEKklrr&Fig!s6EiH=)J8HSPl?TP)`nyDS<*4XV=u^ghlHbKM|gPdPwr`BxKj zr_geo1|nWXt9~bpVTe}qT{zDo@d+%oW+|*4jsvmUW zh4VaGLd4sfng~c6l6Kvdz1fR6;vSW!LaP?9KzaqI%3|Z5nIL)5s5>*;r1-f8X|64$osTl8QR<3plN9`=a4fU zT5>EdDdO+zO#B#)+)$}B78UX1JSB8XjAaw6w1()4EeAM8iRuG; z_r7^wN^%}l`J$i0!_a(Qv{Iz2+%|!naOLsSNZAF>V~efkg^@LG!ku((3@GB;h1Mv$ zG}sKY<22HI?DB96>E_b|p$s0sEy$s6V1idjnM&={ zA)TpB0Y0aHY=%agX`CE^@KAB$zbT8xDly#{?7;-;Oe z^7eqVV24N@~wu{%IPjwzA*RIi!H>PrEKNA zUZVq-_t&mOB8@NWy2~^A->gWK${0sJdO-vq>k9~y=_YRW6DQOra2P||7TB+b-+HHa z(?!90s)~zR4(Y)xYaI7Cuffd)eo`hHfqGH!1k*q*`+HI<)2M2v+<>}DO8#J6wZdLH z9u{wFlLBe6IpI$jRRbwYvlb4>DfEGjKl{QS%Sf0kfWG4bV9}KaEO9gpg z|F;K?&Qy`ZsVZvNoKtY}5|nzowxKzs)}V$; zzc#@nBIfO&xkwznHg+p-W<9nn-l%nGXL*bJlyVMKd*?-yy*yQRdj(FZis5-5Shp(V z+6ance!&gA*vSm(EcgHAiJnOaWqPM+$IU$tx9UL{^X7}uzdJdqZDiy~f4wt{&6;^J z9-B82dBL4pIDXSS^dta*$Y*GY$+^C2cLBB8Pnu{I3gqnLz1jGadM}r^pYc)SYs%b~ z)#GOo`O8=q<-Sb)adyBrxo@Y@w{KXS@mc{?-|X6>R(=)GiNyp(A}h>?l$fJ zAg|byib0FAzW;rtiu@~8_2C0e)$0-TRyj;=)2Ubs+bsS#_XJ!DCvTIhE`*#T{U7Eo z6g4Z#RD-ZROIKGbQU5(mqBVKhGyhNB1y(} zp^8Pi%HtiqIlA&dYtIVc0gBe;&8(vH2}H0dE9APq=tZRJw+^9?H0^8Ll(?#zwc0U} z{9VYD75X#>$33nZ0aB{-<)6L7kQefN_eF=L+mShN!@eWhbIa58C8Cia#l?SD!F*q9 zlfY64g$TCSRD|0h^zA?NWh;NV*TUOkoNHe&Wlud{#tRSt9xH8quI+cT1qA(G(ypNxW)yh(fad zqK=e%_Y$5e?}1$l1>yrB$ln@$y&Z>@hL9{G`e#WA6o z)b$@y!RIog`uf0mk@WsY9fY+8W3m4HkL7jNzKEWh>q@D&bOwV&!BYbv0vK`DA!k&} zZ7jv*&q%oWMAc+g5`^#`GsX^y9LYK~5${gE`j@?lGhMb| zlgc2TeFH4ApqjqZDCSk1?mn=hD;AUNIte!q=d2i6%PMSMQ7tooARSQeL$GG$*%l$n1Qpj{E zJdxsi>SLxtG8qyR7)edCdNP$4L}M}mv8${Qo~g28Yf$iLcqn2&tC$oxl;1qg`-)pb_RX(-ai?<9@s;ITi*E4SpO z5wJ2ykduKOMx+~Yv8G#fTL-MCaHRP%D+hTs%09D_JB@Z!T%q1?h>qD4bjkcFDJqCD zGu^p6Zz?f88+S4qBN(>=tuwjRsQ5q`P~R2+D=_pb5F-e^l+&k7tvCa4=(0)yDw{ik zl%PzjEmvjoMea3UiX8bMswKQM2OLLM1lQ zRlHfEG-~L*T>MR5pe=4%ui$i&gc6GutNwPPr!P8fEpr1Nx%I{2e~I zRlP7Qz!5C-V?QXNXX1MHmK%C)ygZa;gytmd&cy7Wjfu{0MajI})74Ug)Kk8kRT5>J z`6z`K#jr$3VznWFR6Zqm)fx0IC!Di0B_5!{*PL!IJjj4mL=aXK8hO<}Orjoq4Q_A9 zxy~m*mWtQawH4=GZJUygLi#Rh%j5pG{3!2})z6dzkz}q4Fki;)DT?w;# zpJg;G%Y`IVXft$RFPt)N&k6D1n*Ek%8Tm7x8&q`Bynd3H>Ho)Vg{6hcQNv0B>a?N! zwDQR}TauPR$3pJhvX^~~`aJ9OkX za`Bw?kkm%hGxD;p>ft}+Kmgt=ApnYhCcPS3)gT>#^dNMjI}y08rEYnoW|>v8;w zD()Uutl{&w0hjIdm6R&)L_V)JgI{=dOfxfBxi+UQ)?1F+NwFS{ch!1;*&PAHqD9|Q z2Q~3|B9~s+ywO_DcWSw}ApcpKa};F-t|(W@B|MwvrjVBwB* zWJ*y!wGH^BM+9=eO1~8deaL#{-cX^ZI+C1blVsX8%e~Kynx+k*{4N+?4W;N>7=q6d z^&K{18jEyb?@w^=dwnfBu;018STKq>AH9Fw4V2c>tyDJaFGs70GoFf7r#axP8Ls-B zMs5i;H^HhxN@YeH?Cay5HQvh)Wdt_Uhh~+!ImU?fq&PP8MWfQM@>R$^X}B4BQrg`{ zTW~5T-|^TU<~KQ;q}!8=hO3Mc{<7Bf6VoO4wxA7;@f-PrLDS(nkv1vKij~XurLD51 z?1J6wp)VOLDjUygOom5!PR;Ek=F4Epn1!DZHbdxkUlsbKklB9XczmOi_U|;>6A$ma zlW6M6vh&Rg%AnUF7Qd!$@He*@1MFnB0-MKnljwsPE<6j_`LR;)d_=b1aDBM_I?{%r zXHKU?6=^f#YZAY2AWF6oaj0^|!em2H!>oDL6l7@(Z`61RB7rV)j3k<%ya7^{b?B?$ zYT6@RsFsBZktDy}NfvW@jqzt^+QZKgLJSAJ+eT|J!^+Yx_&umg$wd0&cT4>~z75or zF}IHk3xgKLWzM=T?-XGv>QkDD_PUGWt*`E|;p+A1bYcWy)5-VW2Ch1S@HgBEVF+ka zEaWLl% zaF!AU4^qe{bF?a{lU~c{ zIf=Q1p&1T3>tz0N_%xDExbuFC<9GRMG%=96W{R}b#gRcs(9vVfh8hEO~QWR$H|zeYyjizB7fN$s`9_;}Ltk~R2J#Kk=`)p)djIwO8Pv^QBhn%jd8a8DVrf~Vk2&ztud zft;Vb3B7y6O*5H`{h+>u|K9J0FH81dL5c zq;glVNSKuh&-F2YOB<7^Uh<*m7^hh1^DpCPoe##>SCUe91p03x6e`{f(nZ1w-&uep zmp)*2G>cW&BRjcoG$E1464eKOuP?lF>a1SE0<0N5WWB}1IN79I5H!EK{~DvKivkoo zj@vwrknBx0WzDMhkBA(Fz1i!=x&jHr_hzB?du0)Do`1(eUc}0tGSe9(3EoC7| zAe31#FI^ZX?1SsZca`asqsHo+mg<#L#+vD1c7mUK@Zko(8G|FKHKVSerGjV-Zs94?MFpxc5cDjh{wgD~4l@qqm)w^4~n-_1!f~nMl{` zI&NnJ24E-EX!XgB;sVv6qJB_SYomTB9N8dWa9|eG!p9F6)nkQD3!g`U^wOA;U*~GLtd^hc-mGfmq3+kA}h)`o1yi9?3cx^*+{pLum!t1@{9dku7 zb(?5X=gJu#;#~aky6&+ztl=!DGo4vLgzX&_I>*#E<>3SzEj=8{#e7gDQ_~pxW+Kv7 zbH@2iW{6EoAnD_-xZU(klly8!WSO^>$!^sFYxAqY5Nm*`&#ZH&!ta}(=V6@mO`;CB zg~OoGV?X1sxR-1yjEwg2<=TOdM_fuB$Gym+19JP+RDFq%FOQbr{JawJT1G9dfN7oY z_QwXc*!GRIm7{C%A3L@IqbdQdG_C8@8&MkZuzJm^I-c-VNi&X?ljympHIR5V{Y6i;~bJLtl9_vm9`I$LKhCrn!L7%AF!}@4pfj zpJMOy3In=)%acyDx<8Y!>jqHt841-?)z>9B=rDcom0bh%mfv|BmnOrOT@My?8d~@Y zXT(*+s$JsHnN$|6p+7o*b5^;PP`Y#G!?+5KH;Y@a@X0qbs&RfrQVnfImgB*j{X+cim<6M~M#IScI8C z<7_y?fN%L`oX5Z&d>9tNr2Xq**h9GMFg96A-A(IHM3kZ2(RKRH(B%;Q2PNW<+hzP2 z7Z;5#3mxO`$x^UoQ+IRABU;I8Jp=ZS$1|e{cI%Y;cjQU%xW!Nv&0O!?IF>>_t)?z+&QyEp;DAs03kl@tll%6)Ia}sdIuwe5d+%MJh zkg?OXisJKl(pa%8^teQ4jlc;sJ0G2pZmSJLw<8y=8cM)2Y7UWGYr0rrrBQ6jBJupz zy7@e$RRDc&SdK4~(@Yp=Q+q+v?p2h@!k&ua+(t@Nv(NJn*B^CS?fiy=2F&{Yu@|5t zciM0Zb-P}FYhhAT2d=QH_M1_rFMaCCvsEmfhmlKb>2?W~(Sj;vi4~@do&HARv z;a}@21@_@uR6Gk$&R8}1CRG^;rIRX5h7zC6o90s@ECKz8>;y7=CK}4j&s(a0_QOk-nt#-5!IS@s6N&2zUY^F7MIv~ELOY`Yb2$m;LLfs-n_v}KjiaSWgeB7 z?9Va5tUPG>$b6QtPwrKEtJ-7_IGRwYK5d*VGX1?cK&A2wLc+|qN~ZWGRDiU{K|3! zjy{nY(P7k}M1)^}{T-5}`C0Vq9BAqt#{5_7n0`Y}Trq7gM&ck_w`{5XEF3@g{+{OV3cUH0=N*c*lQ0i!$c|pn0Se|h~?9yriXnUP!X2S zWsRcvMg>8>G0b0l2B6`QQcDmZDCy*0yxWeJmd}_FVmye~qHYXFh!5IV<>yDQk>jRH z>!hh%VRq?#QJ<8XD)eKr*vdHrNm*2Hp>f(Kn4eEx)fko#_C}|)7tS_U11=q&tH?3^ z9y!5L*^Ql-j%twHe*PZsbY+o!A78Wno{py^A_5W>-V?@Fe^!hk7*cyTpHf7{4m;rF zV}!KitUGZ;PLvl$!({CfHa}=*o-d+a?Otl}f3#vU`(y$T3FglhMX;wxx$o3MwvfE; zA0=V}f8>A?a6d|!NP>vUgP`;~ViTclgKPaZD^JIT4M zD(h}~IQDMZk1k60Q{<Sykc7jSixJIJ5!qdm3pJ^6WA(I!qo)D-qu;&t~5 z4VgOteULE2DippaY;xC@H1V?5s3(Gv#Jll)jarcbITC07+^kNrlQ)uFP^Cy+*vgwB zzqmm1X}t^LL~5HC{nWZn-pjpCL$X3QcTkMC;UI~? zG8?5o+!ei^sS6udlockCWzU5RLe092Y_5DY7EKK zl(y&AFvOOKd#;cZy+X8PmE38eBw%YrLE{x+H^d@VF z(O%Bbbet4ZN0Lio1WIw2va-KQ5JRad_n|S_-bOXncE#ZfAX|t?TPZfPuzW3?DZ1z~ zx8ucg78Gxy$g2Bch9pKmed#s{Kseknqu$(rp^+yVYn44>5_A$F5^qXX?nSiDN7BY_ zB-CZAKrT0hQ^F<%?(skpX8swiLDw|U94n&VLDxg*73vayDKpJ;-PAwyxo)cXmC}yL uIbp6}2Cp1G@%^T6i(keofx9OpY=i<*3k8u_c-r3@No9F8xhfg65B~>ce-L;8 literal 0 HcmV?d00001 diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch196@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch196@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d3993924776277e387e95be06d89fd0362e5a6ab GIT binary patch literal 12834 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 X*434RHN;hI{W+K!TVRThxCH+PD@?hE literal 0 HcmV?d00001 diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch55@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch55@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1de47d40c7666f3324238203b01515fea8bf2575 GIT binary patch literal 3752 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 literal 0 HcmV?d00001 diff --git a/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch88@2x.png b/Watch/App/Assets.xcassets/AppIcon.appiconset/Watch88@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..71aaf3fdf0ef1a75cdd738f448ee76dff7730008 GIT binary patch literal 5674 zcmaJ_cQjo4+8(_Vg6L#Ki!!4dW%L?E@4;X&7&DAAdhb1mUZNx-i4rw}XbDlHL>D8X zoT!N!QLdbO&bi+o_kMe=y?^a}p7(jn+H0?!V4$x_Mb1JF005}8wbYERM~mM#De?8w zD;q3vJuv&ITlg5GoPGRZ-f)1j6UqV3rHzESz>VNArvR@HaCrcLfFEIE;bWnvE9;0t ziokx`h+vWEYcv2LuZTs%9NpnQTn=y-gr@><@6B5v7s5#aXfCM-)l0Q{3z_Imz%8wBL~)5OPJ0r+oG7J3F; zswi(bm!yc4u%oDiB$qTqL{v�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 gmcP42UEQ AccessType? { switch state { case .restricted: - return .allowed + return .denied case .notRestricted: return .allowed default: diff --git a/submodules/Display/Display/ListView.swift b/submodules/Display/Display/ListView.swift index 14212245b4..b1b42d9011 100644 --- a/submodules/Display/Display/ListView.swift +++ b/submodules/Display/Display/ListView.swift @@ -1177,10 +1177,10 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture var bottomItemEdge: CGFloat = 0.0 for i in 0 ..< self.itemNodes.count { - if let index = itemNodes[i].index { + if let index = self.itemNodes[i].index { if index == 0 { topItemFound = true - topItemEdge = itemNodes[0].apparentFrame.origin.y + topItemEdge = self.itemNodes[0].apparentFrame.origin.y break } } @@ -1194,9 +1194,9 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture var completeHeight = effectiveInsets.top + effectiveInsets.bottom - if let index = itemNodes[itemNodes.count - 1].index, index == self.items.count - 1 { + if let index = self.itemNodes[self.itemNodes.count - 1].index, index == self.items.count - 1 { bottomItemFound = true - bottomItemEdge = itemNodes[itemNodes.count - 1].apparentFrame.maxY + bottomItemEdge = self.itemNodes[self.itemNodes.count - 1].apparentFrame.maxY } topItemEdge -= effectiveInsets.top @@ -1223,12 +1223,12 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture let wasIgnoringScrollingEvents = self.ignoreScrollingEvents self.ignoreScrollingEvents = true if topItemFound && bottomItemFound { + self.scroller.contentSize = CGSize(width: self.visibleSize.width, height: completeHeight) if self.stackFromBottom { self.lastContentOffset = CGPoint(x: 0.0, y: -topItemEdge) } else { self.lastContentOffset = CGPoint(x: 0.0, y: -topItemEdge) } - self.scroller.contentSize = CGSize(width: self.visibleSize.width, height: completeHeight) self.scroller.contentOffset = self.lastContentOffset } else if topItemFound { self.scroller.contentSize = CGSize(width: self.visibleSize.width, height: infiniteScrollSize * 2.0) @@ -1346,7 +1346,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture private func deleteAndInsertItemsTransaction(deleteIndices: [ListViewDeleteItem], insertIndicesAndItems: [ListViewInsertItem], updateIndicesAndItems: [ListViewUpdateItem], options: ListViewDeleteAndInsertOptions, scrollToItem: ListViewScrollToItem?, additionalScrollDistance: CGFloat, updateSizeAndInsets: ListViewUpdateSizeAndInsets?, stationaryItemRange: (Int, Int)?, updateOpaqueState: Any?, completion: @escaping () -> Void) { if deleteIndices.isEmpty && insertIndicesAndItems.isEmpty && updateIndicesAndItems.isEmpty && scrollToItem == nil { - if let updateSizeAndInsets = updateSizeAndInsets , (self.items.count == 0 || (updateSizeAndInsets.size == self.visibleSize && updateSizeAndInsets.insets == self.insets)) { + if let updateSizeAndInsets = updateSizeAndInsets, (self.items.count == 0 || (updateSizeAndInsets.size == self.visibleSize && updateSizeAndInsets.insets == self.insets)) { self.visibleSize = updateSizeAndInsets.size self.insets = updateSizeAndInsets.insets self.headerInsets = updateSizeAndInsets.headerInsets ?? self.insets @@ -2457,7 +2457,6 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture var headerNodesTransition: (ContainedViewLayoutTransition, Bool, CGFloat) = (.immediate, false, 0.0) var deferredUpdateVisible = false - var insetTransitionOffset: CGFloat = 0.0 if let updateSizeAndInsets = updateSizeAndInsets { if self.insets != updateSizeAndInsets.insets || self.headerInsets != updateSizeAndInsets.headerInsets || !self.visibleSize.height.isEqual(to: updateSizeAndInsets.size.height) { @@ -2602,8 +2601,6 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture let (snappedTopInset, snapToBoundsOffset) = self.snapToBounds(snapTopItem: scrollToItem != nil, stackFromBottom: self.stackFromBottom, updateSizeAndInsets: updateSizeAndInsets, scrollToItem: scrollToItem) if !snappedTopInset.isZero && previousApparentFrames.isEmpty { - let offsetFix = snappedTopInset - for itemNode in self.itemNodes { let position = itemNode.position itemNode.position = CGPoint(x: position.x, y: position.y + snappedTopInset) diff --git a/submodules/Display/Display/ViewController.swift b/submodules/Display/Display/ViewController.swift index 9f3c415f7a..6f5ea48045 100644 --- a/submodules/Display/Display/ViewController.swift +++ b/submodules/Display/Display/ViewController.swift @@ -257,7 +257,9 @@ open class ViewControllerPresentationArguments { } } self.navigationBar?.requestContainerLayout = { [weak self] transition in - self?.requestLayout(transition: transition) + if let strongSelf = self, strongSelf.isNodeLoaded, let validLayout = strongSelf.validLayout { + strongSelf.updateNavigationBarLayout(validLayout, transition: transition) + } } self.navigationBar?.item = self.navigationItem self.automaticallyAdjustsScrollViewInsets = false @@ -275,17 +277,7 @@ open class ViewControllerPresentationArguments { } - open func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { - self.validLayout = layout - - if !self.isViewLoaded { - self.loadView() - } - transition.updateFrame(node: self.displayNode, frame: CGRect(origin: self.view.frame.origin, size: layout.size)) - if let _ = layout.statusBarHeight { - self.statusBar.frame = CGRect(origin: CGPoint(), size: CGSize(width: layout.size.width, height: 40.0)) - } - + private func updateNavigationBarLayout(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { let statusBarHeight: CGFloat = layout.statusBarHeight ?? 0.0 let navigationBarHeight: CGFloat = max(20.0, statusBarHeight) + (self.navigationBar?.contentHeight ?? 44.0) let navigationBarOffset: CGFloat @@ -318,6 +310,20 @@ open class ViewControllerPresentationArguments { transition.updateFrame(node: navigationBar, frame: navigationBarFrame) navigationBar.setHidden(!self.displayNavigationBar, animated: transition.isAnimated) } + } + + open func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { + self.validLayout = layout + + if !self.isViewLoaded { + self.loadView() + } + transition.updateFrame(node: self.displayNode, frame: CGRect(origin: self.view.frame.origin, size: layout.size)) + if let _ = layout.statusBarHeight { + self.statusBar.frame = CGRect(origin: CGPoint(), size: CGSize(width: layout.size.width, height: 40.0)) + } + + self.updateNavigationBarLayout(layout, transition: transition) self.presentationContext.containerLayoutUpdated(layout, transition: transition) diff --git a/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj b/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj index db058d16f8..198185de4f 100644 --- a/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj +++ b/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 09EC5CD822CBB86B00292E42 /* telegram_plane1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EC5CD722CBB86A00292E42 /* telegram_plane1@2x.png */; }; D0A25B8922B5C0CF00AD4DE8 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0A25B8822B5C0CF00AD4DE8 /* LegacyComponents.framework */; }; D0A25B8A22B5C0CF00AD4DE8 /* LegacyComponents.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0A25B8822B5C0CF00AD4DE8 /* LegacyComponents.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D0AE304922B1D77E0058D3BC /* RMIntro.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE304722B1D77E0058D3BC /* RMIntro.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -56,7 +57,6 @@ D0AE30C022B1D8ED0058D3BC /* powerful_infinity_white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308422B1D8ED0058D3BC /* powerful_infinity_white@2x.png */; }; D0AE30C122B1D8ED0058D3BC /* private_screw@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308522B1D8ED0058D3BC /* private_screw@2x.png */; }; D0AE30C222B1D8ED0058D3BC /* powerful_infinity@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308622B1D8ED0058D3BC /* powerful_infinity@2x.png */; }; - D0AE30C322B1D8ED0058D3BC /* telegram_plane@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308722B1D8ED0058D3BC /* telegram_plane@2x.png */; }; D0AE30C422B1D8ED0058D3BC /* ic_smile@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308822B1D8ED0058D3BC /* ic_smile@2x.png */; }; D0AE30C522B1D8ED0058D3BC /* RMGeometry.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE308922B1D8ED0058D3BC /* RMGeometry.m */; }; D0AE30C622B1D8ED0058D3BC /* RMIntroViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE308A22B1D8ED0058D3BC /* RMIntroViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -84,6 +84,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 09EC5CD722CBB86A00292E42 /* telegram_plane1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane1@2x.png"; sourceTree = ""; }; D0A25B8822B5C0CF00AD4DE8 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0AE304422B1D77E0058D3BC /* RMIntro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RMIntro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0AE304722B1D77E0058D3BC /* RMIntro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RMIntro.h; sourceTree = ""; }; @@ -134,7 +135,6 @@ D0AE308422B1D8ED0058D3BC /* powerful_infinity_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity_white@2x.png"; sourceTree = ""; }; D0AE308522B1D8ED0058D3BC /* private_screw@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_screw@2x.png"; sourceTree = ""; }; D0AE308622B1D8ED0058D3BC /* powerful_infinity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity@2x.png"; sourceTree = ""; }; - D0AE308722B1D8ED0058D3BC /* telegram_plane@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane@2x.png"; sourceTree = ""; }; D0AE308822B1D8ED0058D3BC /* ic_smile@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile@2x.png"; sourceTree = ""; }; D0AE308922B1D8ED0058D3BC /* RMGeometry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMGeometry.m; sourceTree = ""; }; D0AE308A22B1D8ED0058D3BC /* RMIntroViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroViewController.h; sourceTree = ""; }; @@ -249,6 +249,7 @@ D0AE306E22B1D8ED0058D3BC /* Resources */ = { isa = PBXGroup; children = ( + 09EC5CD722CBB86A00292E42 /* telegram_plane1@2x.png */, D0AE306F22B1D8ED0058D3BC /* ic_bubble_dot@2x.png */, D0AE307022B1D8ED0058D3BC /* powerful_mask@2x.png */, D0AE307122B1D8ED0058D3BC /* telegram_sphere@2x.png */, @@ -273,7 +274,6 @@ D0AE308422B1D8ED0058D3BC /* powerful_infinity_white@2x.png */, D0AE308522B1D8ED0058D3BC /* private_screw@2x.png */, D0AE308622B1D8ED0058D3BC /* powerful_infinity@2x.png */, - D0AE308722B1D8ED0058D3BC /* telegram_plane@2x.png */, D0AE308822B1D8ED0058D3BC /* ic_smile@2x.png */, ); path = Resources; @@ -402,6 +402,7 @@ D0AE30B522B1D8ED0058D3BC /* start_arrow_ipad@2x.png in Resources */, D0AE30BD22B1D8ED0058D3BC /* fast_spiral@2x.png in Resources */, D0AE30CD22B1D8ED0058D3BC /* .gitignore in Resources */, + 09EC5CD822CBB86B00292E42 /* telegram_plane1@2x.png in Resources */, D0AE30B822B1D8ED0058D3BC /* fast_arrow@2x.png in Resources */, D0AE30AC22B1D8ED0058D3BC /* powerful_mask@2x.png in Resources */, D0AE30B322B1D8ED0058D3BC /* fast_arrow_shadow@2x.png in Resources */, @@ -414,7 +415,6 @@ D0AE30B222B1D8ED0058D3BC /* start_arrow_ipad.png in Resources */, D0AE30C422B1D8ED0058D3BC /* ic_smile@2x.png in Resources */, D0AE30B922B1D8ED0058D3BC /* ic_pencil@2x.png in Resources */, - D0AE30C322B1D8ED0058D3BC /* telegram_plane@2x.png in Resources */, D0AE30B422B1D8ED0058D3BC /* ic_cam@2x.png in Resources */, D0AE30B622B1D8ED0058D3BC /* fast_body@2x.png in Resources */, D0AE30BC22B1D8ED0058D3BC /* ic_pin@2x.png in Resources */, diff --git a/submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane1@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5a342bc9ce71c8c9e86846c23560e5cbcc7d16 GIT binary patch literal 1248 zcmeAS@N?(olHy`uVBq!ia0vp^OMrL^2Q!e=5-hq0q>=-CLR^9Le;R{XuDlC?)+m$& z`2{lwa7ZX<7+5%X1Vkic6jU^HOqj7?#fBXRPF%S0Bu+OQuhso>TdPEqPb%N<;5e zc2RXNiqG^#ZTWNV$qdn0)3*IRQlBTj*FCRgDEzVNiR$j1F~;jNKGvKpdl0HT&*!>s z{>Jls7bk7DTe2<+NT%$OJW(mXDW_t;oWH{ZC}B2bD?*A@2sfaB`!S|-0x+# zYfhTGaP!87+mbuEwyEFLyl%W{&J``Mqa1e&nvU#kE$F`Zu*a=k;^T3d`zxjee|fj` zsHNKqVRg%0)5We!EcDy-`qP^P4H@M{eZp6Pa=LCuY?q(92JojZ-igyzq@)@H=VmA>Z1s>9Y-D|!W`8~?7%(|j!OaE|QVwI9+v1-Bit{H5@T zb@}p^nUBO` zbFAm3e$#ZCGg0b$$E&|5x#*}BAXiQv-~A3YqZ$C0zP=j z{@5Y-=*i(61wXqpyhl#9M=G|wcu*Oxx_Hy4$7}Yy@CcVZv~q3Dac%v)mnoeKrn&8V zJazgUi`bS6VQs>^9QtpcbT6{mYxb`@>4ibIP5Zqc`dv($?){h2NSGlDG;L?A#ZLq6 z6T<&zAFnXm%V*zG`6D&YkiF`7w$T}9%a;AQ7cVBUR$f}%8ahGUHfoKbKKJSPD&ERN z(kzn`>n^p$&lK7`<*n}hUdd-((`T1Syt$xb^3OnDU%#HY?+wew@XFtRfn^ATr>mdK II;Vst0Ht(*2LJ#7 literal 0 HcmV?d00001 diff --git a/submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane@2x.png deleted file mode 100644 index f56072cb178d67150b91e92d302ac907cf3e61da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3991 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 diff --git a/submodules/RMIntro/Sources/platform/ios/Resources/telegram_sphere@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/telegram_sphere@2x.png index 1c8a870dcbf92946d6c89be1b8050fb652001270..85e805a00fea8bf2f39254676d6787b630a41ec3 100644 GIT binary patch literal 8335 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 Void)? - public static var voipMaxLayer: Int32 { return OngoingCallContext.maxLayer } @@ -316,8 +314,6 @@ public final class PresentationCallManager { } else { begin() } - - self.callRequested?(account.peerId, peerId) } else { let begin: () -> Void = { [weak self] in guard let strongSelf = self else { @@ -333,7 +329,6 @@ public final class PresentationCallManager { } else { begin() } - self.callRequested?(account.peerId, peerId) } return .requested } diff --git a/submodules/TelegramCore/TelegramCore/SearchStickers.swift b/submodules/TelegramCore/TelegramCore/SearchStickers.swift index 60b866388f..494337b030 100644 --- a/submodules/TelegramCore/TelegramCore/SearchStickers.swift +++ b/submodules/TelegramCore/TelegramCore/SearchStickers.swift @@ -107,6 +107,7 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker let currentItems = Set(result.map { $0.file.fileId }) var recentItems: [TelegramMediaFile] = [] + var recentAnimatedItems: [TelegramMediaFile] = [] var recentItemsIds = Set() var matchingRecentItemsIds = Set() @@ -118,14 +119,19 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker matchingRecentItemsIds.insert(file.fileId) } recentItemsIds.insert(file.fileId) - recentItems.append(file) + if file.isAnimatedSticker { + recentAnimatedItems.append(file) + } else { + recentItems.append(file) + } break } } } } - var installed: [FoundStickerItem] = [] + var installedItems: [FoundStickerItem] = [] + var installedAnimatedItems: [FoundStickerItem] = [] for item in transaction.searchItemCollection(namespace: Namespaces.ItemCollection.CloudStickerPacks, query: .exact(ValueBoxKey(query))) { if let item = item as? StickerPackItem { if !currentItems.contains(item.file.fileId) { @@ -138,7 +144,11 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker } } if !recentItemsIds.contains(item.file.fileId) { - installed.append(FoundStickerItem(file: item.file, stringRepresentations: stringRepresentations)) + if item.file.isAnimatedSticker { + installedAnimatedItems.append(FoundStickerItem(file: item.file, stringRepresentations: stringRepresentations)) + } else { + installedItems.append(FoundStickerItem(file: item.file, stringRepresentations: stringRepresentations)) + } } else { matchingRecentItemsIds.insert(item.file.fileId) } @@ -146,13 +156,20 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker } } + for file in recentAnimatedItems { + if matchingRecentItemsIds.contains(file.fileId) { + result.append(FoundStickerItem(file: file, stringRepresentations: [query])) + } + } + for file in recentItems { if matchingRecentItemsIds.contains(file.fileId) { result.append(FoundStickerItem(file: file, stringRepresentations: [query])) } } - result.append(contentsOf: installed) + result.append(contentsOf: installedAnimatedItems) + result.append(contentsOf: installedItems) } let cached = transaction.retrieveItemCacheEntry(id: ItemCacheEntryId(collectionId: Namespaces.CachedItemCollection.cachedStickerQueryResults, key: CachedStickerQueryResult.cacheKey(query))) as? CachedStickerQueryResult diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/TelegramUI/TelegramUI/ChatListController.swift index 4506692cc0..da54ca1e5c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListController.swift @@ -837,21 +837,6 @@ public class ChatListController: TelegramController, UIViewControllerPreviewingD } } - /*self.chatListDisplayNode.chatListNode.contentOffsetChanged = { [weak self] offset in - if let strongSelf = self, let searchContentNode = strongSelf.searchContentNode { - var progress: CGFloat = 0.0 - switch offset { - case let .known(offset): - progress = max(0.0, (searchContentNode.nominalHeight - max(0.0, offset - 76.0))) / searchContentNode.nominalHeight - case .none: - progress = 1.0 - default: - break - } - searchContentNode.updateExpansionProgress(progress) - } - }*/ - self.chatListDisplayNode.chatListNode.contentScrollingEnded = { [weak self] listView in if let strongSelf = self, let searchContentNode = strongSelf.searchContentNode { return fixListNodeScrolling(listView, searchNode: searchContentNode) diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift index 4b46f19319..26aeb93446 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift @@ -67,7 +67,7 @@ private let boundingImageSize = CGSize(width: 28.0, height: 28.0) private let highlightSize = CGSize(width: 35.0, height: 35.0) private let verticalOffset: CGFloat = 3.0 -private enum StickerPackThumbnailItem: Equatable { +enum StickerPackThumbnailItem: Equatable { case still(TelegramMediaImageRepresentation) case animated(MediaResource) diff --git a/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift index b8709c87b1..7b856965f1 100644 --- a/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift @@ -80,9 +80,11 @@ private let iconTextBackgroundImage = generateStretchableFilledCircleImage(radiu final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode { private let imageNodeBackground: ASDisplayNode private let imageNode: TransformImageNode + private var animationNode: AnimatedStickerNode? private var videoLayer: (SoftwareVideoThumbnailLayer, SoftwareVideoLayerFrameManager, SampleBufferLayer)? private var currentImageResource: TelegramMediaResource? private var currentVideoFile: TelegramMediaFile? + private var currentAnimatedStickerFile: TelegramMediaFile? private var resourceStatus: MediaResourceStatus? private(set) var item: HorizontalListContextResultsChatInputPanelItem? private var statusDisposable = MetaDisposable() @@ -188,6 +190,7 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode let imageLayout = self.imageNode.asyncLayout() let currentImageResource = self.currentImageResource let currentVideoFile = self.currentVideoFile + let currentAnimatedStickerFile = self.currentAnimatedStickerFile return { [weak self] item, params, mergedTop, mergedBottom in let height = params.width @@ -199,6 +202,7 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode var imageResource: TelegramMediaResource? var stickerFile: TelegramMediaFile? + var animatedStickerFile: TelegramMediaFile? var videoFile: TelegramMediaFile? var imageDimensions: CGSize? switch item.result { @@ -231,7 +235,10 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode } else if let largestRepresentation = largestImageRepresentation(file.previewRepresentations) { imageDimensions = largestRepresentation.dimensions } - if file.isSticker { + if file.isAnimatedSticker { + animatedStickerFile = file + imageResource = smallestImageRepresentation(file.previewRepresentations)?.resource + } else if file.isSticker { stickerFile = file imageResource = file.resource } else { @@ -286,6 +293,15 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode updatedVideoFile = true } + var updatedAnimatedStickerFile = false + if let currentAnimatedStickerFile = currentAnimatedStickerFile, let animatedStickerFile = animatedStickerFile { + if !currentAnimatedStickerFile.isEqual(to: animatedStickerFile) { + updatedAnimatedStickerFile = true + } + } else if (currentAnimatedStickerFile != nil) != (animatedStickerFile != nil) { + updatedAnimatedStickerFile = true + } + if updatedImageResource { if let imageResource = imageResource { if let stickerFile = stickerFile { @@ -300,7 +316,6 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode } } - let nodeLayout = ListViewItemNodeLayout(contentSize: CGSize(width: height, height: croppedImageDimensions.width + sideInset), insets: UIEdgeInsets()) return (nodeLayout, { _ in @@ -348,6 +363,30 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode } } + if updatedAnimatedStickerFile { + if let animationNode = strongSelf.animationNode { + strongSelf.animationNode = nil + animationNode.removeFromSupernode() + } + + if let animatedStickerFile = animatedStickerFile { + let animationNode: AnimatedStickerNode + if let currentAnimationNode = strongSelf.animationNode { + animationNode = currentAnimationNode + } else { + animationNode = AnimatedStickerNode() + animationNode.transform = CATransform3DMakeRotation(CGFloat.pi / 2.0, 0.0, 0.0, 1.0) + animationNode.visibility = true + strongSelf.addSubnode(animationNode) + strongSelf.animationNode = animationNode + } + animationNode.started = { [weak self] in + self?.imageNode.alpha = 0.0 + } + animationNode.setup(account: item.account, resource: animatedStickerFile.resource, width: 140, height: 140, mode: .cached) + } + } + let progressSize = CGSize(width: 24.0, height: 24.0) let progressFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((nodeLayout.contentSize.width - progressSize.width) / 2.0), y: floorToScreenPixels((nodeLayout.contentSize.height - progressSize.height) / 2.0)), size: progressSize) @@ -363,20 +402,18 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode if let strongSelf = strongSelf { strongSelf.resourceStatus = status - let state: RadialStatusNodeState let statusForegroundColor: UIColor = .white switch status { - case let .Fetching(_, progress): - state = .progress(color: statusForegroundColor, lineWidth: nil, value: CGFloat(max(progress, 0.2)), cancelEnabled: false) - case .Remote: - state = .download(statusForegroundColor) - case .Local: - state = .none + case let .Fetching(_, progress): + state = .progress(color: statusForegroundColor, lineWidth: nil, value: CGFloat(max(progress, 0.2)), cancelEnabled: false) + case .Remote: + state = .download(statusForegroundColor) + case .Local: + state = .none } - strongSelf.statusNode.transitionToState(state, completion: { }) } } @@ -391,6 +428,12 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode layer.layer.bounds = CGRect(origin: CGPoint(), size: CGSize(width: croppedImageDimensions.width, height: croppedImageDimensions.height)) layer.layer.position = CGPoint(x: height / 2.0, y: (nodeLayout.contentSize.height - sideInset) / 2.0 + sideInset) } + + if let animationNode = strongSelf.animationNode { + animationNode.bounds = CGRect(origin: CGPoint(), size: CGSize(width: croppedImageDimensions.width, height: croppedImageDimensions.height)) + animationNode.position = CGPoint(x: height / 2.0, y: (nodeLayout.contentSize.height - sideInset) / 2.0 + sideInset) + animationNode.updateLayout(size: croppedImageDimensions) + } } }) } diff --git a/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift index 2232b9eae9..fe6a9b8c3b 100755 --- a/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift @@ -302,9 +302,6 @@ final class HorizontalStickersChatContextPanelNode: ChatInputContextPanelNode { self.backgroundNode.image = backgroundCenterImage(theme) self.backgroundLeftNode.image = backgroundLeftImage(theme) self.backgroundRightNode.image = backgroundLeftImage(theme) - // if let currentEntries = self.currentEntries { - // self.updateToEntries(entries: currentEntries, forceUpdate: true) - // } } } diff --git a/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift b/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift index 2ca1f37427..0ee253c743 100644 --- a/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift @@ -191,14 +191,14 @@ private func inviteContactsEntries(accountPeer: Peer?, sortedContacts: [(DeviceC return entries } -private func preparedInviteContactsTransition(account: Account, from fromEntries: [InviteContactsEntry], to toEntries: [InviteContactsEntry], sortedContacts: [(DeviceContactStableId, DeviceContactBasicData, Int32)]?, interaction: InviteContactsInteraction, firstTime: Bool, isLoading: Bool, animated: Bool) -> InviteContactsTransition { +private func preparedInviteContactsTransition(account: Account, from fromEntries: [InviteContactsEntry], to toEntries: [InviteContactsEntry], sortedContacts: [(DeviceContactStableId, DeviceContactBasicData, Int32)]?, interaction: InviteContactsInteraction, isLoading: Bool, firstTime: Bool, crossfade: Bool) -> InviteContactsTransition { let (deleteIndices, indicesAndItems, updateIndices) = mergeListsStableWithUpdates(leftList: fromEntries, rightList: toEntries) let deletions = deleteIndices.map { ListViewDeleteItem(index: $0, directionHint: nil) } let insertions = indicesAndItems.map { ListViewInsertItem(index: $0.0, previousIndex: $0.2, item: $0.1.item(account: account, interaction: interaction), directionHint: nil) } let updates = updateIndices.map { ListViewUpdateItem(index: $0.0, previousIndex: $0.2, item: $0.1.item(account: account, interaction: interaction), directionHint: nil) } - return InviteContactsTransition(deletions: deletions, insertions: insertions, updates: updates, sortedContacts: sortedContacts, firstTime: firstTime, isLoading: isLoading, animated: animated) + return InviteContactsTransition(deletions: deletions, insertions: insertions, updates: updates, sortedContacts: sortedContacts, isLoading: isLoading, firstTime: firstTime, crossfade: crossfade) } private struct InviteContactsTransition { @@ -206,9 +206,9 @@ private struct InviteContactsTransition { let insertions: [ListViewInsertItem] let updates: [ListViewUpdateItem] let sortedContacts: [(DeviceContactStableId, DeviceContactBasicData, Int32)]? - let firstTime: Bool let isLoading: Bool - let animated: Bool + let firstTime: Bool + let crossfade: Bool } final class InviteContactsControllerNode: ASDisplayNode { @@ -229,7 +229,7 @@ final class InviteContactsControllerNode: ASDisplayNode { var requestShareTelegram: (() -> Void)? var requestShare: (([(DeviceContactBasicData, Int32)]) -> Void)? - let currentSortedContacts = Atomic<[(DeviceContactStableId, DeviceContactBasicData, Int32)]>(value: []) + let currentSortedContacts = Atomic<[(DeviceContactStableId, DeviceContactBasicData, Int32)]?>(value: nil) var selectionState = InviteContactsGroupSelectionState() { didSet { @@ -290,6 +290,7 @@ final class InviteContactsControllerNode: ASDisplayNode { }) self.backgroundColor = self.presentationData.theme.chatList.backgroundColor + self.listNode.backgroundColor = self.presentationData.theme.chatList.backgroundColor self.addSubnode(self.listNode) self.addSubnode(self.countPanelNode) @@ -310,7 +311,6 @@ final class InviteContactsControllerNode: ASDisplayNode { }) let account = self.context.account - var firstTime: Int32 = 1 let selectionStateSignal = self.selectionStatePromise.get() let transition: Signal let themeAndStringsPromise = self.themeAndStringsPromise @@ -387,36 +387,24 @@ final class InviteContactsControllerNode: ASDisplayNode { return result } } - |> beforeNext { sortedContacts in - if let sortedContacts = sortedContacts { - let _ = currentSortedContacts.swap(sortedContacts) - } - } let processingQueue = Queue() - transition = (combineLatest(.single(nil) |> then(sortedContacts), selectionStateSignal, themeAndStringsPromise.get()) - |> mapToQueue { sortedContacts, selectionState, themeAndStrings -> Signal in + transition = (combineLatest(.single(nil) |> then(sortedContacts), selectionStateSignal, themeAndStringsPromise.get(), .single(true) |> delay(0.2, queue: Queue.mainQueue())) + |> mapToQueue { sortedContacts, selectionState, themeAndStrings, ready -> Signal in + guard sortedContacts != nil || ready else { + return .never() + } + let signal = deferred { () -> Signal in let entries = inviteContactsEntries(accountPeer: nil, sortedContacts: sortedContacts, selectionState: selectionState, theme: themeAndStrings.0, strings: themeAndStrings.1, nameSortOrder: themeAndStrings.2, nameDisplayOrder: themeAndStrings.3, interaction: interaction) let previous = previousEntries.swap(entries) - let animated: Bool - if let previous = previous { - animated = (entries.count - previous.count) < 20 - } else { - animated = false - } - return .single(preparedInviteContactsTransition(account: context.account, from: previous ?? [], to: entries, sortedContacts: sortedContacts, interaction: interaction, firstTime: previous == nil, isLoading: false, animated: animated)) + let previousContacts = currentSortedContacts.with { $0 } + let crossfade = previous != nil && previousContacts == nil + + return .single(preparedInviteContactsTransition(account: context.account, from: previous ?? [], to: entries, sortedContacts: sortedContacts, interaction: interaction, isLoading: sortedContacts == nil, firstTime: previous == nil, crossfade: crossfade)) } return signal |> runOn(processingQueue) - -// if OSAtomicCompareAndSwap32(1, 0, &firstTime) { -// return signal -// |> runOn(Queue.mainQueue()) -// } else { -// return signal -// |> runOn(processingQueue) -// } }) |> deliverOnMainQueue @@ -424,12 +412,10 @@ final class InviteContactsControllerNode: ASDisplayNode { self?.enqueueTransition(transition) }) - self.enqueueTransition(InviteContactsTransition(deletions: [], insertions: [], updates: [], sortedContacts: [], firstTime: true, isLoading: true, animated: false)) - shareImpl = { [weak self] in if let strongSelf = self { var result: [(DeviceContactBasicData, Int32)] = [] - for contact in (strongSelf.currentSortedContacts.with { $0 }) { + for contact in (strongSelf.currentSortedContacts.with { $0 } ?? []) { if strongSelf.selectionState.selectedContactIndices[contact.0] != nil { result.append((contact.1, contact.2)) } @@ -448,6 +434,7 @@ final class InviteContactsControllerNode: ASDisplayNode { private func updateThemeAndStrings() { self.backgroundColor = self.presentationData.theme.chatList.backgroundColor + self.listNode.backgroundColor = self.presentationData.theme.chatList.backgroundColor self.searchDisplayController?.updatePresentationData(self.presentationData) } @@ -571,8 +558,8 @@ final class InviteContactsControllerNode: ASDisplayNode { if transition.firstTime { options.insert(.Synchronous) options.insert(.LowLatency) - } else if transition.animated { - options.insert(.AnimateInsertion) + } else if transition.crossfade { + options.insert(.AnimateCrossfade) } self.listNode.transaction(deleteIndices: transition.deletions, insertIndicesAndItems: transition.insertions, updateIndicesAndItems: transition.updates, options: options, updateOpaqueState: nil, completion: { [weak self] _ in if let strongSelf = self { @@ -582,10 +569,16 @@ final class InviteContactsControllerNode: ASDisplayNode { let activityIndicator = ActivityIndicator(type: .custom(strongSelf.presentationData.theme.list.itemAccentColor, 22.0, 1.0, false)) strongSelf.activityIndicator = activityIndicator strongSelf.insertSubnode(activityIndicator, aboveSubnode: strongSelf.listNode) + + if let (layout, navigationHeight, actualNavigationBarHeight) = strongSelf.validLayout { + strongSelf.containerLayoutUpdated(layout, navigationBarHeight: navigationHeight, actualNavigationBarHeight: actualNavigationBarHeight, transition: .immediate) + } } else if !transition.isLoading, let activityIndicator = strongSelf.activityIndicator { strongSelf.activityIndicator = nil activityIndicator.removeFromSupernode() } + + let _ = strongSelf.currentSortedContacts.swap(transition.sortedContacts) } }) } @@ -593,7 +586,7 @@ final class InviteContactsControllerNode: ASDisplayNode { } func selectAll() { - let ids = self.currentSortedContacts.with { $0 }.map { $0.0 } + let ids = self.currentSortedContacts.with { $0 }?.map { $0.0 } ?? [] var allSelected = true for id in ids { if self.selectionState.selectedContactIndices[id] == nil { diff --git a/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift b/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift index 3c42a2f593..08589d6e87 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift @@ -121,6 +121,8 @@ private let titleFont = Font.bold(15.0) private let statusFont = Font.regular(14.0) class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { + private var currentThumbnailItem: StickerPackThumbnailItem? + private let backgroundNode: ASDisplayNode private let topStripeNode: ASDisplayNode private let bottomStripeNode: ASDisplayNode @@ -128,6 +130,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { private var disabledOverlayNode: ASDisplayNode? fileprivate let imageNode: TransformImageNode + private var animationNode: AnimatedStickerNode? private let unreadNode: ASImageNode private let titleNode: TextNode private let statusNode: TextNode @@ -153,6 +156,17 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { } } + override var visibility: ListViewItemNodeVisibility { + didSet { + let wasVisible = oldValue != .none + let isVisible = self.visibility != .none + + if wasVisible != isVisible { + self.animationNode?.visibility = isVisible + } + } + } + init() { self.backgroundNode = ASDisplayNode() self.backgroundNode.isLayerBacked = true @@ -230,13 +244,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { let editableControlLayout = ItemListEditableControlNode.asyncLayout(self.editableControlNode) let reorderControlLayout = ItemListEditableReorderControlNode.asyncLayout(self.reorderControlNode) - var previousThumbnailItem: TelegramMediaImageRepresentation? - if let thumbnail = self.layoutParams?.0.packInfo.thumbnail { - previousThumbnailItem = thumbnail - } else if let item = self.layoutParams?.0.topItem, let dimensions = item.file.dimensions, let resource = chatMessageStickerResource(file: item.file, small: true) as? TelegramMediaResource { - previousThumbnailItem = TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource) - } - + var previousThumbnailItem = self.currentThumbnailItem var currentDisabledOverlayNode = self.disabledOverlayNode let currentItem = self.layoutParams?.0 @@ -324,31 +332,47 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { currentDisabledOverlayNode = nil } - var thumbnailItem: TelegramMediaImageRepresentation? + var thumbnailItem: StickerPackThumbnailItem? var resourceReference: MediaResourceReference? if let thumbnail = item.packInfo.thumbnail { - thumbnailItem = thumbnail - resourceReference = MediaResourceReference.stickerPackThumbnail(stickerPack: .id(id: item.packInfo.id.id, accessHash: item.packInfo.accessHash), resource: thumbnail.resource) - } else if let item = item.topItem, let dimensions = item.file.dimensions, let resource = chatMessageStickerResource(file: item.file, small: true) as? TelegramMediaResource { - thumbnailItem = TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource) - resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: resource) - } - - let fileUpdated = thumbnailItem != previousThumbnailItem - - var imageApply: (() -> Void)? - var imageSize: CGSize = CGSize(width: 34.0, height: 34.0) - if let thumbnailItem = thumbnailItem { - let imageBoundingSize = CGSize(width: 34.0, height: 34.0) - imageSize = thumbnailItem.dimensions.aspectFitted(imageBoundingSize) - imageApply = makeImageLayout(TransformImageArguments(corners: ImageCorners(), imageSize: imageSize, boundingSize: imageSize, intrinsicInsets: UIEdgeInsets())) + if item.packInfo.flags.contains(.isAnimated) { + thumbnailItem = .animated(thumbnail.resource) + resourceReference = MediaResourceReference.stickerPackThumbnail(stickerPack: .id(id: item.packInfo.id.id, accessHash: item.packInfo.accessHash), resource: thumbnail.resource) + } else { + thumbnailItem = .still(thumbnail) + resourceReference = MediaResourceReference.stickerPackThumbnail(stickerPack: .id(id: item.packInfo.id.id, accessHash: item.packInfo.accessHash), resource: thumbnail.resource) + } + } else if let item = item.topItem { + if item.file.isAnimatedSticker { + thumbnailItem = .animated(item.file.resource) + resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: item.file.resource) + } else if let dimensions = item.file.dimensions, let resource = chatMessageStickerResource(file: item.file, small: true) as? TelegramMediaResource { + thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource)) + resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: resource) + } } var updatedImageSignal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>? var updatedFetchSignal: Signal? + + let imageBoundingSize = CGSize(width: 34.0, height: 34.0) + var imageApply: (() -> Void)? + let fileUpdated = thumbnailItem != previousThumbnailItem + + var imageSize: CGSize? + if fileUpdated { if let thumbnailItem = thumbnailItem { - updatedImageSignal = chatMessageStickerPackThumbnail(postbox: item.account.postbox, representation: thumbnailItem) + switch thumbnailItem { + case let .still(representation): + let stillImageSize = representation.dimensions.aspectFitted(imageBoundingSize) + imageSize = stillImageSize + + imageApply = makeImageLayout(TransformImageArguments(corners: ImageCorners(), imageSize: stillImageSize, boundingSize: stillImageSize, intrinsicInsets: UIEdgeInsets())) + updatedImageSignal = chatMessageStickerPackThumbnail(postbox: item.account.postbox, representation: representation) + case .animated: + imageSize = imageBoundingSize + } if let resourceReference = resourceReference { updatedFetchSignal = fetchedMediaResource(postbox: item.account.postbox, reference: resourceReference) } @@ -361,6 +385,10 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { return (layout, { [weak self] animated in if let strongSelf = self { strongSelf.layoutParams = (item, params, neighbors) + + if fileUpdated { + strongSelf.currentThumbnailItem = thumbnailItem + } if let _ = updatedTheme { strongSelf.topStripeNode.backgroundColor = item.theme.list.itemBlocksSeparatorColor @@ -516,7 +544,27 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { transition.updateFrame(node: strongSelf.statusNode, frame: CGRect(origin: CGPoint(x: leftInset + revealOffset + editingOffset, y: 32.0), size: statusLayout.size)) let boundingSize = CGSize(width: 34.0, height: 34.0) - transition.updateFrame(node: strongSelf.imageNode, frame: CGRect(origin: CGPoint(x: params.leftInset + revealOffset + editingOffset + 15.0 + floor((boundingSize.width - imageSize.width) / 2.0), y: 11.0 + floor((boundingSize.height - imageSize.height) / 2.0)), size: imageSize)) + if let thumbnailItem = thumbnailItem, let imageSize = imageSize { + let imageFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset + editingOffset + 15.0 + floor((boundingSize.width - imageSize.width) / 2.0), y: 11.0 + floor((boundingSize.height - imageSize.height) / 2.0)), size: imageSize) + switch thumbnailItem { + case .still: + transition.updateFrame(node: strongSelf.imageNode, frame: imageFrame) + case let .animated(resource): + let animationNode: AnimatedStickerNode + if let current = strongSelf.animationNode { + animationNode = current + } else { + animationNode = AnimatedStickerNode() + strongSelf.animationNode = animationNode + strongSelf.addSubnode(animationNode) + animationNode.setup(account: item.account, resource: resource, width: 80, height: 80, mode: .cached) + animationNode.visibility = strongSelf.visibility != .none + } + if let animationNode = strongSelf.animationNode { + transition.updateFrame(node: animationNode, frame: imageFrame) + } + } + } if let updatedImageSignal = updatedImageSignal { strongSelf.imageNode.setSignal(updatedImageSignal) diff --git a/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift b/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift index dd9134e05e..1669e9467e 100644 --- a/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift +++ b/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift @@ -66,7 +66,7 @@ private let titleFont = Font.bold(16.0) private let statusFont = Font.regular(15.0) private let buttonFont = Font.medium(13.0) -private final class TrendingTopItemNode: ASDisplayNode { +final class TrendingTopItemNode: ASDisplayNode { private let imageNode: TransformImageNode private var animationNode: AnimatedStickerNode? public private(set) var file: TelegramMediaFile? = nil diff --git a/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift b/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift index d40ab5790f..65bce49a26 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift @@ -78,30 +78,6 @@ private let titleFont = Font.bold(16.0) private let statusFont = Font.regular(15.0) private let buttonFont = Font.medium(13.0) -private final class TrendingTopItemNode: TransformImageNode { - var file: TelegramMediaFile? = nil - let loadDisposable = MetaDisposable() - - var currentIsPreviewing = false - - func updatePreviewing(animated: Bool, isPreviewing: Bool) { - if self.currentIsPreviewing != isPreviewing { - self.currentIsPreviewing = isPreviewing - - if isPreviewing { - if animated { - self.layer.animateSpring(from: 1.0 as NSNumber, to: 0.8 as NSNumber, keyPath: "transform.scale", duration: 0.4, removeOnCompletion: false) - } - } else { - self.layer.removeAnimation(forKey: "transform.scale") - if animated { - self.layer.animateSpring(from: 0.8 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.5) - } - } - } - } -} - class StickerPaneSearchGlobalItemNode: GridItemNode { private let titleNode: TextNode private let descriptionNode: TextNode @@ -115,6 +91,16 @@ class StickerPaneSearchGlobalItemNode: GridItemNode { private var appliedItem: StickerPaneSearchGlobalItem? private let preloadDisposable = MetaDisposable() + override var isVisibleInGrid: Bool { + didSet { + if oldValue != self.isVisibleInGrid { + for node in self.itemNodes { + node.visibility = self.isVisibleInGrid + } + } + } + } + override init() { self.titleNode = TextNode() self.titleNode.isUserInteractionEnabled = false @@ -270,9 +256,14 @@ class StickerPaneSearchGlobalItemNode: GridItemNode { strongSelf.unreadNode.frame = CGRect(origin: CGPoint(x: titleFrame.maxX + 2.0, y: titleFrame.minY + 7.0), size: image.size) } - var offset: CGFloat = params.leftInset + leftInset - let itemSize = CGSize(width: 68.0, height: 68.0) - + let sideInset: CGFloat = 2.0 + let availableWidth = params.width - params.leftInset - params.rightInset - sideInset * 2.0 + var itemSide: CGFloat = floor(availableWidth / 5.0) + itemSide = min(itemSide, 75.0) + let itemSize = CGSize(width: itemSide, height: itemSide) + var offset = sideInset + let itemSpacing = (max(0, availableWidth - 5.0 * itemSide - sideInset * 2.0)) / 4.0 + for i in 0 ..< topItems.count { let file = topItems[i].file let node: TrendingTopItemNode @@ -280,20 +271,17 @@ class StickerPaneSearchGlobalItemNode: GridItemNode { node = strongSelf.itemNodes[i] } else { node = TrendingTopItemNode() - node.contentAnimations = [.subsequentUpdates] + node.visibility = strongSelf.isVisibleInGrid strongSelf.itemNodes.append(node) strongSelf.addSubnode(node) } if file.fileId != node.file?.fileId { - node.file = file - node.setSignal(chatMessageSticker(account: item.account, file: file, small: true)) - node.loadDisposable.set(freeMediaFileResourceInteractiveFetched(account: item.account, fileReference: stickerPackFileReference(file), resource: chatMessageStickerResource(file: file, small: true)).start()) + node.setup(account: item.account, item: topItems[i], itemSize: itemSize, synchronousLoads: false) } if let dimensions = file.dimensions { let imageSize = dimensions.aspectFitted(itemSize) - node.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: imageSize, boundingSize: imageSize, intrinsicInsets: UIEdgeInsets()))() node.frame = CGRect(origin: CGPoint(x: offset, y: 48.0 + topOffset), size: imageSize) - offset += imageSize.width + 4.0 + offset += itemSize.width + itemSpacing } }