From b9aeb28c0d9f6f1846dc3f7f2022fc7b6d29b590 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 2 Jun 2020 16:38:24 +0400 Subject: [PATCH] UI fixes --- .../Telegram-iOS/en.lproj/Localizable.strings | 3 + .../Sources/AccountContext.swift | 2 +- .../Display/Source/ImmediateTextNode.swift | 9 + .../Items/ItemListMultilineTextItem.swift | 2 +- .../Items/ItemListTextWithLabelItem.swift | 2 +- .../Sources/LegacyLocationPicker.swift | 3 + .../LocationUI/Sources/LocationUtils.swift | 3 + .../Sources/ChannelVisibilityController.swift | 2 +- .../Themes/ThemeGridSearchContentNode.swift | 6 + .../SyncCore/Sources/CachedChannelData.swift | 60 +- .../SyncCore/Sources/CachedGroupData.swift | 38 +- .../Sources/RequestChatContextResults.swift | 45 +- .../TelegramCore/Sources/SearchStickers.swift | 3 + .../Sources/UpdateCachedPeerData.swift | 39 +- .../Sources/PresentationStrings.swift | 4240 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 150306 -> 150402 bytes .../TelegramUI/Sources/ChatController.swift | 242 +- .../Sources/ChatControllerNode.swift | 2 +- .../Sources/ChatInfoTitlePanelNode.swift | 9 +- .../ChatInterfaceStateContextQueries.swift | 2 +- .../Sources/ChatMediaInputGifPane.swift | 12 +- .../ChatMessageTextBubbleContentNode.swift | 2 +- .../ChatPanelInterfaceInteraction.swift | 4 +- .../ChatPresentationInterfaceState.swift | 17 + .../Sources/ChatRecentActionsController.swift | 1 + .../ChatReportPeerTitlePanelNode.swift | 145 +- .../Sources/GifPaneSearchContentNode.swift | 24 +- ...textResultsChatInputContextPanelNode.swift | 3 + .../Sources/InlineReactionSearchPanel.swift | 130 +- .../Sources/ListMessageSnippetItemNode.swift | 19 +- .../Sources/MultiplexedVideoNode.swift | 16 +- .../PeerInfoScreenLabeledValueItem.swift | 2 +- .../Sources/PeerInfo/PeerInfoHeaderNode.swift | 12 +- .../Sources/PeerInfo/PeerInfoScreen.swift | 51 +- .../PeerMediaCollectionController.swift | 1 + .../TelegramUI/Sources/TextLinkHandling.swift | 28 +- ...textResultsChatInputContextPanelNode.swift | 3 + .../Sources/UpdateInfoItem.swift | 2 +- .../Sources/WatchRequestHandlers.swift | 3 + .../Sources/WebSearchController.swift | 18 +- .../Sources/WebSearchControllerNode.swift | 4 +- 41 files changed, 2864 insertions(+), 2345 deletions(-) diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index e527eb3a4b..1086610d45 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -5521,3 +5521,6 @@ Any member of this group will be able to see messages in the channel."; "Conversation.Timer.Title" = "Send With Timer"; "Conversation.Timer.Send" = "Send With Timer"; + +"Conversation.NoticeInvitedByInChannel" = "%@ invited you to this channel"; +"Conversation.NoticeInvitedByInGroup" = "%@ invited you to this group"; diff --git a/submodules/AccountContext/Sources/AccountContext.swift b/submodules/AccountContext/Sources/AccountContext.swift index 452d439af0..8fc8f16b71 100644 --- a/submodules/AccountContext/Sources/AccountContext.swift +++ b/submodules/AccountContext/Sources/AccountContext.swift @@ -89,7 +89,7 @@ public enum TextLinkItemActionType { } public enum TextLinkItem { - case url(String) + case url(url: String, concealed: Bool) case mention(String) case hashtag(String?, String) } diff --git a/submodules/Display/Source/ImmediateTextNode.swift b/submodules/Display/Source/ImmediateTextNode.swift index 8111c08e9d..3ac2dec4bc 100644 --- a/submodules/Display/Source/ImmediateTextNode.swift +++ b/submodules/Display/Source/ImmediateTextNode.swift @@ -107,6 +107,15 @@ public class ImmediateTextNode: TextNode { return ImmediateTextNodeLayoutInfo(size: layout.size, truncated: layout.truncated) } + public func updateLayoutFullInfo(_ constrainedSize: CGSize) -> TextNodeLayout { + self.constrainedSize = constrainedSize + + let makeLayout = TextNode.asyncLayout(self) + let (layout, apply) = makeLayout(TextNodeLayoutArguments(attributedString: self.attributedText, backgroundColor: nil, maximumNumberOfLines: self.maximumNumberOfLines, truncationType: self.truncationType, constrainedSize: constrainedSize, alignment: self.textAlignment, lineSpacing: self.lineSpacing, cutout: self.cutout, insets: self.insets)) + let _ = apply() + return layout + } + public func redrawIfPossible() { if let constrainedSize = self.constrainedSize { let _ = self.updateLayout(constrainedSize) diff --git a/submodules/ItemListUI/Sources/Items/ItemListMultilineTextItem.swift b/submodules/ItemListUI/Sources/Items/ItemListMultilineTextItem.swift index 608641f99a..2bc29a05c0 100644 --- a/submodules/ItemListUI/Sources/Items/ItemListMultilineTextItem.swift +++ b/submodules/ItemListUI/Sources/Items/ItemListMultilineTextItem.swift @@ -370,7 +370,7 @@ public class ItemListMultilineTextItemNode: ListViewItemNode { 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[NSAttributedString.Key(rawValue: TelegramTextAttributes.URL)] as? String { - return .url(url) + return .url(url: url, concealed: false) } else if let peerName = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.PeerTextMention)] as? String { return .mention(peerName) } else if let hashtag = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Hashtag)] as? TelegramHashtag { diff --git a/submodules/ItemListUI/Sources/Items/ItemListTextWithLabelItem.swift b/submodules/ItemListUI/Sources/Items/ItemListTextWithLabelItem.swift index a54f938957..163e83d772 100644 --- a/submodules/ItemListUI/Sources/Items/ItemListTextWithLabelItem.swift +++ b/submodules/ItemListUI/Sources/Items/ItemListTextWithLabelItem.swift @@ -386,7 +386,7 @@ public class ItemListTextWithLabelItemNode: ListViewItemNode { 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[NSAttributedString.Key(rawValue: TelegramTextAttributes.URL)] as? String { - return .url(url) + return .url(url: url, concealed: false) } else if let peerName = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.PeerTextMention)] as? String { return .mention(peerName) } else if let hashtag = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Hashtag)] as? TelegramHashtag { diff --git a/submodules/LocationUI/Sources/LegacyLocationPicker.swift b/submodules/LocationUI/Sources/LegacyLocationPicker.swift index 881c8de8e2..108de5e611 100644 --- a/submodules/LocationUI/Sources/LegacyLocationPicker.swift +++ b/submodules/LocationUI/Sources/LegacyLocationPicker.swift @@ -61,6 +61,9 @@ public func legacyLocationPickerController(context: AccountContext, selfPeer: Pe return .single(nil) } return requestChatContextResults(account: context.account, botId: peerId, peerId: selfPeer.id, query: query ?? "", location: .single((location?.coordinate.latitude ?? 0.0, location?.coordinate.longitude ?? 0.0)), offset: "") + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> `catch` { error -> Signal in return .single(nil) } diff --git a/submodules/LocationUI/Sources/LocationUtils.swift b/submodules/LocationUI/Sources/LocationUtils.swift index 8c1a3dce47..9aa2f05a6e 100644 --- a/submodules/LocationUI/Sources/LocationUtils.swift +++ b/submodules/LocationUI/Sources/LocationUtils.swift @@ -40,6 +40,9 @@ public func nearbyVenues(account: Account, latitude: Double, longitude: Double, return .single(nil) } return requestChatContextResults(account: account, botId: peerId, peerId: account.peerId, query: query ?? "", location: .single((latitude, longitude)), offset: "") + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> `catch` { error -> Signal in return .single(nil) } diff --git a/submodules/PeerInfoUI/Sources/ChannelVisibilityController.swift b/submodules/PeerInfoUI/Sources/ChannelVisibilityController.swift index f15b635fcd..c18bf1bccd 100644 --- a/submodules/PeerInfoUI/Sources/ChannelVisibilityController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelVisibilityController.swift @@ -615,7 +615,7 @@ private func channelVisibilityControllerEntries(presentationData: PresentationDa } } else if let _ = view.peers[view.peerId] as? TelegramGroup { switch mode { - case .privateLink: + case .privateLink, .generic: let link = (view.cachedData as? CachedGroupData)?.exportedInvitation?.link let text: String if let link = link { diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift index 98dc00d4a1..5574a938e9 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift @@ -486,6 +486,9 @@ final class ThemeGridSearchContentNode: SearchDisplayControllerContentNode { return (geoPoint.latitude, geoPoint.longitude) } return requestChatContextResults(account: self.context.account, botId: collection.botId, peerId: collection.peerId, query: searchContext.result.query, location: .single(geoPoint), offset: nextOffset) + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> `catch` { error -> Signal in return .single(nil) } @@ -535,6 +538,9 @@ final class ThemeGridSearchContentNode: SearchDisplayControllerContentNode { return (.complete() |> delay(0.1, queue: Queue.concurrentDefaultQueue())) |> then( requestContextResults(account: context.account, botId: user.id, query: wallpaperQuery, peerId: context.account.peerId, limit: 16) + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> map { collection -> ([ThemeGridSearchEntry], Bool)? in guard let collection = collection else { return nil diff --git a/submodules/SyncCore/Sources/CachedChannelData.swift b/submodules/SyncCore/Sources/CachedChannelData.swift index 49bcb7c71c..0d7e2eba1b 100644 --- a/submodules/SyncCore/Sources/CachedChannelData.swift +++ b/submodules/SyncCore/Sources/CachedChannelData.swift @@ -167,6 +167,7 @@ public final class CachedChannelData: CachedPeerData { public let slowModeValidUntilTimestamp: Int32? public let hasScheduledMessages: Bool public let statsDatacenterId: Int32 + public let invitedBy: PeerId? public let peerIds: Set public let messageIds: Set @@ -194,9 +195,10 @@ public final class CachedChannelData: CachedPeerData { self.slowModeValidUntilTimestamp = nil self.hasScheduledMessages = false self.statsDatacenterId = 0 + self.invitedBy = nil } - public init(isNotAccessible: Bool, flags: CachedChannelFlags, about: String?, participantsSummary: CachedChannelParticipantsSummary, exportedInvitation: ExportedInvitation?, botInfos: [CachedPeerBotInfo], peerStatusSettings: PeerStatusSettings?, pinnedMessageId: MessageId?, stickerPack: StickerPackCollectionInfo?, minAvailableMessageId: MessageId?, migrationReference: ChannelMigrationReference?, linkedDiscussionPeerId: PeerId?, peerGeoLocation: PeerGeoLocation?, slowModeTimeout: Int32?, slowModeValidUntilTimestamp: Int32?, hasScheduledMessages: Bool, statsDatacenterId: Int32) { + public init(isNotAccessible: Bool, flags: CachedChannelFlags, about: String?, participantsSummary: CachedChannelParticipantsSummary, exportedInvitation: ExportedInvitation?, botInfos: [CachedPeerBotInfo], peerStatusSettings: PeerStatusSettings?, pinnedMessageId: MessageId?, stickerPack: StickerPackCollectionInfo?, minAvailableMessageId: MessageId?, migrationReference: ChannelMigrationReference?, linkedDiscussionPeerId: PeerId?, peerGeoLocation: PeerGeoLocation?, slowModeTimeout: Int32?, slowModeValidUntilTimestamp: Int32?, hasScheduledMessages: Bool, statsDatacenterId: Int32, invitedBy: PeerId?) { self.isNotAccessible = isNotAccessible self.flags = flags self.about = about @@ -214,6 +216,7 @@ public final class CachedChannelData: CachedPeerData { self.slowModeValidUntilTimestamp = slowModeValidUntilTimestamp self.hasScheduledMessages = hasScheduledMessages self.statsDatacenterId = statsDatacenterId + self.invitedBy = invitedBy var peerIds = Set() for botInfo in botInfos { @@ -224,81 +227,90 @@ public final class CachedChannelData: CachedPeerData { peerIds.insert(linkedDiscussionPeerId) } + if let invitedBy = invitedBy { + peerIds.insert(invitedBy) + } + self.peerIds = peerIds var messageIds = Set() if let pinnedMessageId = self.pinnedMessageId { messageIds.insert(pinnedMessageId) } + self.messageIds = messageIds } public func withUpdatedIsNotAccessible(_ isNotAccessible: Bool) -> CachedChannelData { - return CachedChannelData(isNotAccessible: isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedFlags(_ flags: CachedChannelFlags) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedAbout(_ about: String?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedParticipantsSummary(_ participantsSummary: CachedChannelParticipantsSummary) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedExportedInvitation(_ exportedInvitation: ExportedInvitation?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedBotInfos(_ botInfos: [CachedPeerBotInfo]) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedPeerStatusSettings(_ peerStatusSettings: PeerStatusSettings?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedPinnedMessageId(_ pinnedMessageId: MessageId?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedStickerPack(_ stickerPack: StickerPackCollectionInfo?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedMinAvailableMessageId(_ minAvailableMessageId: MessageId?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedMigrationReference(_ migrationReference: ChannelMigrationReference?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedLinkedDiscussionPeerId(_ linkedDiscussionPeerId: PeerId?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedPeerGeoLocation(_ peerGeoLocation: PeerGeoLocation?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedSlowModeTimeout(_ slowModeTimeout: Int32?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedSlowModeValidUntilTimestamp(_ slowModeValidUntilTimestamp: Int32?) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedHasScheduledMessages(_ hasScheduledMessages: Bool) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: hasScheduledMessages, statsDatacenterId: self.statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: self.invitedBy) } public func withUpdatedStatsDatacenterId(_ statsDatacenterId: Int32) -> CachedChannelData { - return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: statsDatacenterId) + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: statsDatacenterId, invitedBy: self.invitedBy) + } + + public func withUpdatedInvitedBy(_ invitedBy: PeerId?) -> CachedChannelData { + return CachedChannelData(isNotAccessible: self.isNotAccessible, flags: self.flags, about: self.about, participantsSummary: self.participantsSummary, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, stickerPack: self.stickerPack, minAvailableMessageId: self.minAvailableMessageId, migrationReference: self.migrationReference, linkedDiscussionPeerId: self.linkedDiscussionPeerId, peerGeoLocation: self.peerGeoLocation, slowModeTimeout: self.slowModeTimeout, slowModeValidUntilTimestamp: self.slowModeValidUntilTimestamp, hasScheduledMessages: self.hasScheduledMessages, statsDatacenterId: self.statsDatacenterId, invitedBy: invitedBy) } public init(decoder: PostboxDecoder) { @@ -355,6 +367,8 @@ public final class CachedChannelData: CachedPeerData { self.hasScheduledMessages = decoder.decodeBoolForKey("hsm", orElse: false) self.statsDatacenterId = decoder.decodeInt32ForKey("sdi", orElse: 0) + self.invitedBy = decoder.decodeOptionalInt64ForKey("invBy").flatMap(PeerId.init) + if let linkedDiscussionPeerId = self.linkedDiscussionPeerId { peerIds.insert(linkedDiscussionPeerId) } @@ -439,6 +453,12 @@ public final class CachedChannelData: CachedPeerData { } encoder.encodeBool(self.hasScheduledMessages, forKey: "hsm") encoder.encodeInt32(self.statsDatacenterId, forKey: "sdi") + + if let invitedBy = self.invitedBy { + encoder.encodeInt64(invitedBy.toInt64(), forKey: "invBy") + } else { + encoder.encodeNil(forKey: "invBy") + } } public func isEqual(to: CachedPeerData) -> Bool { @@ -514,6 +534,10 @@ public final class CachedChannelData: CachedPeerData { return false } + if other.invitedBy != self.invitedBy { + return false + } + return true } } diff --git a/submodules/SyncCore/Sources/CachedGroupData.swift b/submodules/SyncCore/Sources/CachedGroupData.swift index 91050b0eae..d12f6266e5 100644 --- a/submodules/SyncCore/Sources/CachedGroupData.swift +++ b/submodules/SyncCore/Sources/CachedGroupData.swift @@ -48,6 +48,7 @@ public final class CachedGroupData: CachedPeerData { public let about: String? public let flags: CachedGroupFlags public let hasScheduledMessages: Bool + public let invitedBy: PeerId? public let peerIds: Set public let messageIds: Set @@ -64,9 +65,10 @@ public final class CachedGroupData: CachedPeerData { self.about = nil self.flags = CachedGroupFlags() self.hasScheduledMessages = false + self.invitedBy = nil } - public init(participants: CachedGroupParticipants?, exportedInvitation: ExportedInvitation?, botInfos: [CachedPeerBotInfo], peerStatusSettings: PeerStatusSettings?, pinnedMessageId: MessageId?, about: String?, flags: CachedGroupFlags, hasScheduledMessages: Bool) { + public init(participants: CachedGroupParticipants?, exportedInvitation: ExportedInvitation?, botInfos: [CachedPeerBotInfo], peerStatusSettings: PeerStatusSettings?, pinnedMessageId: MessageId?, about: String?, flags: CachedGroupFlags, hasScheduledMessages: Bool, invitedBy: PeerId?) { self.participants = participants self.exportedInvitation = exportedInvitation self.botInfos = botInfos @@ -75,6 +77,7 @@ public final class CachedGroupData: CachedPeerData { self.about = about self.flags = flags self.hasScheduledMessages = hasScheduledMessages + self.invitedBy = invitedBy var messageIds = Set() if let pinnedMessageId = self.pinnedMessageId { @@ -91,6 +94,9 @@ public final class CachedGroupData: CachedPeerData { for botInfo in botInfos { peerIds.insert(botInfo.peerId) } + if let invitedBy = invitedBy { + peerIds.insert(invitedBy) + } self.peerIds = peerIds } @@ -113,6 +119,8 @@ public final class CachedGroupData: CachedPeerData { self.flags = CachedGroupFlags(rawValue: decoder.decodeInt32ForKey("fl", orElse: 0)) self.hasScheduledMessages = decoder.decodeBoolForKey("hsm", orElse: false) + self.invitedBy = decoder.decodeOptionalInt64ForKey("invBy").flatMap(PeerId.init) + var messageIds = Set() if let pinnedMessageId = self.pinnedMessageId { messageIds.insert(pinnedMessageId) @@ -165,6 +173,12 @@ public final class CachedGroupData: CachedPeerData { } encoder.encodeInt32(self.flags.rawValue, forKey: "fl") encoder.encodeBool(self.hasScheduledMessages, forKey: "hsm") + + if let invitedBy = self.invitedBy { + encoder.encodeInt64(invitedBy.toInt64(), forKey: "invBy") + } else { + encoder.encodeNil(forKey: "invBy") + } } public func isEqual(to: CachedPeerData) -> Bool { @@ -172,38 +186,42 @@ public final class CachedGroupData: CachedPeerData { return false } - return self.participants == other.participants && self.exportedInvitation == other.exportedInvitation && self.botInfos == other.botInfos && self.peerStatusSettings == other.peerStatusSettings && self.pinnedMessageId == other.pinnedMessageId && self.about == other.about && self.flags == other.flags && self.hasScheduledMessages == other.hasScheduledMessages + return self.participants == other.participants && self.exportedInvitation == other.exportedInvitation && self.botInfos == other.botInfos && self.peerStatusSettings == other.peerStatusSettings && self.pinnedMessageId == other.pinnedMessageId && self.about == other.about && self.flags == other.flags && self.hasScheduledMessages == other.hasScheduledMessages && self.invitedBy == other.invitedBy } public func withUpdatedParticipants(_ participants: CachedGroupParticipants?) -> CachedGroupData { - return CachedGroupData(participants: participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedExportedInvitation(_ exportedInvitation: ExportedInvitation?) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedBotInfos(_ botInfos: [CachedPeerBotInfo]) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedPeerStatusSettings(_ peerStatusSettings: PeerStatusSettings?) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedPinnedMessageId(_ pinnedMessageId: MessageId?) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedAbout(_ about: String?) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedFlags(_ flags: CachedGroupFlags) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: flags, hasScheduledMessages: self.hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: self.invitedBy) } public func withUpdatedHasScheduledMessages(_ hasScheduledMessages: Bool) -> CachedGroupData { - return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: hasScheduledMessages) + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: hasScheduledMessages, invitedBy: self.invitedBy) + } + + public func withUpdatedInvitedBy(_ invitedBy: PeerId?) -> CachedGroupData { + return CachedGroupData(participants: self.participants, exportedInvitation: self.exportedInvitation, botInfos: self.botInfos, peerStatusSettings: self.peerStatusSettings, pinnedMessageId: self.pinnedMessageId, about: self.about, flags: self.flags, hasScheduledMessages: self.hasScheduledMessages, invitedBy: invitedBy) } } diff --git a/submodules/TelegramCore/Sources/RequestChatContextResults.swift b/submodules/TelegramCore/Sources/RequestChatContextResults.swift index f01e460437..d891599d2e 100644 --- a/submodules/TelegramCore/Sources/RequestChatContextResults.swift +++ b/submodules/TelegramCore/Sources/RequestChatContextResults.swift @@ -41,7 +41,17 @@ private struct RequestData: Codable { private let requestVersion = "3" -public func requestChatContextResults(account: Account, botId: PeerId, peerId: PeerId, query: String, location: Signal<(Double, Double)?, NoError> = .single(nil), offset: String, incompleteResults: Bool = false) -> Signal { +public struct RequestChatContextResultsResult { + public let results: ChatContextResultCollection + public let isStale: Bool + + public init(results: ChatContextResultCollection, isStale: Bool) { + self.results = results + self.isStale = isStale + } +} + +public func requestChatContextResults(account: Account, botId: PeerId, peerId: PeerId, query: String, location: Signal<(Double, Double)?, NoError> = .single(nil), offset: String, incompleteResults: Bool = false, staleCachedResults: Bool = false) -> Signal { return account.postbox.transaction { transaction -> (bot: Peer, peer: Peer)? in if let bot = transaction.getPeer(botId), let peer = transaction.getPeer(peerId) { return (bot, peer) @@ -61,12 +71,14 @@ public func requestChatContextResults(account: Account, botId: PeerId, peerId: P } } |> castError(RequestChatContextResultsError.self) - |> mapToSignal { botAndPeer, location -> Signal in + |> mapToSignal { botAndPeer, location -> Signal in guard let (bot, peer) = botAndPeer, let inputBot = apiInputUser(bot) else { return .single(nil) } - return account.postbox.transaction { transaction -> Signal in + return account.postbox.transaction { transaction -> Signal in + var staleResult: RequestChatContextResultsResult? + if offset.isEmpty && location == nil { let requestData = RequestData(version: requestVersion, botId: botId, peerId: peerId, query: query) if let keyData = try? JSONEncoder().encode(requestData) { @@ -75,7 +87,21 @@ public func requestChatContextResults(account: Account, botId: PeerId, peerId: P if let cachedResult = try? JSONDecoder().decode(ChatContextResultCollection.self, from: cachedEntry.data) { let timestamp = Int32(Date().timeIntervalSince1970) if cachedEntry.timestamp + cachedResult.cacheTimeout > timestamp { - return .single(cachedResult) + return .single(RequestChatContextResultsResult(results: cachedResult, isStale: false)) + } else if staleCachedResults { + let staleCollection = ChatContextResultCollection( + botId: cachedResult.botId, + peerId: cachedResult.peerId, + query: cachedResult.query, + geoPoint: cachedResult.geoPoint, + queryId: cachedResult.queryId, + nextOffset: nil, + presentation: cachedResult.presentation, + switchPeer: cachedResult.switchPeer, + results: cachedResult.results, + cacheTimeout: 0 + ) + staleResult = RequestChatContextResultsResult(results: staleCollection, isStale: true) } } } @@ -93,8 +119,7 @@ public func requestChatContextResults(account: Account, botId: PeerId, peerId: P geoPoint = Api.InputGeoPoint.inputGeoPoint(lat: latitude, long: longitude) } - - var signal: Signal = account.network.request(Api.functions.messages.getInlineBotResults(flags: flags, bot: inputBot, peer: inputPeer, geoPoint: geoPoint, query: query, offset: offset)) + var signal: Signal = account.network.request(Api.functions.messages.getInlineBotResults(flags: flags, bot: inputBot, peer: inputPeer, geoPoint: geoPoint, query: query, offset: offset)) |> map { result -> ChatContextResultCollection? in return ChatContextResultCollection(apiResults: result, botId: bot.id, peerId: peerId, query: query, geoPoint: location) } @@ -105,12 +130,12 @@ public func requestChatContextResults(account: Account, botId: PeerId, peerId: P return .generic } } - |> mapToSignal { result -> Signal in + |> mapToSignal { result -> Signal in guard let result = result else { return .single(nil) } - return account.postbox.transaction { transaction -> ChatContextResultCollection? in + return account.postbox.transaction { transaction -> RequestChatContextResultsResult? in if result.cacheTimeout > 10 { if let resultData = try? JSONEncoder().encode(result) { let requestData = RequestData(version: requestVersion, botId: botId, peerId: peerId, query: query) @@ -120,13 +145,13 @@ public func requestChatContextResults(account: Account, botId: PeerId, peerId: P } } } - return result + return RequestChatContextResultsResult(results: result, isStale: false) } |> castError(RequestChatContextResultsError.self) } if incompleteResults { - signal = .single(nil) |> then(signal) + signal = .single(staleResult) |> then(signal) } return signal diff --git a/submodules/TelegramCore/Sources/SearchStickers.swift b/submodules/TelegramCore/Sources/SearchStickers.swift index a0cfcf01d5..9a5cfecf8c 100644 --- a/submodules/TelegramCore/Sources/SearchStickers.swift +++ b/submodules/TelegramCore/Sources/SearchStickers.swift @@ -308,6 +308,9 @@ public func searchGifs(account: Account, query: String) -> Signal mapToSignal { peer -> Signal in return requestChatContextResults(account: account, botId: peer.id, peerId: account.peerId, query: query, offset: "") + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> `catch` { error -> Signal in return .single(nil) } diff --git a/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift b/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift index 60d0f48f57..e707b682b0 100644 --- a/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift +++ b/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift @@ -240,6 +240,19 @@ func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId: PeerI } } let participants = CachedGroupParticipants(apiParticipants: chatFull.participants) + + var invitedBy: PeerId? + if let participants = participants { + for participant in participants.participants { + if participant.peerId == accountPeerId { + if participant.invitedBy != accountPeerId { + invitedBy = participant.invitedBy + } + break + } + } + } + let exportedInvitation = ExportedInvitation(apiExportedInvite: chatFull.exportedInvite) let pinnedMessageId = chatFull.pinnedMsgId.flatMap({ MessageId(peerId: peerId, namespace: Namespaces.Message.Cloud, id: $0) }) @@ -289,6 +302,7 @@ func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId: PeerI .withUpdatedAbout(chatFull.about) .withUpdatedFlags(flags) .withUpdatedHasScheduledMessages(hasScheduledMessages) + .withUpdatedInvitedBy(invitedBy) }) case .channelFull: break @@ -298,7 +312,7 @@ func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId: PeerI } } } else if let inputChannel = maybePeer.flatMap(apiInputChannel) { - return network.request(Api.functions.channels.getFullChannel(channel: inputChannel)) + let fullChannelSignal = network.request(Api.functions.channels.getFullChannel(channel: inputChannel)) |> map(Optional.init) |> `catch` { error -> Signal in if error.errorDescription == "CHANNEL_PRIVATE" { @@ -306,7 +320,14 @@ func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId: PeerI } return .single(nil) } - |> mapToSignal { result -> Signal in + let participantSignal = network.request(Api.functions.channels.getParticipant(channel: inputChannel, userId: .inputUserSelf)) + |> map(Optional.init) + |> `catch` { error -> Signal in + return .single(nil) + } + + return combineLatest(fullChannelSignal, participantSignal) + |> mapToSignal { result, participantResult -> Signal in return postbox.transaction { transaction -> Bool in if let result = result { switch result { @@ -423,6 +444,19 @@ func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId: PeerI hasScheduledMessages = true } + var invitedBy: PeerId? + if let participantResult = participantResult { + switch participantResult { + case let.channelParticipant(participant, _): + switch participant { + case let .channelParticipantSelf(_, inviterId, _): + invitedBy = PeerId(namespace: Namespaces.Peer.CloudUser, id: inviterId) + default: + break + } + } + } + var minAvailableMessageIdUpdated = false transaction.updatePeerCachedData(peerIds: [peerId], update: { _, current in var previous: CachedChannelData @@ -451,6 +485,7 @@ func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId: PeerI .withUpdatedSlowModeValidUntilTimestamp(slowmodeNextSendDate) .withUpdatedHasScheduledMessages(hasScheduledMessages) .withUpdatedStatsDatacenterId(statsDc ?? 0) + .withUpdatedInvitedBy(invitedBy) }) if let minAvailableMessageId = minAvailableMessageId, minAvailableMessageIdUpdated { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 91bfaf681b..54f0e30679 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -2949,2563 +2949,2569 @@ public final class PresentationStrings: Equatable { public var AppWallet_Intro_Text: String { return self._s[2545]! } public var Appearance_BubbleCornersSetting: String { return self._s[2546]! } public var Calls_RatingFeedback: String { return self._s[2547]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2549]! } - public var Wallet_Alert_OK: String { return self._s[2550]! } - public var NotificationsSound_Pulse: String { return self._s[2551]! } - public var Watch_LastSeen_Lately: String { return self._s[2552]! } - public var ReportGroupLocation_Report: String { return self._s[2555]! } - public var Widget_NoUsers: String { return self._s[2556]! } - public var Conversation_UnvotePoll: String { return self._s[2557]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2559]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2560]! } - public var NotificationsSound_Circles: String { return self._s[2561]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2564]! } - public var Wallet_Settings_DeleteWallet: String { return self._s[2565]! } - public var ChatListFolder_CategoryBots: String { return self._s[2566]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2567]! } - public var Proxy_TooltipUnavailable: String { return self._s[2568]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[2570]! } - public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[2572]! } - public var Conversation_FileDropbox: String { return self._s[2573]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[2574]! } - public var Tour_Text3: String { return self._s[2576]! } - public var Login_ResetAccountProtected_Title: String { return self._s[2579]! } - public var ChatListFolder_NamePlaceholder: String { return self._s[2580]! } - public var GroupPermission_NoSendMessages: String { return self._s[2581]! } - public var WallpaperSearch_ColorTitle: String { return self._s[2582]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2583]! } + public func Conversation_NoticeInvitedByInGroup(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2549]!, self._r[2549]!, [_0]) + } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2550]! } + public var Wallet_Alert_OK: String { return self._s[2551]! } + public var NotificationsSound_Pulse: String { return self._s[2552]! } + public var Watch_LastSeen_Lately: String { return self._s[2553]! } + public var ReportGroupLocation_Report: String { return self._s[2556]! } + public var Widget_NoUsers: String { return self._s[2557]! } + public var Conversation_UnvotePoll: String { return self._s[2558]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2560]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2561]! } + public var NotificationsSound_Circles: String { return self._s[2562]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2565]! } + public var Wallet_Settings_DeleteWallet: String { return self._s[2566]! } + public var ChatListFolder_CategoryBots: String { return self._s[2567]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2568]! } + public var Proxy_TooltipUnavailable: String { return self._s[2569]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[2571]! } + public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[2573]! } + public var Conversation_FileDropbox: String { return self._s[2574]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[2575]! } + public var Tour_Text3: String { return self._s[2577]! } + public var Login_ResetAccountProtected_Title: String { return self._s[2580]! } + public var ChatListFolder_NamePlaceholder: String { return self._s[2581]! } + public var GroupPermission_NoSendMessages: String { return self._s[2582]! } + public var WallpaperSearch_ColorTitle: String { return self._s[2583]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2584]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2585]!, self._r[2585]!, [_0]) + return formatWithArgumentRanges(self._s[2586]!, self._r[2586]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[2586]! } - public var Checkout_ShippingOption_Title: String { return self._s[2587]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2588]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[2587]! } + public var Checkout_ShippingOption_Title: String { return self._s[2588]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2589]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2589]!, self._r[2589]!, [_0]) - } - public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2590]!, self._r[2590]!, [_0]) } - public var Channel_Management_LabelAdministrator: String { return self._s[2591]! } - public var EditTheme_FileReadError: String { return self._s[2592]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[2593]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2594]! } - public var AutoDownloadSettings_Photos: String { return self._s[2596]! } - public var Appearance_PreviewIncomingText: String { return self._s[2597]! } - public var ChatList_Context_MarkAllAsRead: String { return self._s[2598]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[2599]! } - public var ChatListFolder_ExcludeSectionInfo: String { return self._s[2600]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2601]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2602]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2603]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2604]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2605]! } - public var Notification_SecretChatScreenshot: String { return self._s[2606]! } - public var AccessDenied_Wallpapers: String { return self._s[2607]! } - public var ChatList_Context_Mute: String { return self._s[2609]! } - public var Passport_Address_City: String { return self._s[2610]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2611]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[2612]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2613]! } - public var AccessDenied_LocationDisabled: String { return self._s[2614]! } - public var Group_Location_Title: String { return self._s[2615]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2617]! } - public var GroupInfo_Sound: String { return self._s[2618]! } - public var SettingsSearch_Synonyms_ChatSettings_OpenLinksIn: String { return self._s[2619]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[2620]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2621]! } - public var Contacts_Title: String { return self._s[2622]! } - public var EditTheme_ThemeTemplateAlertText: String { return self._s[2623]! } - public var Passport_Language_fr: String { return self._s[2624]! } - public var TwoFactorSetup_EmailVerification_Action: String { return self._s[2625]! } - public var Notifications_ResetAllNotifications: String { return self._s[2626]! } - public var IntentsSettings_SuggestedChats: String { return self._s[2628]! } - public var PrivacySettings_SecurityTitle: String { return self._s[2630]! } - public var Checkout_NewCard_Title: String { return self._s[2631]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[2632]! } - public var Conversation_ForwardChats: String { return self._s[2633]! } - public var Wallet_SecureStorageReset_PasscodeText: String { return self._s[2635]! } - public var PasscodeSettings_4DigitCode: String { return self._s[2636]! } - public var Settings_FAQ: String { return self._s[2638]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2639]! } - public var Conversation_ContextMenuForward: String { return self._s[2640]! } - public var VoiceOver_Chat_YourPhoto: String { return self._s[2643]! } - public var PrivacyPolicy_Title: String { return self._s[2646]! } - public var Notifications_TextTone: String { return self._s[2647]! } - public var Profile_CreateNewContact: String { return self._s[2648]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2649]! } - public var TwoFactorSetup_EmailVerification_Title: String { return self._s[2651]! } - public var Call_Speaker: String { return self._s[2652]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[2653]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2655]! } - public var Channel_Username_InvalidCharacters: String { return self._s[2656]! } + public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2591]!, self._r[2591]!, [_0]) + } + public var Channel_Management_LabelAdministrator: String { return self._s[2592]! } + public var EditTheme_FileReadError: String { return self._s[2593]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[2594]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2595]! } + public var AutoDownloadSettings_Photos: String { return self._s[2597]! } + public var Appearance_PreviewIncomingText: String { return self._s[2598]! } + public var ChatList_Context_MarkAllAsRead: String { return self._s[2599]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[2600]! } + public var ChatListFolder_ExcludeSectionInfo: String { return self._s[2601]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2602]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2603]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2604]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2605]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2606]! } + public var Notification_SecretChatScreenshot: String { return self._s[2607]! } + public var AccessDenied_Wallpapers: String { return self._s[2608]! } + public var ChatList_Context_Mute: String { return self._s[2610]! } + public var Passport_Address_City: String { return self._s[2611]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2612]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[2613]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2614]! } + public var AccessDenied_LocationDisabled: String { return self._s[2615]! } + public var Group_Location_Title: String { return self._s[2616]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2618]! } + public var GroupInfo_Sound: String { return self._s[2619]! } + public var SettingsSearch_Synonyms_ChatSettings_OpenLinksIn: String { return self._s[2620]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[2621]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2622]! } + public var Contacts_Title: String { return self._s[2623]! } + public var EditTheme_ThemeTemplateAlertText: String { return self._s[2624]! } + public var Passport_Language_fr: String { return self._s[2625]! } + public var TwoFactorSetup_EmailVerification_Action: String { return self._s[2626]! } + public var Notifications_ResetAllNotifications: String { return self._s[2627]! } + public var IntentsSettings_SuggestedChats: String { return self._s[2629]! } + public var PrivacySettings_SecurityTitle: String { return self._s[2631]! } + public var Checkout_NewCard_Title: String { return self._s[2632]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[2633]! } + public var Conversation_ForwardChats: String { return self._s[2634]! } + public var Wallet_SecureStorageReset_PasscodeText: String { return self._s[2636]! } + public var PasscodeSettings_4DigitCode: String { return self._s[2637]! } + public var Settings_FAQ: String { return self._s[2639]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2640]! } + public var Conversation_ContextMenuForward: String { return self._s[2641]! } + public var VoiceOver_Chat_YourPhoto: String { return self._s[2644]! } + public var PrivacyPolicy_Title: String { return self._s[2647]! } + public var Notifications_TextTone: String { return self._s[2648]! } + public var Profile_CreateNewContact: String { return self._s[2649]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2650]! } + public var TwoFactorSetup_EmailVerification_Title: String { return self._s[2652]! } + public var Call_Speaker: String { return self._s[2653]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[2654]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2656]! } + public var Channel_Username_InvalidCharacters: String { return self._s[2657]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2657]!, self._r[2657]!, [_0]) + return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_0]) } - public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2658]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[2659]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[2660]! } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2661]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[2662]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[2663]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[2664]! } - public var Bot_Unblock: String { return self._s[2665]! } - public var TextFormat_Italic: String { return self._s[2666]! } - public var WallpaperSearch_ColorPink: String { return self._s[2667]! } - public var Settings_About_Help: String { return self._s[2669]! } - public var SearchImages_Title: String { return self._s[2670]! } - public var Weekday_Wednesday: String { return self._s[2671]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[2672]! } - public var ExplicitContent_AlertTitle: String { return self._s[2673]! } + public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2659]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[2660]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[2661]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2662]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[2663]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[2664]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[2665]! } + public var Bot_Unblock: String { return self._s[2666]! } + public var TextFormat_Italic: String { return self._s[2667]! } + public var WallpaperSearch_ColorPink: String { return self._s[2668]! } + public var Settings_About_Help: String { return self._s[2670]! } + public var SearchImages_Title: String { return self._s[2671]! } + public var Weekday_Wednesday: String { return self._s[2672]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[2673]! } + public var ExplicitContent_AlertTitle: String { return self._s[2674]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2674]!, self._r[2674]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2675]!, self._r[2675]!, [_1, _2, _3]) } - public var Channel_DiscussionGroup_Create: String { return self._s[2675]! } - public var Weekday_Thursday: String { return self._s[2676]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2677]! } - public var Channel_Members_AddMembersHelp: String { return self._s[2678]! } + public var Channel_DiscussionGroup_Create: String { return self._s[2676]! } + public var Weekday_Thursday: String { return self._s[2677]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2678]! } + public var Channel_Members_AddMembersHelp: String { return self._s[2679]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_0]) + return formatWithArgumentRanges(self._s[2680]!, self._r[2680]!, [_0]) } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2680]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2681]! } - public var Passport_RequestedInformation: String { return self._s[2682]! } - public var Login_PhoneAndCountryHelp: String { return self._s[2683]! } - public var Conversation_EncryptionProcessing: String { return self._s[2685]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2686]! } - public var PhotoEditor_EnhanceTool: String { return self._s[2688]! } - public var Channel_Setup_Title: String { return self._s[2689]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[2690]! } - public var Conversation_SearchPlaceholder: String { return self._s[2691]! } - public var OldChannels_GroupEmptyFormat: String { return self._s[2692]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2693]! } - public var Checkout_ErrorGeneric: String { return self._s[2694]! } - public var Passport_Language_hu: String { return self._s[2695]! } - public var GroupPermission_EditingDisabled: String { return self._s[2696]! } - public var Wallet_Month_ShortSeptember: String { return self._s[2698]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2681]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2682]! } + public var Passport_RequestedInformation: String { return self._s[2683]! } + public var Login_PhoneAndCountryHelp: String { return self._s[2684]! } + public var Conversation_EncryptionProcessing: String { return self._s[2686]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2687]! } + public var PhotoEditor_EnhanceTool: String { return self._s[2689]! } + public var Channel_Setup_Title: String { return self._s[2690]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[2691]! } + public var Conversation_SearchPlaceholder: String { return self._s[2692]! } + public var OldChannels_GroupEmptyFormat: String { return self._s[2693]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2694]! } + public var Checkout_ErrorGeneric: String { return self._s[2695]! } + public var Passport_Language_hu: String { return self._s[2696]! } + public var GroupPermission_EditingDisabled: String { return self._s[2697]! } + public var Wallet_Month_ShortSeptember: String { return self._s[2699]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2699]!, self._r[2699]!, [_0]) + return formatWithArgumentRanges(self._s[2700]!, self._r[2700]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2702]!, self._r[2702]!, [_1]) + return formatWithArgumentRanges(self._s[2703]!, self._r[2703]!, [_1]) } - public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2703]! } + public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2704]! } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2704]!, self._r[2704]!, [_0]) + return formatWithArgumentRanges(self._s[2705]!, self._r[2705]!, [_0]) } - public var Conversation_CloudStorageInfo_Title: String { return self._s[2705]! } - public var Group_Location_Info: String { return self._s[2706]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2707]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2708]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[2706]! } + public var Group_Location_Info: String { return self._s[2707]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2708]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2709]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2709]!, self._r[2709]!, [_0]) + return formatWithArgumentRanges(self._s[2710]!, self._r[2710]!, [_0]) } - public var Conversation_ClearPrivateHistory: String { return self._s[2710]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[2711]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[2712]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[2713]! } + public var Conversation_ClearPrivateHistory: String { return self._s[2711]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[2712]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[2713]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[2714]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2714]!, self._r[2714]!, [_0]) - } - public func Notification_PinnedQuizMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_0]) } - public var Passport_Language_cs: String { return self._s[2716]! } - public var Message_PinnedAnimationMessage: String { return self._s[2718]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[2720]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2721]! } - public var Wallet_Info_TransactionTo: String { return self._s[2723]! } - public var Stats_ViewsBySourceTitle: String { return self._s[2724]! } - public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[2725]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2726]! } - public var Embed_PlayingInPIP: String { return self._s[2727]! } - public var Appearance_ThemePreview_Chat_3_TextWithLink: String { return self._s[2728]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[2729]! } + public func Notification_PinnedQuizMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2716]!, self._r[2716]!, [_0]) + } + public var Passport_Language_cs: String { return self._s[2717]! } + public var Message_PinnedAnimationMessage: String { return self._s[2719]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[2721]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2722]! } + public var Wallet_Info_TransactionTo: String { return self._s[2724]! } + public var Stats_ViewsBySourceTitle: String { return self._s[2725]! } + public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[2726]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2727]! } + public var Embed_PlayingInPIP: String { return self._s[2728]! } + public var Appearance_ThemePreview_Chat_3_TextWithLink: String { return self._s[2729]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[2730]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2730]!, self._r[2730]!, [_0]) + return formatWithArgumentRanges(self._s[2731]!, self._r[2731]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[2731]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[2732]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2732]!, self._r[2732]!, [_1]) + return formatWithArgumentRanges(self._s[2733]!, self._r[2733]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[2733]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2734]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2735]! } - public var AutoNightTheme_System: String { return self._s[2736]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[2737]! } - public var CreatePoll_QuizTitle: String { return self._s[2738]! } - public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2739]! } - public var VoiceOver_Chat_PagePreview: String { return self._s[2740]! } + public var Notification_PaymentSent: String { return self._s[2734]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2735]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2736]! } + public var AutoNightTheme_System: String { return self._s[2737]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[2738]! } + public var CreatePoll_QuizTitle: String { return self._s[2739]! } + public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2740]! } + public var VoiceOver_Chat_PagePreview: String { return self._s[2741]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2743]!, self._r[2743]!, [_1]) - } - public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2744]!, self._r[2744]!, [_1]) } - public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2745]!, self._r[2745]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2747]! } - public var PasscodeSettings_HelpTop: String { return self._s[2748]! } - public var Conversation_WalletRequiredTitle: String { return self._s[2749]! } - public var PeerInfo_AddToContacts: String { return self._s[2750]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2751]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2752]! } - public var FeaturedStickers_OtherSection: String { return self._s[2753]! } - public var EditTheme_ShortLink: String { return self._s[2754]! } - public var Theme_Colors_ColorWallpaperWarning: String { return self._s[2755]! } - public var ProxyServer_VoiceOver_Active: String { return self._s[2756]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2757]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2758]! } - public var Call_Accept: String { return self._s[2760]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2761]! } - public var Month_GenMarch: String { return self._s[2763]! } - public var PhotoEditor_ShadowsTool: String { return self._s[2764]! } - public var LoginPassword_Title: String { return self._s[2765]! } - public var Call_End: String { return self._s[2766]! } - public var Watch_Conversation_GroupInfo: String { return self._s[2767]! } - public var VoiceOver_Chat_Contact: String { return self._s[2768]! } - public var EditTheme_Create_Preview_IncomingText: String { return self._s[2769]! } - public var CallSettings_Always: String { return self._s[2770]! } - public var CallFeedback_Success: String { return self._s[2771]! } - public var TwoStepAuth_SetupHint: String { return self._s[2772]! } + public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2746]!, self._r[2746]!, [_1]) + } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2748]! } + public var PasscodeSettings_HelpTop: String { return self._s[2749]! } + public var Conversation_WalletRequiredTitle: String { return self._s[2750]! } + public var PeerInfo_AddToContacts: String { return self._s[2751]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2752]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2753]! } + public var FeaturedStickers_OtherSection: String { return self._s[2754]! } + public var EditTheme_ShortLink: String { return self._s[2755]! } + public var Theme_Colors_ColorWallpaperWarning: String { return self._s[2756]! } + public var ProxyServer_VoiceOver_Active: String { return self._s[2757]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2758]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2759]! } + public var Call_Accept: String { return self._s[2761]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2762]! } + public var Month_GenMarch: String { return self._s[2764]! } + public var PhotoEditor_ShadowsTool: String { return self._s[2765]! } + public var LoginPassword_Title: String { return self._s[2766]! } + public var Call_End: String { return self._s[2767]! } + public var Watch_Conversation_GroupInfo: String { return self._s[2768]! } + public var VoiceOver_Chat_Contact: String { return self._s[2769]! } + public var EditTheme_Create_Preview_IncomingText: String { return self._s[2770]! } + public var CallSettings_Always: String { return self._s[2771]! } + public var CallFeedback_Success: String { return self._s[2772]! } + public var TwoStepAuth_SetupHint: String { return self._s[2773]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2773]!, self._r[2773]!, [_1]) + return formatWithArgumentRanges(self._s[2774]!, self._r[2774]!, [_1]) } - public var ConversationProfile_UsersTooMuchError: String { return self._s[2774]! } - public var PeerInfo_ButtonAddMember: String { return self._s[2775]! } - public var Login_PhoneTitle: String { return self._s[2776]! } - public var Passport_FieldPhoneHelp: String { return self._s[2777]! } - public var Weekday_ShortSunday: String { return self._s[2778]! } - public var Passport_InfoFAQ_URL: String { return self._s[2779]! } - public var ContactInfo_Job: String { return self._s[2781]! } - public var UserInfo_InviteBotToGroup: String { return self._s[2782]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[2783]! } - public var CreatePoll_QuizTip: String { return self._s[2784]! } - public var TwoFactorSetup_Email_Text: String { return self._s[2785]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2786]! } - public var Invite_ChannelsTooMuch: String { return self._s[2787]! } - public var Wallet_Send_ConfirmationConfirm: String { return self._s[2788]! } - public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[2789]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2790]! } - public var Wallet_Receive_AmountText: String { return self._s[2791]! } - public var TwoStepAuth_Disable: String { return self._s[2792]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2793]! } - public var CallFeedback_ReasonNoise: String { return self._s[2794]! } - public var Appearance_AppIconDefault: String { return self._s[2796]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[2797]! } - public var MediaPicker_AddCaption: String { return self._s[2798]! } - public var CallSettings_TabIconDescription: String { return self._s[2799]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[2775]! } + public var PeerInfo_ButtonAddMember: String { return self._s[2776]! } + public var Login_PhoneTitle: String { return self._s[2777]! } + public var Passport_FieldPhoneHelp: String { return self._s[2778]! } + public var Weekday_ShortSunday: String { return self._s[2779]! } + public var Passport_InfoFAQ_URL: String { return self._s[2780]! } + public var ContactInfo_Job: String { return self._s[2782]! } + public var UserInfo_InviteBotToGroup: String { return self._s[2783]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[2784]! } + public var CreatePoll_QuizTip: String { return self._s[2785]! } + public var TwoFactorSetup_Email_Text: String { return self._s[2786]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2787]! } + public var Invite_ChannelsTooMuch: String { return self._s[2788]! } + public var Wallet_Send_ConfirmationConfirm: String { return self._s[2789]! } + public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[2790]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2791]! } + public var Wallet_Receive_AmountText: String { return self._s[2792]! } + public var TwoStepAuth_Disable: String { return self._s[2793]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2794]! } + public var CallFeedback_ReasonNoise: String { return self._s[2795]! } + public var Appearance_AppIconDefault: String { return self._s[2797]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[2798]! } + public var MediaPicker_AddCaption: String { return self._s[2799]! } + public var CallSettings_TabIconDescription: String { return self._s[2800]! } public func VoiceOver_Chat_Caption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2800]!, self._r[2800]!, [_0]) + return formatWithArgumentRanges(self._s[2801]!, self._r[2801]!, [_0]) } - public var IntentsSettings_SuggestedChatsGroups: String { return self._s[2801]! } + public var IntentsSettings_SuggestedChatsGroups: String { return self._s[2802]! } public func Map_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2802]!, self._r[2802]!, [_0]) + return formatWithArgumentRanges(self._s[2803]!, self._r[2803]!, [_0]) } - public var CreatePoll_ExplanationHeader: String { return self._s[2804]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2805]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2806]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[2807]! } - public var DialogList_SearchSectionRecent: String { return self._s[2808]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[2809]! } - public var CreatePoll_Anonymous: String { return self._s[2810]! } - public var LogoutOptions_ClearCacheText: String { return self._s[2813]! } - public var LastSeen_WithinAWeek: String { return self._s[2814]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[2815]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[2817]! } - public var VoiceOver_Media_PlaybackRateNormal: String { return self._s[2818]! } + public var CreatePoll_ExplanationHeader: String { return self._s[2805]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2806]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2807]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[2808]! } + public var DialogList_SearchSectionRecent: String { return self._s[2809]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[2810]! } + public var CreatePoll_Anonymous: String { return self._s[2811]! } + public var LogoutOptions_ClearCacheText: String { return self._s[2814]! } + public var LastSeen_WithinAWeek: String { return self._s[2815]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[2816]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[2818]! } + public var VoiceOver_Media_PlaybackRateNormal: String { return self._s[2819]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2819]!, self._r[2819]!, [_0]) + return formatWithArgumentRanges(self._s[2820]!, self._r[2820]!, [_0]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2820]! } - public var Conversation_StatusLeftGroup: String { return self._s[2821]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2822]! } - public var OwnershipTransfer_Transfer: String { return self._s[2824]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2825]! } - public var GroupPermission_AddSuccess: String { return self._s[2826]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2828]! } - public var Conversation_ContextMenuCopy: String { return self._s[2829]! } - public var AccessDenied_CallMicrophone: String { return self._s[2830]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2821]! } + public var Conversation_StatusLeftGroup: String { return self._s[2822]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2823]! } + public var OwnershipTransfer_Transfer: String { return self._s[2825]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2826]! } + public var GroupPermission_AddSuccess: String { return self._s[2827]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2829]! } + public var Conversation_ContextMenuCopy: String { return self._s[2830]! } + public var AccessDenied_CallMicrophone: String { return self._s[2831]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2831]!, self._r[2831]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2832]!, self._r[2832]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[2832]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2833]! } - public var Checkout_PaymentMethod_New: String { return self._s[2834]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[2835]! } - public var PhotoEditor_QualityTool: String { return self._s[2836]! } - public var Login_SendCodeViaSms: String { return self._s[2837]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2838]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[2839]! } - public var Wallet_Receive_CopyAddress: String { return self._s[2840]! } - public var Login_EmailNotConfiguredError: String { return self._s[2841]! } - public var SocksProxySetup_Status: String { return self._s[2842]! } - public var Conversation_ScheduleMessage_SendWhenOnline: String { return self._s[2843]! } - public var PrivacyPolicy_Accept: String { return self._s[2844]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2845]! } - public var Appearance_AppIconClassicX: String { return self._s[2846]! } + public var Login_InvalidFirstNameError: String { return self._s[2833]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2834]! } + public var Checkout_PaymentMethod_New: String { return self._s[2835]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[2836]! } + public var PhotoEditor_QualityTool: String { return self._s[2837]! } + public var Login_SendCodeViaSms: String { return self._s[2838]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2839]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[2840]! } + public var Wallet_Receive_CopyAddress: String { return self._s[2841]! } + public var Login_EmailNotConfiguredError: String { return self._s[2842]! } + public var SocksProxySetup_Status: String { return self._s[2843]! } + public var Conversation_ScheduleMessage_SendWhenOnline: String { return self._s[2844]! } + public var PrivacyPolicy_Accept: String { return self._s[2845]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2846]! } + public var Appearance_AppIconClassicX: String { return self._s[2847]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2847]!, self._r[2847]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2848]!, self._r[2848]!, [_1, _2, _3]) } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[2848]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2850]! } - public var AutoNightTheme_Automatic: String { return self._s[2851]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2852]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2853]! } - public var Cache_Help: String { return self._s[2854]! } - public var Group_ErrorAccessDenied: String { return self._s[2855]! } - public var Passport_Language_fa: String { return self._s[2856]! } - public var Wallet_Intro_Text: String { return self._s[2857]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2858]! } - public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2859]! } - public var PrivacySettings_LastSeen: String { return self._s[2860]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[2849]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2851]! } + public var AutoNightTheme_Automatic: String { return self._s[2852]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2853]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2854]! } + public var Cache_Help: String { return self._s[2855]! } + public var Group_ErrorAccessDenied: String { return self._s[2856]! } + public var Passport_Language_fa: String { return self._s[2857]! } + public var Wallet_Intro_Text: String { return self._s[2858]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2859]! } + public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2860]! } + public var PrivacySettings_LastSeen: String { return self._s[2861]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2861]!, self._r[2861]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2862]!, self._r[2862]!, [_0, _1]) } - public var Wallet_Configuration_Apply: String { return self._s[2865]! } - public var Preview_SaveGif: String { return self._s[2866]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2867]! } - public var Profile_About: String { return self._s[2868]! } - public var Channel_About_Placeholder: String { return self._s[2869]! } - public var Login_InfoTitle: String { return self._s[2870]! } + public var Wallet_Configuration_Apply: String { return self._s[2866]! } + public var Preview_SaveGif: String { return self._s[2867]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2868]! } + public var Profile_About: String { return self._s[2869]! } + public var Channel_About_Placeholder: String { return self._s[2870]! } + public var Login_InfoTitle: String { return self._s[2871]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2871]!, self._r[2871]!, [_0]) + return formatWithArgumentRanges(self._s[2872]!, self._r[2872]!, [_0]) } - public var EditTheme_Expand_Preview_IncomingReplyText: String { return self._s[2872]! } - public var Watch_Suggestion_CantTalk: String { return self._s[2874]! } - public var ContactInfo_Title: String { return self._s[2875]! } - public var Media_ShareThisVideo: String { return self._s[2876]! } - public var Chat_GenericPsaTooltip: String { return self._s[2877]! } - public var Weekday_ShortFriday: String { return self._s[2878]! } - public var AccessDenied_Contacts: String { return self._s[2880]! } - public var Notification_CallIncomingShort: String { return self._s[2881]! } - public var Group_Setup_TypePublic: String { return self._s[2882]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2883]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2884]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2887]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2888]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2889]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2890]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2891]! } + public var EditTheme_Expand_Preview_IncomingReplyText: String { return self._s[2873]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2875]! } + public var ContactInfo_Title: String { return self._s[2876]! } + public var Media_ShareThisVideo: String { return self._s[2877]! } + public var Chat_GenericPsaTooltip: String { return self._s[2878]! } + public var Weekday_ShortFriday: String { return self._s[2879]! } + public var AccessDenied_Contacts: String { return self._s[2881]! } + public var Notification_CallIncomingShort: String { return self._s[2882]! } + public var Group_Setup_TypePublic: String { return self._s[2883]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2884]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2885]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2888]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2889]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2890]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2891]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2892]! } public func Wallet_SecureStorageChanged_BiometryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2892]!, self._r[2892]!, [_0]) + return formatWithArgumentRanges(self._s[2893]!, self._r[2893]!, [_0]) } - public var DialogList_Typing: String { return self._s[2893]! } - public var CallFeedback_IncludeLogs: String { return self._s[2895]! } - public var Checkout_Phone: String { return self._s[2897]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2900]! } - public var Privacy_Calls_Integration: String { return self._s[2901]! } - public var Notifications_PermissionsAllow: String { return self._s[2902]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2908]! } - public var Settings_ChatSettings: String { return self._s[2909]! } - public var Conversation_SendingOptionsTooltip: String { return self._s[2910]! } + public var DialogList_Typing: String { return self._s[2894]! } + public var CallFeedback_IncludeLogs: String { return self._s[2896]! } + public var Checkout_Phone: String { return self._s[2898]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2901]! } + public var Privacy_Calls_Integration: String { return self._s[2902]! } + public var Notifications_PermissionsAllow: String { return self._s[2903]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2909]! } + public var Settings_ChatSettings: String { return self._s[2910]! } + public var Conversation_SendingOptionsTooltip: String { return self._s[2911]! } public func UserInfo_StartSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_0]) + return formatWithArgumentRanges(self._s[2913]!, self._r[2913]!, [_0]) } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2913]!, self._r[2913]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2914]!, self._r[2914]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2915]! } + public var GroupRemoved_DeleteUser: String { return self._s[2916]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2916]!, self._r[2916]!, [_0]) + return formatWithArgumentRanges(self._s[2917]!, self._r[2917]!, [_0]) } - public var ChatListFolder_CategoryMuted: String { return self._s[2917]! } + public var ChatListFolder_CategoryMuted: String { return self._s[2918]! } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2918]!, self._r[2918]!, [_1]) + return formatWithArgumentRanges(self._s[2919]!, self._r[2919]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2919]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2920]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2922]! } - public var Conversation_Unblock: String { return self._s[2923]! } - public var PrivacySettings_DataSettings: String { return self._s[2924]! } - public var WallpaperPreview_PatternPaternApply: String { return self._s[2925]! } - public var Group_PublicLink_Info: String { return self._s[2926]! } + public var Login_ContinueWithLocalization: String { return self._s[2920]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2921]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2923]! } + public var Conversation_Unblock: String { return self._s[2924]! } + public var PrivacySettings_DataSettings: String { return self._s[2925]! } + public var WallpaperPreview_PatternPaternApply: String { return self._s[2926]! } + public var Group_PublicLink_Info: String { return self._s[2927]! } public func Wallet_Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2927]!, self._r[2927]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2928]!, self._r[2928]!, [_1, _2, _3]) } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2928]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2929]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2929]!, self._r[2929]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2930]!, self._r[2930]!, [_0, _1]) } - public var ChatList_FolderAllChats: String { return self._s[2930]! } - public var OldChannels_ChannelsHeader: String { return self._s[2932]! } - public var Wallet_RestoreFailed_CreateWallet: String { return self._s[2933]! } - public var PrivacySettings_Passcode: String { return self._s[2935]! } - public var Call_Mute: String { return self._s[2936]! } - public var Wallet_Weekday_Yesterday: String { return self._s[2937]! } - public var Passport_Language_dz: String { return self._s[2938]! } - public var Wallet_Receive_AmountHeader: String { return self._s[2939]! } - public var Wallet_TransactionInfo_OtherFeeInfoUrl: String { return self._s[2940]! } - public var Passport_Language_tk: String { return self._s[2941]! } + public var ChatList_FolderAllChats: String { return self._s[2931]! } + public var OldChannels_ChannelsHeader: String { return self._s[2933]! } + public var Wallet_RestoreFailed_CreateWallet: String { return self._s[2934]! } + public var PrivacySettings_Passcode: String { return self._s[2936]! } + public var Call_Mute: String { return self._s[2937]! } + public var Wallet_Weekday_Yesterday: String { return self._s[2938]! } + public var Passport_Language_dz: String { return self._s[2939]! } + public var Wallet_Receive_AmountHeader: String { return self._s[2940]! } + public var Wallet_TransactionInfo_OtherFeeInfoUrl: String { return self._s[2941]! } + public var Passport_Language_tk: String { return self._s[2942]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2942]!, self._r[2942]!, [_0]) + return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_0]) } - public var Settings_Search: String { return self._s[2943]! } - public var Wallet_Month_ShortFebruary: String { return self._s[2944]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2945]! } - public var Wallet_Configuration_SourceJSON: String { return self._s[2946]! } - public var Conversation_ContextMenuReply: String { return self._s[2947]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2948]! } - public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2949]! } - public var Tour_Title1: String { return self._s[2950]! } - public var Wallet_Alert_Cancel: String { return self._s[2951]! } - public var Stats_Total: String { return self._s[2953]! } - public var Conversation_ClearGroupHistory: String { return self._s[2954]! } - public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[2955]! } - public var WallpaperPreview_Motion: String { return self._s[2956]! } + public var Settings_Search: String { return self._s[2944]! } + public var Wallet_Month_ShortFebruary: String { return self._s[2945]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2946]! } + public var Wallet_Configuration_SourceJSON: String { return self._s[2947]! } + public var Conversation_ContextMenuReply: String { return self._s[2948]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2949]! } + public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2950]! } + public var Tour_Title1: String { return self._s[2951]! } + public var Wallet_Alert_Cancel: String { return self._s[2952]! } + public var Stats_Total: String { return self._s[2954]! } + public var Conversation_ClearGroupHistory: String { return self._s[2955]! } + public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[2956]! } + public var WallpaperPreview_Motion: String { return self._s[2957]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2957]!, self._r[2957]!, [_0]) + return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_0]) } - public var Wallet_Configuration_ApplyErrorTextJSONInvalidData: String { return self._s[2958]! } - public var Call_RateCall: String { return self._s[2959]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2960]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2961]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2962]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2964]! } + public var Wallet_Configuration_ApplyErrorTextJSONInvalidData: String { return self._s[2959]! } + public var Call_RateCall: String { return self._s[2960]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2961]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2962]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2963]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2965]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2966]!, self._r[2966]!, [_0]) + return formatWithArgumentRanges(self._s[2967]!, self._r[2967]!, [_0]) } - public var Compose_Create: String { return self._s[2967]! } - public var Contacts_InviteToTelegram: String { return self._s[2968]! } - public var GroupInfo_Notifications: String { return self._s[2969]! } - public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[2971]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2972]! } - public var Month_GenApril: String { return self._s[2973]! } - public var Appearance_AutoNightTheme: String { return self._s[2974]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2976]! } - public var Login_CodeSentSms: String { return self._s[2978]! } + public var Compose_Create: String { return self._s[2968]! } + public var Contacts_InviteToTelegram: String { return self._s[2969]! } + public var GroupInfo_Notifications: String { return self._s[2970]! } + public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[2972]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2973]! } + public var Month_GenApril: String { return self._s[2974]! } + public var Appearance_AutoNightTheme: String { return self._s[2975]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2977]! } + public var Login_CodeSentSms: String { return self._s[2979]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_0]) + return formatWithArgumentRanges(self._s[2980]!, self._r[2980]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2980]! } - public var LogoutOptions_ContactSupportText: String { return self._s[2981]! } - public var Passport_Language_hr: String { return self._s[2982]! } - public var Common_ActionNotAllowedError: String { return self._s[2983]! } + public var EmptyGroupInfo_Line3: String { return self._s[2981]! } + public var LogoutOptions_ContactSupportText: String { return self._s[2982]! } + public var Passport_Language_hr: String { return self._s[2983]! } + public var Common_ActionNotAllowedError: String { return self._s[2984]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0]) + return formatWithArgumentRanges(self._s[2985]!, self._r[2985]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2985]! } - public var Wallet_Info_TransactionFrom: String { return self._s[2986]! } - public var Wallet_Send_ErrorDecryptionFailed: String { return self._s[2987]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2988]! } - public var Privacy_SecretChatsTitle: String { return self._s[2989]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2991]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2992]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2993]! } - public var ChatListFolder_NameSectionHeader: String { return self._s[2994]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[2995]! } - public var Appearance_ThemePreview_Chat_7_Text: String { return self._s[2996]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[2997]! } - public var Preview_DeleteGif: String { return self._s[2998]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2999]! } - public var Group_ErrorNotMutualContact: String { return self._s[3000]! } - public var Notification_MessageLifetime5s: String { return self._s[3001]! } - public var Wallet_Send_OwnAddressAlertText: String { return self._s[3002]! } - public var OldChannels_ChannelFormat: String { return self._s[3003]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2986]! } + public var Wallet_Info_TransactionFrom: String { return self._s[2987]! } + public var Wallet_Send_ErrorDecryptionFailed: String { return self._s[2988]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2989]! } + public var Privacy_SecretChatsTitle: String { return self._s[2990]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2992]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2993]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2994]! } + public var ChatListFolder_NameSectionHeader: String { return self._s[2995]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[2996]! } + public var Appearance_ThemePreview_Chat_7_Text: String { return self._s[2997]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[2998]! } + public var Preview_DeleteGif: String { return self._s[2999]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[3000]! } + public var Group_ErrorNotMutualContact: String { return self._s[3001]! } + public var Notification_MessageLifetime5s: String { return self._s[3002]! } + public var Wallet_Send_OwnAddressAlertText: String { return self._s[3003]! } + public var OldChannels_ChannelFormat: String { return self._s[3004]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_0]) + return formatWithArgumentRanges(self._s[3005]!, self._r[3005]!, [_0]) } - public var VoiceOver_Chat_Video: String { return self._s[3005]! } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[3007]! } - public var ReportSpam_DeleteThisChat: String { return self._s[3008]! } - public var Passport_Address_AddBankStatement: String { return self._s[3009]! } - public var Notification_CallIncoming: String { return self._s[3010]! } - public var Wallet_Words_NotDoneTitle: String { return self._s[3011]! } - public var Compose_NewGroupTitle: String { return self._s[3012]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3014]! } - public var Passport_Address_Postcode: String { return self._s[3016]! } + public var VoiceOver_Chat_Video: String { return self._s[3006]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[3008]! } + public var ReportSpam_DeleteThisChat: String { return self._s[3009]! } + public var Passport_Address_AddBankStatement: String { return self._s[3010]! } + public var Notification_CallIncoming: String { return self._s[3011]! } + public var Wallet_Words_NotDoneTitle: String { return self._s[3012]! } + public var Compose_NewGroupTitle: String { return self._s[3013]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3015]! } + public var Passport_Address_Postcode: String { return self._s[3017]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3017]!, self._r[3017]!, [_0]) + return formatWithArgumentRanges(self._s[3018]!, self._r[3018]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[3018]! } - public var Wallet_Month_ShortOctober: String { return self._s[3019]! } - public var VoiceOver_Chat_YourMusic: String { return self._s[3020]! } - public var WallpaperColors_Title: String { return self._s[3021]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[3022]! } - public var VoiceOver_MessageContextForward: String { return self._s[3023]! } - public var GroupPermission_Duration: String { return self._s[3024]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[3019]! } + public var Wallet_Month_ShortOctober: String { return self._s[3020]! } + public var VoiceOver_Chat_YourMusic: String { return self._s[3021]! } + public var WallpaperColors_Title: String { return self._s[3022]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[3023]! } + public var VoiceOver_MessageContextForward: String { return self._s[3024]! } + public var GroupPermission_Duration: String { return self._s[3025]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3025]!, self._r[3025]!, [_0]) + return formatWithArgumentRanges(self._s[3026]!, self._r[3026]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[3026]! } - public var Username_Placeholder: String { return self._s[3027]! } - public var CallFeedback_WhatWentWrong: String { return self._s[3028]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[3029]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[3030]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[3027]! } + public var Username_Placeholder: String { return self._s[3028]! } + public var CallFeedback_WhatWentWrong: String { return self._s[3029]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[3030]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[3031]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3032]!, self._r[3032]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3033]!, self._r[3033]!, [_1, _2]) } - public var Passport_PasswordDescription: String { return self._s[3033]! } - public var Channel_MessagePhotoUpdated: String { return self._s[3034]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[3035]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[3036]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[3037]! } - public var Conversation_ContextMenuMore: String { return self._s[3038]! } - public var Privacy_PaymentsClearInfo: String { return self._s[3039]! } - public var CallSettings_TabIcon: String { return self._s[3040]! } - public var KeyCommand_Find: String { return self._s[3041]! } - public var ClearCache_FreeSpaceDescription: String { return self._s[3042]! } - public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3043]! } - public var EditTheme_Edit_Preview_IncomingText: String { return self._s[3044]! } - public var Message_PinnedGame: String { return self._s[3045]! } - public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3046]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[3048]! } - public var Login_CallRequestState2: String { return self._s[3050]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3052]! } + public var Passport_PasswordDescription: String { return self._s[3034]! } + public var Channel_MessagePhotoUpdated: String { return self._s[3035]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[3036]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[3037]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[3038]! } + public var Conversation_ContextMenuMore: String { return self._s[3039]! } + public var Privacy_PaymentsClearInfo: String { return self._s[3040]! } + public var CallSettings_TabIcon: String { return self._s[3041]! } + public var KeyCommand_Find: String { return self._s[3042]! } + public var ClearCache_FreeSpaceDescription: String { return self._s[3043]! } + public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3044]! } + public var EditTheme_Edit_Preview_IncomingText: String { return self._s[3045]! } + public func Conversation_NoticeInvitedByInChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3046]!, self._r[3046]!, [_0]) + } + public var Message_PinnedGame: String { return self._s[3047]! } + public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3048]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[3050]! } + public var Login_CallRequestState2: String { return self._s[3052]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3054]! } public func VoiceOver_Chat_PhotoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3053]!, self._r[3053]!, [_0]) - } - public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3055]!, self._r[3055]!, [_0]) } - public var AuthSessions_AddDevice: String { return self._s[3056]! } - public var WallpaperPreview_Blurred: String { return self._s[3057]! } - public var Conversation_InstantPagePreview: String { return self._s[3058]! } - public var PeerInfo_ButtonUnmute: String { return self._s[3059]! } + public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3057]!, self._r[3057]!, [_0]) + } + public var AuthSessions_AddDevice: String { return self._s[3058]! } + public var WallpaperPreview_Blurred: String { return self._s[3059]! } + public var Conversation_InstantPagePreview: String { return self._s[3060]! } + public var PeerInfo_ButtonUnmute: String { return self._s[3061]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3060]!, self._r[3060]!, [_0]) + return formatWithArgumentRanges(self._s[3062]!, self._r[3062]!, [_0]) } - public var ChatList_PeerTypeChannel: String { return self._s[3061]! } - public var SecretTimer_VideoDescription: String { return self._s[3064]! } - public var WallpaperSearch_ColorRed: String { return self._s[3065]! } - public var GroupPermission_NoPinMessages: String { return self._s[3066]! } - public var Passport_Language_es: String { return self._s[3067]! } - public var Permissions_ContactsAllow_v0: String { return self._s[3069]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[3070]! } + public var ChatList_PeerTypeChannel: String { return self._s[3063]! } + public var SecretTimer_VideoDescription: String { return self._s[3066]! } + public var WallpaperSearch_ColorRed: String { return self._s[3067]! } + public var GroupPermission_NoPinMessages: String { return self._s[3068]! } + public var Passport_Language_es: String { return self._s[3069]! } + public var Permissions_ContactsAllow_v0: String { return self._s[3071]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[3072]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3071]!, self._r[3071]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3073]!, self._r[3073]!, [_1, _2]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[3072]! } - public var WebPreview_GettingLinkInfo: String { return self._s[3074]! } - public var Watch_UserInfo_Unmute: String { return self._s[3075]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3076]! } - public var AccessDenied_CameraRestricted: String { return self._s[3078]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[3074]! } + public var WebPreview_GettingLinkInfo: String { return self._s[3076]! } + public var Watch_UserInfo_Unmute: String { return self._s[3077]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3078]! } + public var AccessDenied_CameraRestricted: String { return self._s[3080]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3079]!, self._r[3079]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[3081]!, self._r[3081]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[3081]! } - public var Settings_CopyUsername: String { return self._s[3082]! } - public var Contacts_SearchLabel: String { return self._s[3083]! } - public var Map_OpenInYandexNavigator: String { return self._s[3085]! } - public var PasscodeSettings_EncryptData: String { return self._s[3086]! } - public var Settings_Wallet: String { return self._s[3087]! } - public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[3088]! } - public var ChatList_PeerTypeBot: String { return self._s[3089]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[3090]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[3091]! } - public var DialogList_AdNoticeAlert: String { return self._s[3092]! } - public var Wallet_Month_GenMay: String { return self._s[3094]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[3095]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[3096]! } - public var Localization_LanguageCustom: String { return self._s[3097]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[3098]! } - public var CallFeedback_Title: String { return self._s[3099]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[3102]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[3103]! } - public var Wallet_Intro_CreateErrorTitle: String { return self._s[3104]! } - public var Conversation_InfoGroup: String { return self._s[3105]! } - public var Compose_NewMessage: String { return self._s[3106]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[3107]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[3108]! } - public var Wallet_SecureStorageReset_BiometryFaceId: String { return self._s[3109]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[3110]! } + public var ChatList_ReadAll: String { return self._s[3083]! } + public var Settings_CopyUsername: String { return self._s[3084]! } + public var Contacts_SearchLabel: String { return self._s[3085]! } + public var Map_OpenInYandexNavigator: String { return self._s[3087]! } + public var PasscodeSettings_EncryptData: String { return self._s[3088]! } + public var Settings_Wallet: String { return self._s[3089]! } + public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[3090]! } + public var ChatList_PeerTypeBot: String { return self._s[3091]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[3092]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[3093]! } + public var DialogList_AdNoticeAlert: String { return self._s[3094]! } + public var Wallet_Month_GenMay: String { return self._s[3096]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[3097]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[3098]! } + public var Localization_LanguageCustom: String { return self._s[3099]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[3100]! } + public var CallFeedback_Title: String { return self._s[3101]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[3104]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[3105]! } + public var Wallet_Intro_CreateErrorTitle: String { return self._s[3106]! } + public var Conversation_InfoGroup: String { return self._s[3107]! } + public var Compose_NewMessage: String { return self._s[3108]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[3109]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[3110]! } + public var Wallet_SecureStorageReset_BiometryFaceId: String { return self._s[3111]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[3112]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3111]!, self._r[3111]!, [_0]) + return formatWithArgumentRanges(self._s[3113]!, self._r[3113]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[3112]! } - public var Login_CancelSignUpConfirmation: String { return self._s[3113]! } - public var ChangePhoneNumberCode_Help: String { return self._s[3114]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[3115]! } - public var ChatList_Context_RemoveFromFolder: String { return self._s[3116]! } - public var Channel_BlackList_Title: String { return self._s[3117]! } - public var UserInfo_PhoneCall: String { return self._s[3118]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3120]! } - public var Wallet_Month_ShortJanuary: String { return self._s[3121]! } - public var State_connecting: String { return self._s[3122]! } - public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[3123]! } - public var Wallet_Month_GenMarch: String { return self._s[3124]! } - public var EditTheme_Expand_BottomInfo: String { return self._s[3125]! } - public var AuthSessions_AddedDeviceTerminate: String { return self._s[3126]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[3114]! } + public var Login_CancelSignUpConfirmation: String { return self._s[3115]! } + public var ChangePhoneNumberCode_Help: String { return self._s[3116]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[3117]! } + public var ChatList_Context_RemoveFromFolder: String { return self._s[3118]! } + public var Channel_BlackList_Title: String { return self._s[3119]! } + public var UserInfo_PhoneCall: String { return self._s[3120]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3122]! } + public var Wallet_Month_ShortJanuary: String { return self._s[3123]! } + public var State_connecting: String { return self._s[3124]! } + public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[3125]! } + public var Wallet_Month_GenMarch: String { return self._s[3126]! } + public var EditTheme_Expand_BottomInfo: String { return self._s[3127]! } + public var AuthSessions_AddedDeviceTerminate: String { return self._s[3128]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3127]!, self._r[3127]!, [_0]) + return formatWithArgumentRanges(self._s[3129]!, self._r[3129]!, [_0]) } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3128]!, self._r[3128]!, [_0]) + return formatWithArgumentRanges(self._s[3130]!, self._r[3130]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[3129]! } - public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3130]! } - public var Passport_Identity_EditPassport: String { return self._s[3131]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[3133]! } - public var Localization_EnglishLanguageName: String { return self._s[3134]! } - public var Share_AuthDescription: String { return self._s[3135]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3136]! } - public var Passport_Identity_Surname: String { return self._s[3137]! } - public var Compose_TokenListPlaceholder: String { return self._s[3138]! } - public var Wallet_AccessDenied_Camera: String { return self._s[3139]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[3140]! } - public var Settings_AboutEmpty: String { return self._s[3141]! } - public var Conversation_Unmute: String { return self._s[3142]! } - public var CreateGroup_ChannelsTooMuch: String { return self._s[3144]! } - public var Wallet_Sending_Text: String { return self._s[3145]! } + public var Notifications_GroupNotifications: String { return self._s[3131]! } + public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3132]! } + public var Passport_Identity_EditPassport: String { return self._s[3133]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[3135]! } + public var Localization_EnglishLanguageName: String { return self._s[3136]! } + public var Share_AuthDescription: String { return self._s[3137]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3138]! } + public var Passport_Identity_Surname: String { return self._s[3139]! } + public var Compose_TokenListPlaceholder: String { return self._s[3140]! } + public var Wallet_AccessDenied_Camera: String { return self._s[3141]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[3142]! } + public var Settings_AboutEmpty: String { return self._s[3143]! } + public var Conversation_Unmute: String { return self._s[3144]! } + public var CreateGroup_ChannelsTooMuch: String { return self._s[3146]! } + public var Wallet_Sending_Text: String { return self._s[3147]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3146]!, self._r[3146]!, [_1]) + return formatWithArgumentRanges(self._s[3148]!, self._r[3148]!, [_1]) } - public var Login_CodeSentCall: String { return self._s[3147]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[3149]! } - public var ChatSettings_Appearance: String { return self._s[3150]! } - public var ClearCache_StorageUsage: String { return self._s[3151]! } - public var ChatListFolder_NameContacts: String { return self._s[3152]! } - public var Appearance_PickAccentColor: String { return self._s[3153]! } + public var Login_CodeSentCall: String { return self._s[3149]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[3151]! } + public var ChatSettings_Appearance: String { return self._s[3152]! } + public var ClearCache_StorageUsage: String { return self._s[3153]! } + public var ChatListFolder_NameContacts: String { return self._s[3154]! } + public var Appearance_PickAccentColor: String { return self._s[3155]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3154]!, self._r[3154]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3156]!, self._r[3156]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3155]!, self._r[3155]!, [_1]) + return formatWithArgumentRanges(self._s[3157]!, self._r[3157]!, [_1]) } - public var Notification_CallMissed: String { return self._s[3156]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[3157]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[3158]! } - public var Wallet_Month_GenOctober: String { return self._s[3160]! } - public var ChatAdmins_AdminLabel: String { return self._s[3161]! } - public var KeyCommand_JumpToNextChat: String { return self._s[3162]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[3164]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[3165]! } - public var Month_GenJune: String { return self._s[3166]! } - public var IntentsSettings_MainAccountInfo: String { return self._s[3167]! } - public var Watch_Location_Current: String { return self._s[3168]! } - public var Wallet_Receive_CopyInvoiceUrl: String { return self._s[3169]! } - public var Conversation_TitleMute: String { return self._s[3170]! } - public var Map_PlacesInThisArea: String { return self._s[3171]! } + public var Notification_CallMissed: String { return self._s[3158]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[3159]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[3160]! } + public var Wallet_Month_GenOctober: String { return self._s[3162]! } + public var ChatAdmins_AdminLabel: String { return self._s[3163]! } + public var KeyCommand_JumpToNextChat: String { return self._s[3164]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[3166]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[3167]! } + public var Month_GenJune: String { return self._s[3168]! } + public var IntentsSettings_MainAccountInfo: String { return self._s[3169]! } + public var Watch_Location_Current: String { return self._s[3170]! } + public var Wallet_Receive_CopyInvoiceUrl: String { return self._s[3171]! } + public var Conversation_TitleMute: String { return self._s[3172]! } + public var Map_PlacesInThisArea: String { return self._s[3173]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3172]!, self._r[3172]!, [_1]) + return formatWithArgumentRanges(self._s[3174]!, self._r[3174]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[3173]! } + public var GroupInfo_DeleteAndExit: String { return self._s[3175]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3174]!, self._r[3174]!, [_0]) + return formatWithArgumentRanges(self._s[3176]!, self._r[3176]!, [_0]) } - public var Call_ReportPlaceholder: String { return self._s[3175]! } - public var Chat_SlowmodeSendError: String { return self._s[3176]! } - public var MaskStickerSettings_Info: String { return self._s[3177]! } - public var EditTheme_Expand_TopInfo: String { return self._s[3178]! } + public var Call_ReportPlaceholder: String { return self._s[3177]! } + public var Chat_SlowmodeSendError: String { return self._s[3178]! } + public var MaskStickerSettings_Info: String { return self._s[3179]! } + public var EditTheme_Expand_TopInfo: String { return self._s[3180]! } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3179]!, self._r[3179]!, [_0]) + return formatWithArgumentRanges(self._s[3181]!, self._r[3181]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[3180]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[3182]! } - public var Contacts_ShareTelegram: String { return self._s[3183]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[3184]! } - public var Map_AddressOnMap: String { return self._s[3185]! } - public var Channel_ErrorAccessDenied: String { return self._s[3186]! } - public var UserInfo_ScamBotWarning: String { return self._s[3188]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[3189]! } - public var Call_ConnectionErrorTitle: String { return self._s[3190]! } - public var UserInfo_NotificationsEnable: String { return self._s[3191]! } - public var ArchivedChats_IntroText1: String { return self._s[3192]! } - public var Tour_Text4: String { return self._s[3195]! } - public var WallpaperSearch_Recent: String { return self._s[3196]! } - public var GroupInfo_ScamGroupWarning: String { return self._s[3197]! } - public var PeopleNearby_MakeVisibleTitle: String { return self._s[3198]! } - public var Profile_MessageLifetime2s: String { return self._s[3200]! } - public var Appearance_ThemePreview_ChatList_5_Text: String { return self._s[3201]! } - public var Notification_MessageLifetime2s: String { return self._s[3202]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[3182]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[3184]! } + public var Contacts_ShareTelegram: String { return self._s[3185]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[3186]! } + public var Map_AddressOnMap: String { return self._s[3187]! } + public var Channel_ErrorAccessDenied: String { return self._s[3188]! } + public var UserInfo_ScamBotWarning: String { return self._s[3190]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[3191]! } + public var Call_ConnectionErrorTitle: String { return self._s[3192]! } + public var UserInfo_NotificationsEnable: String { return self._s[3193]! } + public var ArchivedChats_IntroText1: String { return self._s[3194]! } + public var Tour_Text4: String { return self._s[3197]! } + public var WallpaperSearch_Recent: String { return self._s[3198]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[3199]! } + public var PeopleNearby_MakeVisibleTitle: String { return self._s[3200]! } + public var Profile_MessageLifetime2s: String { return self._s[3202]! } + public var Appearance_ThemePreview_ChatList_5_Text: String { return self._s[3203]! } + public var Notification_MessageLifetime2s: String { return self._s[3204]! } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3203]!, self._r[3203]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3205]!, self._r[3205]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[3204]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[3205]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[3206]! } + public var Cache_ClearCache: String { return self._s[3206]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[3207]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[3208]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3210]!, self._r[3210]!, [_0]) - } - public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3212]!, self._r[3212]!, [_0]) } - public var LocalGroup_Text: String { return self._s[3213]! } - public var PeerInfo_PaneMembers: String { return self._s[3214]! } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[3215]! } - public var SocksProxySetup_TypeSocks: String { return self._s[3216]! } - public var ChatList_UnarchiveAction: String { return self._s[3217]! } - public var AutoNightTheme_Title: String { return self._s[3218]! } - public var InstantPage_FeedbackButton: String { return self._s[3219]! } - public var Passport_FieldAddress: String { return self._s[3220]! } - public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3221]!, self._r[3221]!, [_1, _2]) + public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3214]!, self._r[3214]!, [_0]) } - public var Month_ShortMarch: String { return self._s[3222]! } - public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + public var LocalGroup_Text: String { return self._s[3215]! } + public var PeerInfo_PaneMembers: String { return self._s[3216]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[3217]! } + public var SocksProxySetup_TypeSocks: String { return self._s[3218]! } + public var ChatList_UnarchiveAction: String { return self._s[3219]! } + public var AutoNightTheme_Title: String { return self._s[3220]! } + public var InstantPage_FeedbackButton: String { return self._s[3221]! } + public var Passport_FieldAddress: String { return self._s[3222]! } + public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3223]!, self._r[3223]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[3224]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[3225]! } - public var Passport_FloodError: String { return self._s[3226]! } - public var SecretGif_Title: String { return self._s[3227]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[3228]! } - public var ChatList_Context_UnhideArchive: String { return self._s[3229]! } - public var Passport_Language_th: String { return self._s[3231]! } - public var Passport_Address_Address: String { return self._s[3232]! } - public var Login_InvalidLastNameError: String { return self._s[3233]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[3234]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[3235]! } - public var ChatList_Context_Archive: String { return self._s[3236]! } - public var SettingsSearch_FAQ: String { return self._s[3237]! } - public var ShareMenu_Send: String { return self._s[3238]! } - public var ChatState_Connecting: String { return self._s[3239]! } - public var WallpaperSearch_ColorYellow: String { return self._s[3241]! } - public var Month_GenNovember: String { return self._s[3243]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3245]! } + public var Month_ShortMarch: String { return self._s[3224]! } + public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3225]!, self._r[3225]!, [_1, _2]) + } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[3226]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[3227]! } + public var Passport_FloodError: String { return self._s[3228]! } + public var SecretGif_Title: String { return self._s[3229]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[3230]! } + public var ChatList_Context_UnhideArchive: String { return self._s[3231]! } + public var Passport_Language_th: String { return self._s[3233]! } + public var Passport_Address_Address: String { return self._s[3234]! } + public var Login_InvalidLastNameError: String { return self._s[3235]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[3236]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[3237]! } + public var ChatList_Context_Archive: String { return self._s[3238]! } + public var SettingsSearch_FAQ: String { return self._s[3239]! } + public var ShareMenu_Send: String { return self._s[3240]! } + public var ChatState_Connecting: String { return self._s[3241]! } + public var WallpaperSearch_ColorYellow: String { return self._s[3243]! } + public var Month_GenNovember: String { return self._s[3245]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3247]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3246]!, self._r[3246]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3248]!, self._r[3248]!, [_1, _2]) } - public var ChatListFolder_CategoryChannels: String { return self._s[3247]! } - public var Conversation_SwipeToReplyHintText: String { return self._s[3248]! } - public var Checkout_Email: String { return self._s[3249]! } - public var NotificationsSound_Tritone: String { return self._s[3250]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[3252]! } - public var Wallet_ContextMenuCopy: String { return self._s[3254]! } + public var ChatListFolder_CategoryChannels: String { return self._s[3249]! } + public var Conversation_SwipeToReplyHintText: String { return self._s[3250]! } + public var Checkout_Email: String { return self._s[3251]! } + public var NotificationsSound_Tritone: String { return self._s[3252]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[3254]! } + public var Wallet_ContextMenuCopy: String { return self._s[3256]! } public func Wallet_Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3256]!, self._r[3256]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3258]!, self._r[3258]!, [_1, _2, _3]) } - public var Appearance_TextSize_Automatic: String { return self._s[3257]! } - public var Stickers_Installed: String { return self._s[3259]! } + public var Appearance_TextSize_Automatic: String { return self._s[3259]! } + public var Stickers_Installed: String { return self._s[3261]! } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3260]!, self._r[3260]!, [_1]) + return formatWithArgumentRanges(self._s[3262]!, self._r[3262]!, [_1]) } public func StickerPackActionInfo_AddedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3261]!, self._r[3261]!, [_0]) + return formatWithArgumentRanges(self._s[3263]!, self._r[3263]!, [_0]) } - public var ChangePhoneNumberNumber_Help: String { return self._s[3262]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[3264]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3263]!, self._r[3263]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[3265]!, self._r[3265]!, [_1, _1, _1, _2]) } - public var ChatList_UndoArchiveTitle: String { return self._s[3264]! } - public var Notification_Exceptions_Add: String { return self._s[3265]! } - public var DialogList_You: String { return self._s[3266]! } - public var ChatList_PsaLabel_covid: String { return self._s[3268]! } - public var MediaPicker_Send: String { return self._s[3270]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[3271]! } - public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[3272]! } - public var Call_AudioRouteSpeaker: String { return self._s[3273]! } - public var Watch_UserInfo_Title: String { return self._s[3274]! } - public var VoiceOver_Chat_PollFinalResults: String { return self._s[3275]! } - public var Appearance_AccentColor: String { return self._s[3277]! } + public var ChatList_UndoArchiveTitle: String { return self._s[3266]! } + public var Notification_Exceptions_Add: String { return self._s[3267]! } + public var DialogList_You: String { return self._s[3268]! } + public var ChatList_PsaLabel_covid: String { return self._s[3270]! } + public var MediaPicker_Send: String { return self._s[3272]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[3273]! } + public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[3274]! } + public var Call_AudioRouteSpeaker: String { return self._s[3275]! } + public var Watch_UserInfo_Title: String { return self._s[3276]! } + public var VoiceOver_Chat_PollFinalResults: String { return self._s[3277]! } + public var Appearance_AccentColor: String { return self._s[3279]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3278]!, self._r[3278]!, [_0]) + return formatWithArgumentRanges(self._s[3280]!, self._r[3280]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[3279]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[3281]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3280]!, self._r[3280]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3282]!, self._r[3282]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[3281]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[3282]! } - public var Notification_CallOutgoing: String { return self._s[3283]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3284]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[3285]! } - public var Call_RecordingDisabledMessage: String { return self._s[3286]! } - public var Message_Game: String { return self._s[3287]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[3288]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3289]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[3290]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[3291]! } - public var Date_DialogDateFormat: String { return self._s[3293]! } - public var WallpaperColors_SetCustomColor: String { return self._s[3294]! } - public var Notifications_InAppNotifications: String { return self._s[3295]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[3283]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[3284]! } + public var Notification_CallOutgoing: String { return self._s[3285]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3286]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[3287]! } + public var Call_RecordingDisabledMessage: String { return self._s[3288]! } + public var Message_Game: String { return self._s[3289]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[3290]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3291]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[3292]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[3293]! } + public var Date_DialogDateFormat: String { return self._s[3295]! } + public var WallpaperColors_SetCustomColor: String { return self._s[3296]! } + public var Notifications_InAppNotifications: String { return self._s[3297]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3296]!, self._r[3296]!, [_0]) + return formatWithArgumentRanges(self._s[3298]!, self._r[3298]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3297]!, self._r[3297]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3299]!, self._r[3299]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[3298]! } + public var NewContact_Title: String { return self._s[3300]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3299]!, self._r[3299]!, [_0]) + return formatWithArgumentRanges(self._s[3301]!, self._r[3301]!, [_0]) } - public var Conversation_ViewContactDetails: String { return self._s[3300]! } + public var Conversation_ViewContactDetails: String { return self._s[3302]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3302]!, self._r[3302]!, [_1]) + return formatWithArgumentRanges(self._s[3304]!, self._r[3304]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[3303]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[3304]! } - public var PrivacySettings_Title: String { return self._s[3305]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[3308]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[3309]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[3310]! } - public var Contacts_PhoneNumber: String { return self._s[3311]! } - public var PeerInfo_ButtonMute: String { return self._s[3312]! } - public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[3314]! } - public var Map_ShowPlaces: String { return self._s[3315]! } - public var ChatAdmins_Title: String { return self._s[3316]! } - public var InstantPage_Reference: String { return self._s[3318]! } - public var Wallet_Info_Updating: String { return self._s[3319]! } - public var ReportGroupLocation_Text: String { return self._s[3320]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[3305]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[3306]! } + public var PrivacySettings_Title: String { return self._s[3307]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[3310]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[3311]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[3312]! } + public var Contacts_PhoneNumber: String { return self._s[3313]! } + public var PeerInfo_ButtonMute: String { return self._s[3314]! } + public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[3316]! } + public var Map_ShowPlaces: String { return self._s[3317]! } + public var ChatAdmins_Title: String { return self._s[3318]! } + public var InstantPage_Reference: String { return self._s[3320]! } + public var Wallet_Info_Updating: String { return self._s[3321]! } + public var ReportGroupLocation_Text: String { return self._s[3322]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3321]!, self._r[3321]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3323]!, self._r[3323]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[3322]! } - public var Watch_UserInfo_Block: String { return self._s[3323]! } - public var ChatSettings_Stickers: String { return self._s[3324]! } - public var ChatSettings_DownloadInBackground: String { return self._s[3325]! } - public var Appearance_ThemeCarouselTintedNight: String { return self._s[3326]! } + public var Camera_FlashOff: String { return self._s[3324]! } + public var Watch_UserInfo_Block: String { return self._s[3325]! } + public var ChatSettings_Stickers: String { return self._s[3326]! } + public var ChatSettings_DownloadInBackground: String { return self._s[3327]! } + public var Appearance_ThemeCarouselTintedNight: String { return self._s[3328]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3327]!, self._r[3327]!, [_0]) + return formatWithArgumentRanges(self._s[3329]!, self._r[3329]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[3328]! } - public var Login_CheckOtherSessionMessages: String { return self._s[3329]! } - public var AutoDownloadSettings_Cellular: String { return self._s[3330]! } - public var Wallet_Created_ExportErrorTitle: String { return self._s[3331]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[3332]! } - public var VoiceOver_MessageContextShare: String { return self._s[3333]! } + public var Settings_ViewPhoto: String { return self._s[3330]! } + public var Login_CheckOtherSessionMessages: String { return self._s[3331]! } + public var AutoDownloadSettings_Cellular: String { return self._s[3332]! } + public var Wallet_Created_ExportErrorTitle: String { return self._s[3333]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[3334]! } + public var VoiceOver_MessageContextShare: String { return self._s[3335]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3335]!, self._r[3335]!, [_0]) + return formatWithArgumentRanges(self._s[3337]!, self._r[3337]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[3336]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[3337]! } + public var Privacy_DeleteDrafts: String { return self._s[3338]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[3339]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3338]!, self._r[3338]!, [_0]) + return formatWithArgumentRanges(self._s[3340]!, self._r[3340]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[3339]! } - public var Wallet_SecureStorageNotAvailable_Title: String { return self._s[3340]! } - public var DialogList_SavedMessages: String { return self._s[3341]! } - public var GroupInfo_UpgradeButton: String { return self._s[3342]! } - public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[3344]! } - public var DialogList_Pin: String { return self._s[3345]! } + public var DialogList_SavedMessagesHelp: String { return self._s[3341]! } + public var Wallet_SecureStorageNotAvailable_Title: String { return self._s[3342]! } + public var DialogList_SavedMessages: String { return self._s[3343]! } + public var GroupInfo_UpgradeButton: String { return self._s[3344]! } + public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[3346]! } + public var DialogList_Pin: String { return self._s[3347]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3346]!, self._r[3346]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3348]!, self._r[3348]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3347]!, self._r[3347]!, [_0]) + return formatWithArgumentRanges(self._s[3349]!, self._r[3349]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[3348]! } - public var UserInfo_NotificationsDisable: String { return self._s[3349]! } - public var Conversation_ContextMenuCancelEditing: String { return self._s[3350]! } - public var Paint_Outlined: String { return self._s[3351]! } - public var Activity_PlayingGame: String { return self._s[3352]! } - public var SearchImages_NoImagesFound: String { return self._s[3353]! } - public var SocksProxySetup_ProxyType: String { return self._s[3354]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[3356]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[3357]! } - public var Settings_AppLanguage: String { return self._s[3358]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[3359]! } - public var Common_ChoosePhoto: String { return self._s[3360]! } - public var AuthSessions_AddDevice_InvalidQRCode: String { return self._s[3361]! } - public var CallFeedback_ReasonEcho: String { return self._s[3362]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[3350]! } + public var UserInfo_NotificationsDisable: String { return self._s[3351]! } + public var Conversation_ContextMenuCancelEditing: String { return self._s[3352]! } + public var Paint_Outlined: String { return self._s[3353]! } + public var Activity_PlayingGame: String { return self._s[3354]! } + public var SearchImages_NoImagesFound: String { return self._s[3355]! } + public var SocksProxySetup_ProxyType: String { return self._s[3356]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[3358]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[3359]! } + public var Settings_AppLanguage: String { return self._s[3360]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[3361]! } + public var Common_ChoosePhoto: String { return self._s[3362]! } + public var AuthSessions_AddDevice_InvalidQRCode: String { return self._s[3363]! } + public var CallFeedback_ReasonEcho: String { return self._s[3364]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3363]!, self._r[3363]!, [_1]) + return formatWithArgumentRanges(self._s[3365]!, self._r[3365]!, [_1]) } - public var Privacy_Calls_AlwaysAllow: String { return self._s[3364]! } - public var PollResults_Collapse: String { return self._s[3365]! } - public var Activity_UploadingVideo: String { return self._s[3366]! } - public var Conversation_WalletRequiredNotNow: String { return self._s[3367]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[3368]! } - public var NetworkUsageSettings_Wifi: String { return self._s[3369]! } - public var VoiceOver_Editing_ClearText: String { return self._s[3370]! } - public var PUSH_SENDER_YOU: String { return self._s[3371]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[3372]! } - public var Checkout_PayWithTouchId: String { return self._s[3373]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[3374]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[3366]! } + public var PollResults_Collapse: String { return self._s[3367]! } + public var Activity_UploadingVideo: String { return self._s[3368]! } + public var Conversation_WalletRequiredNotNow: String { return self._s[3369]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[3370]! } + public var NetworkUsageSettings_Wifi: String { return self._s[3371]! } + public var VoiceOver_Editing_ClearText: String { return self._s[3372]! } + public var PUSH_SENDER_YOU: String { return self._s[3373]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[3374]! } + public var Checkout_PayWithTouchId: String { return self._s[3375]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[3376]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3376]!, self._r[3376]!, [_1]) + return formatWithArgumentRanges(self._s[3378]!, self._r[3378]!, [_1]) } - public var Notifications_ExceptionsNone: String { return self._s[3377]! } + public var Notifications_ExceptionsNone: String { return self._s[3379]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3378]!, self._r[3378]!, [_0]) + return formatWithArgumentRanges(self._s[3380]!, self._r[3380]!, [_0]) } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3379]!, self._r[3379]!, [_1]) + return formatWithArgumentRanges(self._s[3381]!, self._r[3381]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[3381]! } - public var Passport_Address_Region: String { return self._s[3384]! } - public var ChatList_DeleteChat: String { return self._s[3385]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[3386]! } - public var PhotoEditor_TiltShift: String { return self._s[3387]! } - public var Settings_FAQ_URL: String { return self._s[3388]! } - public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[3389]! } - public var Passport_Language_sl: String { return self._s[3391]! } - public var Settings_PrivacySettings: String { return self._s[3393]! } - public var SharedMedia_TitleLink: String { return self._s[3394]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[3395]! } - public var Settings_SetProfilePhoto: String { return self._s[3396]! } - public var Channel_About_Help: String { return self._s[3397]! } - public var Contacts_PermissionsEnable: String { return self._s[3398]! } - public var Wallet_Sending_Title: String { return self._s[3399]! } - public var PeerInfo_PaneMedia: String { return self._s[3400]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[3401]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[3402]! } - public var CallFeedback_ReasonInterruption: String { return self._s[3404]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[3405]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[3406]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[3407]! } - public var OldChannels_Title: String { return self._s[3408]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[3409]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[3411]! } - public var Map_OpenInYandexMaps: String { return self._s[3413]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[3414]! } - public var VoiceOver_MessageContextReply: String { return self._s[3415]! } - public var ChatListFolder_DiscardConfirmation: String { return self._s[3417]! } - public var PhotoEditor_SaturationTool: String { return self._s[3418]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[3383]! } + public var Passport_Address_Region: String { return self._s[3386]! } + public var ChatList_DeleteChat: String { return self._s[3387]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[3388]! } + public var PhotoEditor_TiltShift: String { return self._s[3389]! } + public var Settings_FAQ_URL: String { return self._s[3390]! } + public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[3391]! } + public var Passport_Language_sl: String { return self._s[3393]! } + public var Settings_PrivacySettings: String { return self._s[3395]! } + public var SharedMedia_TitleLink: String { return self._s[3396]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[3397]! } + public var Settings_SetProfilePhoto: String { return self._s[3398]! } + public var Channel_About_Help: String { return self._s[3399]! } + public var Contacts_PermissionsEnable: String { return self._s[3400]! } + public var Wallet_Sending_Title: String { return self._s[3401]! } + public var PeerInfo_PaneMedia: String { return self._s[3402]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[3403]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[3404]! } + public var CallFeedback_ReasonInterruption: String { return self._s[3406]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[3407]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[3408]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[3409]! } + public var OldChannels_Title: String { return self._s[3410]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[3411]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[3413]! } + public var Map_OpenInYandexMaps: String { return self._s[3415]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[3416]! } + public var VoiceOver_MessageContextReply: String { return self._s[3417]! } + public var ChatListFolder_DiscardConfirmation: String { return self._s[3419]! } + public var PhotoEditor_SaturationTool: String { return self._s[3420]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3419]!, self._r[3419]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3421]!, self._r[3421]!, [_1, _2]) } - public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[3420]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3421]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[3422]! } + public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[3422]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3423]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[3424]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3423]!, self._r[3423]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3425]!, self._r[3425]!, [_1, "\(_2)"]) } - public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[3424]! } - public var Channel_Username_InvalidTooShort: String { return self._s[3426]! } - public var SettingsSearch_Synonyms_Wallet: String { return self._s[3427]! } + public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[3426]! } + public var Channel_Username_InvalidTooShort: String { return self._s[3428]! } + public var SettingsSearch_Synonyms_Wallet: String { return self._s[3429]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3428]!, self._r[3428]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3430]!, self._r[3430]!, [_1, _2]) } - public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3429]! } + public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3431]! } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3430]!, self._r[3430]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3432]!, self._r[3432]!, [_1, _2, _3]) } - public var WallpaperPreview_PatternTitle: String { return self._s[3431]! } - public var GroupInfo_PublicLinkAdd: String { return self._s[3432]! } - public var Passport_PassportInformation: String { return self._s[3435]! } - public var Theme_Unsupported: String { return self._s[3436]! } - public var WatchRemote_AlertTitle: String { return self._s[3437]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[3438]! } - public var ConvertToSupergroup_HelpText: String { return self._s[3440]! } + public var WallpaperPreview_PatternTitle: String { return self._s[3433]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[3434]! } + public var Passport_PassportInformation: String { return self._s[3437]! } + public var Theme_Unsupported: String { return self._s[3438]! } + public var WatchRemote_AlertTitle: String { return self._s[3439]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[3440]! } + public var ConvertToSupergroup_HelpText: String { return self._s[3442]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3441]!, self._r[3441]!, [_0]) + return formatWithArgumentRanges(self._s[3443]!, self._r[3443]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3442]!, self._r[3442]!, [_1]) + return formatWithArgumentRanges(self._s[3444]!, self._r[3444]!, [_1]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[3443]! } - public var Wallet_Navigation_Done: String { return self._s[3445]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3446]! } - public var AccessDenied_CameraDisabled: String { return self._s[3447]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[3445]! } + public var Wallet_Navigation_Done: String { return self._s[3447]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3448]! } + public var AccessDenied_CameraDisabled: String { return self._s[3449]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3448]!, self._r[3448]!, [_0]) + return formatWithArgumentRanges(self._s[3450]!, self._r[3450]!, [_0]) } - public var ClearCache_Forever: String { return self._s[3449]! } - public var AuthSessions_AddDeviceIntro_Title: String { return self._s[3450]! } - public var CreatePoll_Quiz: String { return self._s[3451]! } - public var PhotoEditor_ContrastTool: String { return self._s[3454]! } + public var ClearCache_Forever: String { return self._s[3451]! } + public var AuthSessions_AddDeviceIntro_Title: String { return self._s[3452]! } + public var CreatePoll_Quiz: String { return self._s[3453]! } + public var PhotoEditor_ContrastTool: String { return self._s[3456]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3455]!, self._r[3455]!, [_1]) + return formatWithArgumentRanges(self._s[3457]!, self._r[3457]!, [_1]) } - public var DialogList_Draft: String { return self._s[3456]! } - public var Wallet_Configuration_BlockchainIdInfo: String { return self._s[3457]! } + public var DialogList_Draft: String { return self._s[3458]! } + public var Wallet_Configuration_BlockchainIdInfo: String { return self._s[3459]! } public func PeopleNearby_VisibleUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3458]!, self._r[3458]!, [_0]) + return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_0]) } - public var ChatList_PsaAlert_covid: String { return self._s[3459]! } - public var Privacy_TopPeersDelete: String { return self._s[3461]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[3462]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3463]! } - public var WebSearch_RecentSectionClear: String { return self._s[3464]! } - public var EditTheme_ErrorInvalidCharacters: String { return self._s[3465]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[3467]! } - public var PeerInfo_ButtonMore: String { return self._s[3469]! } - public var Common_Done: String { return self._s[3470]! } - public var Shortcut_SwitchAccount: String { return self._s[3471]! } - public var AuthSessions_EmptyText: String { return self._s[3472]! } - public var Wallet_Configuration_BlockchainNameChangedTitle: String { return self._s[3473]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[3474]! } - public var Tour_Title5: String { return self._s[3475]! } - public var Wallet_Settings_Title: String { return self._s[3476]! } + public var ChatList_PsaAlert_covid: String { return self._s[3461]! } + public var Privacy_TopPeersDelete: String { return self._s[3463]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[3464]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3465]! } + public var WebSearch_RecentSectionClear: String { return self._s[3466]! } + public var EditTheme_ErrorInvalidCharacters: String { return self._s[3467]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[3469]! } + public var PeerInfo_ButtonMore: String { return self._s[3471]! } + public var Common_Done: String { return self._s[3472]! } + public var Shortcut_SwitchAccount: String { return self._s[3473]! } + public var AuthSessions_EmptyText: String { return self._s[3474]! } + public var Wallet_Configuration_BlockchainNameChangedTitle: String { return self._s[3475]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[3476]! } + public var Tour_Title5: String { return self._s[3477]! } + public var Wallet_Settings_Title: String { return self._s[3478]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3477]!, self._r[3477]!, [_0]) + return formatWithArgumentRanges(self._s[3479]!, self._r[3479]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[3478]! } - public var Conversation_LinkDialogSave: String { return self._s[3479]! } - public var GroupInfo_ActionRestrict: String { return self._s[3480]! } - public var Checkout_Title: String { return self._s[3481]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[3483]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[3485]! } - public var Notification_RenamedGroup: String { return self._s[3486]! } - public var PeopleNearby_Groups: String { return self._s[3487]! } - public var Checkout_PayWithFaceId: String { return self._s[3488]! } - public var Channel_BanList_BlockedTitle: String { return self._s[3489]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[3491]! } - public var Checkout_WebConfirmation_Title: String { return self._s[3492]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[3493]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[3480]! } + public var Conversation_LinkDialogSave: String { return self._s[3481]! } + public var GroupInfo_ActionRestrict: String { return self._s[3482]! } + public var Checkout_Title: String { return self._s[3483]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[3485]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[3487]! } + public var Notification_RenamedGroup: String { return self._s[3488]! } + public var PeopleNearby_Groups: String { return self._s[3489]! } + public var Checkout_PayWithFaceId: String { return self._s[3490]! } + public var Channel_BanList_BlockedTitle: String { return self._s[3491]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[3493]! } + public var Checkout_WebConfirmation_Title: String { return self._s[3494]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[3495]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3494]!, self._r[3494]!, [_0]) + return formatWithArgumentRanges(self._s[3496]!, self._r[3496]!, [_0]) } - public var Profile_AddToExisting: String { return self._s[3496]! } + public var Profile_AddToExisting: String { return self._s[3498]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3497]!, self._r[3497]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3499]!, self._r[3499]!, [_0, _1]) } - public var Cache_Files: String { return self._s[3499]! } - public var Permissions_PrivacyPolicy: String { return self._s[3500]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[3501]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[3502]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[3504]! } - public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[3506]! } - public var Calls_NoCallsPlaceholder: String { return self._s[3507]! } + public var Cache_Files: String { return self._s[3501]! } + public var Permissions_PrivacyPolicy: String { return self._s[3502]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[3503]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[3504]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[3506]! } + public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[3508]! } + public var Calls_NoCallsPlaceholder: String { return self._s[3509]! } public func Wallet_Receive_ShareInvoiceUrlInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3508]!, self._r[3508]!, [_0]) + return formatWithArgumentRanges(self._s[3510]!, self._r[3510]!, [_0]) } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[3509]! } - public var VoiceOver_AttachMedia: String { return self._s[3512]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[3513]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[3511]! } + public var VoiceOver_AttachMedia: String { return self._s[3514]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[3515]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3514]!, self._r[3514]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3516]!, self._r[3516]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[3515]! } - public var Conversation_SetReminder_Title: String { return self._s[3516]! } - public var Passport_FieldAddressHelp: String { return self._s[3517]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3518]! } - public var PUSH_REMINDER_TITLE: String { return self._s[3519]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[3517]! } + public var Conversation_SetReminder_Title: String { return self._s[3518]! } + public var Passport_FieldAddressHelp: String { return self._s[3519]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3520]! } + public var PUSH_REMINDER_TITLE: String { return self._s[3521]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3520]!, self._r[3520]!, [_0]) + return formatWithArgumentRanges(self._s[3522]!, self._r[3522]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[3521]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[3522]! } - public var Login_UnknownError: String { return self._s[3523]! } - public var Group_UpgradeNoticeText2: String { return self._s[3526]! } - public var Watch_Compose_AddContact: String { return self._s[3527]! } - public var ClearCache_StorageServiceFiles: String { return self._s[3528]! } - public var Web_Error: String { return self._s[3529]! } - public var Gif_Search: String { return self._s[3530]! } - public var Profile_MessageLifetime1h: String { return self._s[3531]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[3532]! } - public var Channel_Username_CheckingUsername: String { return self._s[3533]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[3534]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[3535]! } - public var Channel_AboutItem: String { return self._s[3536]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[3538]! } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[3539]! } - public var GroupInfo_SharedMedia: String { return self._s[3540]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[3523]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[3524]! } + public var Login_UnknownError: String { return self._s[3525]! } + public var Group_UpgradeNoticeText2: String { return self._s[3528]! } + public var Watch_Compose_AddContact: String { return self._s[3529]! } + public var ClearCache_StorageServiceFiles: String { return self._s[3530]! } + public var Web_Error: String { return self._s[3531]! } + public var Gif_Search: String { return self._s[3532]! } + public var Profile_MessageLifetime1h: String { return self._s[3533]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[3534]! } + public var Channel_Username_CheckingUsername: String { return self._s[3535]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[3536]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[3537]! } + public var Channel_AboutItem: String { return self._s[3538]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[3540]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[3541]! } + public var GroupInfo_SharedMedia: String { return self._s[3542]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3541]!, self._r[3541]!, [_1]) - } - public var Call_PhoneCallInProgressMessage: String { return self._s[3542]! } - public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3543]!, self._r[3543]!, [_1]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[3544]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[3545]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[3546]! } - public var CreatePoll_AddOption: String { return self._s[3547]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[3548]! } - public var Group_UpgradeNoticeHeader: String { return self._s[3549]! } - public var Channel_Management_AddModerator: String { return self._s[3550]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[3551]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[3552]! } - public var Wallet_Info_RefreshErrorNetworkText: String { return self._s[3553]! } - public var Theme_Colors_Background: String { return self._s[3554]! } - public var NotificationsSound_Hello: String { return self._s[3557]! } - public var SocksProxySetup_SavedProxies: String { return self._s[3559]! } - public var Channel_Stickers_Placeholder: String { return self._s[3561]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[3544]! } + public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3545]!, self._r[3545]!, [_1]) + } + public var ChatList_UndoArchiveRevealedText: String { return self._s[3546]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[3547]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[3548]! } + public var CreatePoll_AddOption: String { return self._s[3549]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[3550]! } + public var Group_UpgradeNoticeHeader: String { return self._s[3551]! } + public var Channel_Management_AddModerator: String { return self._s[3552]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[3553]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[3554]! } + public var Wallet_Info_RefreshErrorNetworkText: String { return self._s[3555]! } + public var Theme_Colors_Background: String { return self._s[3556]! } + public var NotificationsSound_Hello: String { return self._s[3559]! } + public var SocksProxySetup_SavedProxies: String { return self._s[3561]! } + public var Channel_Stickers_Placeholder: String { return self._s[3563]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3562]!, self._r[3562]!, [_0]) + return formatWithArgumentRanges(self._s[3564]!, self._r[3564]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3563]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[3564]! } - public var ContactInfo_BirthdayLabel: String { return self._s[3565]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[3566]! } - public var AutoDownloadSettings_Channels: String { return self._s[3567]! } - public var Passport_Language_mn: String { return self._s[3568]! } - public var Settings_ChatFolders: String { return self._s[3569]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3565]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[3566]! } + public var ContactInfo_BirthdayLabel: String { return self._s[3567]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[3568]! } + public var AutoDownloadSettings_Channels: String { return self._s[3569]! } + public var Passport_Language_mn: String { return self._s[3570]! } + public var Settings_ChatFolders: String { return self._s[3571]! } public func ChatList_AddedToFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3570]!, self._r[3570]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3572]!, self._r[3572]!, [_1, _2]) } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[3573]! } - public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[3574]! } - public var Passport_Language_ja: String { return self._s[3576]! } - public var Settings_About_Title: String { return self._s[3577]! } - public var Settings_NotificationsAndSounds: String { return self._s[3578]! } - public var ChannelInfo_DeleteGroup: String { return self._s[3579]! } - public var Settings_BlockedUsers: String { return self._s[3580]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[3575]! } + public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[3576]! } + public var Passport_Language_ja: String { return self._s[3578]! } + public var Settings_About_Title: String { return self._s[3579]! } + public var Settings_NotificationsAndSounds: String { return self._s[3580]! } + public var ChannelInfo_DeleteGroup: String { return self._s[3581]! } + public var Settings_BlockedUsers: String { return self._s[3582]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3581]!, self._r[3581]!, [_0]) + return formatWithArgumentRanges(self._s[3583]!, self._r[3583]!, [_0]) } - public var EditTheme_Create_Preview_OutgoingText: String { return self._s[3582]! } - public var Wallet_Weekday_Today: String { return self._s[3583]! } - public var ChatListFolderSettings_AddRecommended: String { return self._s[3584]! } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[3585]! } - public var Widget_ApplicationLocked: String { return self._s[3586]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[3587]! } - public var Channel_Username_Title: String { return self._s[3588]! } + public var EditTheme_Create_Preview_OutgoingText: String { return self._s[3584]! } + public var Wallet_Weekday_Today: String { return self._s[3585]! } + public var ChatListFolderSettings_AddRecommended: String { return self._s[3586]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[3587]! } + public var Widget_ApplicationLocked: String { return self._s[3588]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[3589]! } + public var Channel_Username_Title: String { return self._s[3590]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3589]!, self._r[3589]!, [_0]) + return formatWithArgumentRanges(self._s[3591]!, self._r[3591]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[3591]! } - public var AppleWatch_Title: String { return self._s[3592]! } - public var Activity_RecordingVideoMessage: String { return self._s[3593]! } + public var AttachmentMenu_File: String { return self._s[3593]! } + public var AppleWatch_Title: String { return self._s[3594]! } + public var Activity_RecordingVideoMessage: String { return self._s[3595]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3594]!, self._r[3594]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3596]!, self._r[3596]!, [_1, _2]) } - public var Theme_Colors_Messages: String { return self._s[3595]! } - public var Weekday_Saturday: String { return self._s[3596]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[3597]! } - public var Conversation_Timer_Send: String { return self._s[3598]! } - public var Profile_CreateEncryptedChatError: String { return self._s[3599]! } - public var Common_Next: String { return self._s[3601]! } - public var Channel_Stickers_YourStickers: String { return self._s[3603]! } - public var Message_Theme: String { return self._s[3604]! } - public var Call_AudioRouteHeadphones: String { return self._s[3605]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3607]! } - public var Watch_Contacts_NoResults: String { return self._s[3609]! } - public var PhotoEditor_TintTool: String { return self._s[3612]! } - public var LoginPassword_ResetAccount: String { return self._s[3614]! } - public var Settings_SavedMessages: String { return self._s[3615]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3616]! } - public var Bot_GenericSupportStatus: String { return self._s[3617]! } - public var StickerPack_Add: String { return self._s[3618]! } - public var Checkout_TotalAmount: String { return self._s[3619]! } - public var Your_cards_number_is_invalid: String { return self._s[3620]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3621]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[3622]! } + public var Theme_Colors_Messages: String { return self._s[3597]! } + public var Weekday_Saturday: String { return self._s[3598]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[3599]! } + public var Conversation_Timer_Send: String { return self._s[3600]! } + public var Profile_CreateEncryptedChatError: String { return self._s[3601]! } + public var Common_Next: String { return self._s[3603]! } + public var Channel_Stickers_YourStickers: String { return self._s[3605]! } + public var Message_Theme: String { return self._s[3606]! } + public var Call_AudioRouteHeadphones: String { return self._s[3607]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3609]! } + public var Watch_Contacts_NoResults: String { return self._s[3611]! } + public var PhotoEditor_TintTool: String { return self._s[3614]! } + public var LoginPassword_ResetAccount: String { return self._s[3616]! } + public var Settings_SavedMessages: String { return self._s[3617]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3618]! } + public var Bot_GenericSupportStatus: String { return self._s[3619]! } + public var StickerPack_Add: String { return self._s[3620]! } + public var Checkout_TotalAmount: String { return self._s[3621]! } + public var Your_cards_number_is_invalid: String { return self._s[3622]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3623]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[3624]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3623]!, self._r[3623]!, [_0]) + return formatWithArgumentRanges(self._s[3625]!, self._r[3625]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3624]!, self._r[3624]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3626]!, self._r[3626]!, [_1, _2]) } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3625]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3627]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3627]!, self._r[3627]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3629]!, self._r[3629]!, [_1, _2]) } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3628]!, self._r[3628]!, [_0]) + return formatWithArgumentRanges(self._s[3630]!, self._r[3630]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[3629]! } - public var StickerPack_Share: String { return self._s[3630]! } - public var Passport_DeleteAddress: String { return self._s[3631]! } - public var Settings_Passport: String { return self._s[3632]! } - public var SharedMedia_EmptyFilesText: String { return self._s[3633]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[3634]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3635]! } - public var Contacts_PermissionsText: String { return self._s[3636]! } - public var Group_Setup_HistoryVisible: String { return self._s[3637]! } - public var Wallet_Month_ShortDecember: String { return self._s[3639]! } - public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3640]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[3641]! } - public var SocksProxySetup_Title: String { return self._s[3642]! } - public var Notification_Mute1h: String { return self._s[3643]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[3631]! } + public var StickerPack_Share: String { return self._s[3632]! } + public var Passport_DeleteAddress: String { return self._s[3633]! } + public var Settings_Passport: String { return self._s[3634]! } + public var SharedMedia_EmptyFilesText: String { return self._s[3635]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[3636]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3637]! } + public var Contacts_PermissionsText: String { return self._s[3638]! } + public var Group_Setup_HistoryVisible: String { return self._s[3639]! } + public var Wallet_Month_ShortDecember: String { return self._s[3641]! } + public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3642]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[3643]! } + public var SocksProxySetup_Title: String { return self._s[3644]! } + public var Notification_Mute1h: String { return self._s[3645]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3644]!, self._r[3644]!, [_0]) + return formatWithArgumentRanges(self._s[3646]!, self._r[3646]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3645]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3647]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3646]!, self._r[3646]!, [_1]) + return formatWithArgumentRanges(self._s[3648]!, self._r[3648]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[3647]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3650]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3652]! } - public var DialogList_NoMessagesText: String { return self._s[3653]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[3654]! } - public var Privacy_Calls_P2PHelp: String { return self._s[3655]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3657]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[3658]! } - public var Common_TakePhotoOrVideo: String { return self._s[3659]! } - public var Wallet_Words_Text: String { return self._s[3660]! } - public var Call_StatusBusy: String { return self._s[3661]! } - public var Conversation_PinnedMessage: String { return self._s[3662]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3663]! } - public var ChatList_EmptyChatListNewMessage: String { return self._s[3664]! } - public var Wallet_Configuration_BlockchainNameChangedProceed: String { return self._s[3665]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3666]! } - public var Undo_ChatCleared: String { return self._s[3667]! } - public var CreatePoll_Explanation: String { return self._s[3668]! } - public var AppleWatch_ReplyPresets: String { return self._s[3669]! } - public var Passport_DiscardMessageDescription: String { return self._s[3671]! } - public var Login_NetworkError: String { return self._s[3672]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[3649]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3652]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3654]! } + public var DialogList_NoMessagesText: String { return self._s[3655]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[3656]! } + public var Privacy_Calls_P2PHelp: String { return self._s[3657]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3659]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[3660]! } + public var Common_TakePhotoOrVideo: String { return self._s[3661]! } + public var Wallet_Words_Text: String { return self._s[3662]! } + public var Call_StatusBusy: String { return self._s[3663]! } + public var Conversation_PinnedMessage: String { return self._s[3664]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3665]! } + public var ChatList_EmptyChatListNewMessage: String { return self._s[3666]! } + public var Wallet_Configuration_BlockchainNameChangedProceed: String { return self._s[3667]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3668]! } + public var Undo_ChatCleared: String { return self._s[3669]! } + public var CreatePoll_Explanation: String { return self._s[3670]! } + public var AppleWatch_ReplyPresets: String { return self._s[3671]! } + public var Passport_DiscardMessageDescription: String { return self._s[3673]! } + public var Login_NetworkError: String { return self._s[3674]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3673]!, self._r[3673]!, [_0]) + return formatWithArgumentRanges(self._s[3675]!, self._r[3675]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3674]!, self._r[3674]!, [_0]) + return formatWithArgumentRanges(self._s[3676]!, self._r[3676]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3675]! } - public var Wallet_WordCheck_ViewWords: String { return self._s[3677]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3678]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3677]! } + public var Wallet_WordCheck_ViewWords: String { return self._s[3679]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3680]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3680]!, self._r[3680]!, [_0]) + return formatWithArgumentRanges(self._s[3682]!, self._r[3682]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[3681]! } - public var VoiceOver_Chat_Music: String { return self._s[3682]! } - public var ChatListFolder_CategoryContacts: String { return self._s[3683]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3684]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[3686]! } - public var ConversationMedia_Title: String { return self._s[3687]! } - public var EncryptionKey_Title: String { return self._s[3689]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3690]! } - public var Notification_Exceptions_AddException: String { return self._s[3691]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3692]! } - public var Profile_MessageLifetime1m: String { return self._s[3693]! } + public var Call_ConnectionErrorMessage: String { return self._s[3683]! } + public var VoiceOver_Chat_Music: String { return self._s[3684]! } + public var ChatListFolder_CategoryContacts: String { return self._s[3685]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3686]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[3688]! } + public var ConversationMedia_Title: String { return self._s[3689]! } + public var EncryptionKey_Title: String { return self._s[3691]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3692]! } + public var Notification_Exceptions_AddException: String { return self._s[3693]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3694]! } + public var Profile_MessageLifetime1m: String { return self._s[3695]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3694]!, self._r[3694]!, [_1]) + return formatWithArgumentRanges(self._s[3696]!, self._r[3696]!, [_1]) } - public var Month_GenMay: String { return self._s[3695]! } + public var Month_GenMay: String { return self._s[3697]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3696]!, self._r[3696]!, [_0]) + return formatWithArgumentRanges(self._s[3698]!, self._r[3698]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[3697]! } - public var Wallet_Send_AddressInfo: String { return self._s[3698]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3699]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[3700]! } + public var PeopleNearby_Users: String { return self._s[3699]! } + public var Wallet_Send_AddressInfo: String { return self._s[3700]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3701]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[3702]! } public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3702]!, self._r[3702]!, [_0]) + return formatWithArgumentRanges(self._s[3704]!, self._r[3704]!, [_0]) } - public var Stats_LoadingTitle: String { return self._s[3703]! } - public var Conversation_EmptyPlaceholder: String { return self._s[3704]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[3705]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[3706]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3707]! } - public var Camera_TapAndHoldForVideo: String { return self._s[3708]! } - public var Channel_JoinChannel: String { return self._s[3710]! } - public var Appearance_Animations: String { return self._s[3713]! } + public var Stats_LoadingTitle: String { return self._s[3705]! } + public var Conversation_EmptyPlaceholder: String { return self._s[3706]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[3707]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[3708]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3709]! } + public var Camera_TapAndHoldForVideo: String { return self._s[3710]! } + public var Channel_JoinChannel: String { return self._s[3712]! } + public var Appearance_Animations: String { return self._s[3715]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3714]!, self._r[3714]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3716]!, self._r[3716]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[3716]! } - public var Appearance_ShareTheme: String { return self._s[3717]! } - public var TwoFactorSetup_Hint_Placeholder: String { return self._s[3718]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[3720]! } - public var StickerPackActionInfo_RemovedTitle: String { return self._s[3721]! } - public var Passport_Address_Street: String { return self._s[3722]! } - public var Conversation_AddContact: String { return self._s[3723]! } - public var Login_PhonePlaceholder: String { return self._s[3724]! } - public var Channel_Members_InviteLink: String { return self._s[3726]! } - public var Bot_Stop: String { return self._s[3727]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3729]! } - public var Notification_PassportValueAddress: String { return self._s[3730]! } - public var Month_ShortJuly: String { return self._s[3731]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3732]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[3733]! } - public var Passport_Identity_ReverseSide: String { return self._s[3734]! } - public var Watch_Stickers_Recents: String { return self._s[3737]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3739]! } - public var Map_SendThisLocation: String { return self._s[3740]! } + public var Stickers_GroupStickers: String { return self._s[3718]! } + public var Appearance_ShareTheme: String { return self._s[3719]! } + public var TwoFactorSetup_Hint_Placeholder: String { return self._s[3720]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[3722]! } + public var StickerPackActionInfo_RemovedTitle: String { return self._s[3723]! } + public var Passport_Address_Street: String { return self._s[3724]! } + public var Conversation_AddContact: String { return self._s[3725]! } + public var Login_PhonePlaceholder: String { return self._s[3726]! } + public var Channel_Members_InviteLink: String { return self._s[3728]! } + public var Bot_Stop: String { return self._s[3729]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3731]! } + public var Notification_PassportValueAddress: String { return self._s[3732]! } + public var Month_ShortJuly: String { return self._s[3733]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3734]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[3735]! } + public var Passport_Identity_ReverseSide: String { return self._s[3736]! } + public var Watch_Stickers_Recents: String { return self._s[3739]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3741]! } + public var Map_SendThisLocation: String { return self._s[3742]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3741]!, self._r[3741]!, [_0]) + return formatWithArgumentRanges(self._s[3743]!, self._r[3743]!, [_0]) } public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3742]!, self._r[3742]!, [_0]) + return formatWithArgumentRanges(self._s[3744]!, self._r[3744]!, [_0]) } - public var ConvertToSupergroup_Note: String { return self._s[3743]! } - public var Wallet_Intro_NotNow: String { return self._s[3744]! } + public var ConvertToSupergroup_Note: String { return self._s[3745]! } + public var Wallet_Intro_NotNow: String { return self._s[3746]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3745]!, self._r[3745]!, [_0]) + return formatWithArgumentRanges(self._s[3747]!, self._r[3747]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3746]! } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3748]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3747]!, self._r[3747]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3749]!, self._r[3749]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[3749]! } - public var Wallpaper_SearchShort: String { return self._s[3750]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3752]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3753]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3754]! } + public var Login_CallRequestState3: String { return self._s[3751]! } + public var Wallpaper_SearchShort: String { return self._s[3752]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3754]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3755]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3756]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3755]!, self._r[3755]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3757]!, self._r[3757]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[3756]! } - public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3758]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3761]! } + public var Channel_AdminLogFilter_Title: String { return self._s[3758]! } + public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3760]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3763]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3762]!, self._r[3762]!, [_0]) + return formatWithArgumentRanges(self._s[3764]!, self._r[3764]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[3763]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3764]! } + public var Passport_CorrectErrors: String { return self._s[3765]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3766]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3765]!, self._r[3765]!, [_0]) + return formatWithArgumentRanges(self._s[3767]!, self._r[3767]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[3766]! } - public var Channel_DiscussionGroup: String { return self._s[3767]! } - public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3768]! } + public var Map_SendMyCurrentLocation: String { return self._s[3768]! } + public var Channel_DiscussionGroup: String { return self._s[3769]! } + public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3770]! } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3769]!, self._r[3769]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3771]!, self._r[3771]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[3770]! } - public var Permissions_NotificationsText_v0: String { return self._s[3771]! } - public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[3772]! } - public var Appearance_AppIcon: String { return self._s[3773]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3774]! } - public var LoginPassword_FloodError: String { return self._s[3775]! } - public var Wallet_Send_OwnAddressAlertProceed: String { return self._s[3777]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3778]! } + public var SharedMedia_SearchNoResults: String { return self._s[3772]! } + public var Permissions_NotificationsText_v0: String { return self._s[3773]! } + public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[3774]! } + public var Appearance_AppIcon: String { return self._s[3775]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3776]! } + public var LoginPassword_FloodError: String { return self._s[3777]! } + public var Wallet_Send_OwnAddressAlertProceed: String { return self._s[3779]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3780]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3779]!, self._r[3779]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[3780]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3781]!, self._r[3781]!, [_0]) } - public var ChatList_Context_Pin: String { return self._s[3782]! } - public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + public var Passport_Language_bn: String { return self._s[3782]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3783]!, self._r[3783]!, [_0]) } + public var ChatList_Context_Pin: String { return self._s[3784]! } + public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3785]!, self._r[3785]!, [_0]) + } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3784]!, self._r[3784]!, [_0]) + return formatWithArgumentRanges(self._s[3786]!, self._r[3786]!, [_0]) } - public var Wallet_Navigation_Close: String { return self._s[3785]! } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3789]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3791]! } - public var Wallet_Month_GenDecember: String { return self._s[3792]! } - public var Contacts_PermissionsAllow: String { return self._s[3793]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3794]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3795]! } - public var WallpaperPreview_Pattern: String { return self._s[3796]! } - public var Paint_Duplicate: String { return self._s[3797]! } - public var Passport_Address_Country: String { return self._s[3798]! } - public var Notification_RenamedChannel: String { return self._s[3800]! } - public var DialogList_UnknownPinLimitError: String { return self._s[3801]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3802]! } - public var ChatList_Context_Unmute: String { return self._s[3803]! } - public var Group_MessagePhotoUpdated: String { return self._s[3804]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3805]! } - public var Conversation_ContextMenuBan: String { return self._s[3806]! } - public var TwoStepAuth_EmailSent: String { return self._s[3807]! } - public var MessagePoll_NoVotes: String { return self._s[3808]! } - public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3809]! } - public var Passport_Language_is: String { return self._s[3811]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3813]! } - public var Tour_Text5: String { return self._s[3814]! } + public var Wallet_Navigation_Close: String { return self._s[3787]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3791]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3793]! } + public var Wallet_Month_GenDecember: String { return self._s[3794]! } + public var Contacts_PermissionsAllow: String { return self._s[3795]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3796]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3797]! } + public var WallpaperPreview_Pattern: String { return self._s[3798]! } + public var Paint_Duplicate: String { return self._s[3799]! } + public var Passport_Address_Country: String { return self._s[3800]! } + public var Notification_RenamedChannel: String { return self._s[3802]! } + public var DialogList_UnknownPinLimitError: String { return self._s[3803]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3804]! } + public var ChatList_Context_Unmute: String { return self._s[3805]! } + public var Group_MessagePhotoUpdated: String { return self._s[3806]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3807]! } + public var Conversation_ContextMenuBan: String { return self._s[3808]! } + public var TwoStepAuth_EmailSent: String { return self._s[3809]! } + public var MessagePoll_NoVotes: String { return self._s[3810]! } + public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3811]! } + public var Passport_Language_is: String { return self._s[3813]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3815]! } + public var Tour_Text5: String { return self._s[3816]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3817]!, self._r[3817]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3819]!, self._r[3819]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3818]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3819]! } + public var Undo_SecretChatDeleted: String { return self._s[3820]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3821]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3820]!, self._r[3820]!, [_0]) + return formatWithArgumentRanges(self._s[3822]!, self._r[3822]!, [_0]) } - public var Forward_ErrorDisabledForChat: String { return self._s[3821]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3822]! } - public var Paint_Edit: String { return self._s[3824]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[3826]! } - public var Undo_DeletedGroup: String { return self._s[3828]! } - public var LoginPassword_ForgotPassword: String { return self._s[3829]! } - public var Wallet_WordImport_IncorrectTitle: String { return self._s[3830]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3831]! } + public var Forward_ErrorDisabledForChat: String { return self._s[3823]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3824]! } + public var Paint_Edit: String { return self._s[3826]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[3828]! } + public var Undo_DeletedGroup: String { return self._s[3830]! } + public var LoginPassword_ForgotPassword: String { return self._s[3831]! } + public var Wallet_WordImport_IncorrectTitle: String { return self._s[3832]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3833]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3832]!, self._r[3832]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3834]!, self._r[3834]!, [_0, _1]) } - public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3833]! } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3834]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3835]! } - public var Passport_Language_uz: String { return self._s[3836]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3837]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3838]! } - public var Map_StopLiveLocation: String { return self._s[3840]! } - public var VoiceOver_MessageContextSend: String { return self._s[3842]! } - public var PasscodeSettings_Help: String { return self._s[3843]! } - public var NotificationsSound_Input: String { return self._s[3844]! } - public var Share_Title: String { return self._s[3847]! } - public var LogoutOptions_Title: String { return self._s[3848]! } - public var Wallet_Send_AddressText: String { return self._s[3849]! } - public var Login_TermsOfServiceAgree: String { return self._s[3850]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3851]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3852]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3853]! } - public var EnterPasscode_EnterTitle: String { return self._s[3854]! } + public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3835]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3836]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3837]! } + public var Passport_Language_uz: String { return self._s[3838]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3839]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3840]! } + public var Map_StopLiveLocation: String { return self._s[3842]! } + public var VoiceOver_MessageContextSend: String { return self._s[3844]! } + public var PasscodeSettings_Help: String { return self._s[3845]! } + public var NotificationsSound_Input: String { return self._s[3846]! } + public var Share_Title: String { return self._s[3849]! } + public var LogoutOptions_Title: String { return self._s[3850]! } + public var Wallet_Send_AddressText: String { return self._s[3851]! } + public var Login_TermsOfServiceAgree: String { return self._s[3852]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3853]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3854]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3855]! } + public var EnterPasscode_EnterTitle: String { return self._s[3856]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3855]!, self._r[3855]!, [_0]) + return formatWithArgumentRanges(self._s[3857]!, self._r[3857]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3856]! } - public var Conversation_AddToContacts: String { return self._s[3857]! } + public var Settings_CopyPhoneNumber: String { return self._s[3858]! } + public var Conversation_AddToContacts: String { return self._s[3859]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3858]!, self._r[3858]!, [_0]) - } - public var NotificationsSound_Keys: String { return self._s[3859]! } - public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3860]!, self._r[3860]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3861]! } - public var Message_Video: String { return self._s[3862]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3863]! } - public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3864]!, self._r[3864]!, [_1]) + public var NotificationsSound_Keys: String { return self._s[3861]! } + public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3862]!, self._r[3862]!, [_0]) } - public var Wallet_Receive_AmountInfo: String { return self._s[3867]! } - public var Stats_Overview: String { return self._s[3868]! } + public var Notification_MessageLifetime1w: String { return self._s[3863]! } + public var Message_Video: String { return self._s[3864]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3865]! } + public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3866]!, self._r[3866]!, [_1]) + } + public var Wallet_Receive_AmountInfo: String { return self._s[3869]! } + public var Stats_Overview: String { return self._s[3870]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3869]!, self._r[3869]!, [_0]) + return formatWithArgumentRanges(self._s[3871]!, self._r[3871]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3870]!, self._r[3870]!, [_0]) + return formatWithArgumentRanges(self._s[3872]!, self._r[3872]!, [_0]) } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3871]! } - public var Passport_Language_mk: String { return self._s[3872]! } - public var ChatListFolder_CategoryNonContacts: String { return self._s[3873]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3873]! } + public var Passport_Language_mk: String { return self._s[3874]! } + public var ChatListFolder_CategoryNonContacts: String { return self._s[3875]! } public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3874]!, self._r[3874]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3876]!, self._r[3876]!, [_1, _2, _3]) } - public var CreatePoll_CancelConfirmation: String { return self._s[3875]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3876]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3878]! } - public var PrivacyPolicy_Decline: String { return self._s[3879]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3880]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3881]! } - public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3882]! } - public var Permissions_SiriAllow_v0: String { return self._s[3884]! } - public var Wallet_Month_ShortAugust: String { return self._s[3885]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3886]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3877]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3878]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3880]! } + public var PrivacyPolicy_Decline: String { return self._s[3881]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3882]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3883]! } + public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3884]! } + public var Permissions_SiriAllow_v0: String { return self._s[3886]! } + public var Wallet_Month_ShortAugust: String { return self._s[3887]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3888]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3887]!, self._r[3887]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3889]!, self._r[3889]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3888]!, self._r[3888]!, [_0]) + return formatWithArgumentRanges(self._s[3890]!, self._r[3890]!, [_0]) } - public var Paint_Regular: String { return self._s[3889]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3890]! } - public var SocksProxySetup_ShareLink: String { return self._s[3891]! } - public var Wallet_Qr_Title: String { return self._s[3892]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3893]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3895]! } - public var Wallet_Settings_Configuration: String { return self._s[3896]! } - public var GroupInfo_InviteByLink: String { return self._s[3897]! } - public var MessageTimer_Custom: String { return self._s[3898]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3899]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3900]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3902]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[3903]! } - public var VoiceOver_Chat_Selected: String { return self._s[3904]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3905]! } - public var Channel_Username_InvalidTaken: String { return self._s[3906]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3907]! } - public var Wallet_WordCheck_TryAgain: String { return self._s[3908]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[3909]! } - public var Settings_ChatBackground: String { return self._s[3910]! } - public var Channel_Subscribers_Title: String { return self._s[3911]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3912]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3913]! } - public var Watch_ConnectionDescription: String { return self._s[3914]! } - public var OldChannels_NoticeText: String { return self._s[3917]! } - public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3918]! } - public var IntentsSettings_SuggestBy: String { return self._s[3920]! } - public var Theme_ThemeChangedText: String { return self._s[3921]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3922]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3923]! } - public var Wallet_Send_TransactionInProgress: String { return self._s[3924]! } - public var Conversation_SendDice: String { return self._s[3925]! } - public var EditProfile_Title: String { return self._s[3926]! } - public var NotificationsSound_Bamboo: String { return self._s[3928]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3930]! } - public var Login_SmsRequestState2: String { return self._s[3931]! } - public var Passport_Language_ar: String { return self._s[3932]! } + public var Paint_Regular: String { return self._s[3891]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3892]! } + public var SocksProxySetup_ShareLink: String { return self._s[3893]! } + public var Wallet_Qr_Title: String { return self._s[3894]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3895]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3897]! } + public var Wallet_Settings_Configuration: String { return self._s[3898]! } + public var GroupInfo_InviteByLink: String { return self._s[3899]! } + public var MessageTimer_Custom: String { return self._s[3900]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3901]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3902]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3904]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[3905]! } + public var VoiceOver_Chat_Selected: String { return self._s[3906]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3907]! } + public var Channel_Username_InvalidTaken: String { return self._s[3908]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3909]! } + public var Wallet_WordCheck_TryAgain: String { return self._s[3910]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[3911]! } + public var Settings_ChatBackground: String { return self._s[3912]! } + public var Channel_Subscribers_Title: String { return self._s[3913]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3914]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3915]! } + public var Watch_ConnectionDescription: String { return self._s[3916]! } + public var OldChannels_NoticeText: String { return self._s[3919]! } + public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3920]! } + public var IntentsSettings_SuggestBy: String { return self._s[3922]! } + public var Theme_ThemeChangedText: String { return self._s[3923]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3924]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3925]! } + public var Wallet_Send_TransactionInProgress: String { return self._s[3926]! } + public var Conversation_SendDice: String { return self._s[3927]! } + public var EditProfile_Title: String { return self._s[3928]! } + public var NotificationsSound_Bamboo: String { return self._s[3930]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3932]! } + public var Login_SmsRequestState2: String { return self._s[3933]! } + public var Passport_Language_ar: String { return self._s[3934]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3933]!, self._r[3933]!, [_0]) + return formatWithArgumentRanges(self._s[3935]!, self._r[3935]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3934]! } - public var Wallet_Created_Text: String { return self._s[3935]! } - public var Conversation_MessageDialogEdit: String { return self._s[3937]! } - public var Wallet_Created_Proceed: String { return self._s[3938]! } - public var Wallet_Words_Done: String { return self._s[3939]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[3940]! } - public var ChatListFolder_NameChannels: String { return self._s[3941]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3936]! } + public var Wallet_Created_Text: String { return self._s[3937]! } + public var Conversation_MessageDialogEdit: String { return self._s[3939]! } + public var Wallet_Created_Proceed: String { return self._s[3940]! } + public var Wallet_Words_Done: String { return self._s[3941]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[3942]! } + public var ChatListFolder_NameChannels: String { return self._s[3943]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3942]!, self._r[3942]!, [_1]) + return formatWithArgumentRanges(self._s[3944]!, self._r[3944]!, [_1]) } - public var Common_Close: String { return self._s[3943]! } - public var GroupInfo_PublicLink: String { return self._s[3944]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3945]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3946]! } + public var Common_Close: String { return self._s[3945]! } + public var GroupInfo_PublicLink: String { return self._s[3946]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3947]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3948]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3950]!, self._r[3950]!, [_0]) - } - public var UserInfo_About_Placeholder: String { return self._s[3951]! } - public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3952]!, self._r[3952]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3953]! } - public var Channel_Info_Banned: String { return self._s[3955]! } + public var UserInfo_About_Placeholder: String { return self._s[3953]! } + public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0]) + } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3955]! } + public var Channel_Info_Banned: String { return self._s[3957]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3956]!, self._r[3956]!, [_0]) + return formatWithArgumentRanges(self._s[3958]!, self._r[3958]!, [_0]) } - public var Appearance_Other: String { return self._s[3957]! } - public var Passport_Language_my: String { return self._s[3958]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3959]! } + public var Appearance_Other: String { return self._s[3959]! } + public var Passport_Language_my: String { return self._s[3960]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3961]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3960]!, self._r[3960]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3962]!, self._r[3962]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3961]! } - public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3962]! } - public var Preview_CopyAddress: String { return self._s[3963]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3963]! } + public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3964]! } + public var Preview_CopyAddress: String { return self._s[3965]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3964]!, self._r[3964]!, [_0]) + return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3965]! } - public var UserInfo_BotSettings: String { return self._s[3966]! } - public var LiveLocation_MenuStopAll: String { return self._s[3968]! } - public var Passport_PasswordCreate: String { return self._s[3969]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3970]! } - public var Message_PinnedLocationMessage: String { return self._s[3971]! } - public var Map_Satellite: String { return self._s[3972]! } - public var Watch_Message_Unsupported: String { return self._s[3973]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3974]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3975]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3967]! } + public var UserInfo_BotSettings: String { return self._s[3968]! } + public var LiveLocation_MenuStopAll: String { return self._s[3970]! } + public var Passport_PasswordCreate: String { return self._s[3971]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3972]! } + public var Message_PinnedLocationMessage: String { return self._s[3973]! } + public var Map_Satellite: String { return self._s[3974]! } + public var Watch_Message_Unsupported: String { return self._s[3975]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3976]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3977]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3976]!, self._r[3976]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3978]!, self._r[3978]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3977]!, self._r[3977]!, [_0]) - } - public var Wallet_WordImport_Continue: String { return self._s[3978]! } - public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3979]!, self._r[3979]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3980]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3981]! } - public var NotificationsSound_None: String { return self._s[3982]! } - public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3983]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3985]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3986]! } + public var Wallet_WordImport_Continue: String { return self._s[3980]! } + public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3981]!, self._r[3981]!, [_0]) + } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3982]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3983]! } + public var NotificationsSound_None: String { return self._s[3984]! } + public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3985]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3987]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3988]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3987]!, self._r[3987]!, [_1]) + return formatWithArgumentRanges(self._s[3989]!, self._r[3989]!, [_1]) } - public var Cache_Indexing: String { return self._s[3988]! } - public var DialogList_RecentTitlePeople: String { return self._s[3990]! } - public var DialogList_EncryptionRejected: String { return self._s[3991]! } - public var GroupInfo_Administrators: String { return self._s[3992]! } - public var Passport_ScanPassportHelp: String { return self._s[3993]! } - public var Application_Name: String { return self._s[3994]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3995]! } - public var Conversation_Timer_Title: String { return self._s[3996]! } - public var ChatList_PeerTypeGroup: String { return self._s[3997]! } - public var PeopleNearby_MakeVisible: String { return self._s[3999]! } - public var Appearance_ThemeCarouselDay: String { return self._s[4000]! } - public var Stats_GrowthTitle: String { return self._s[4001]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4002]! } + public var Cache_Indexing: String { return self._s[3990]! } + public var DialogList_RecentTitlePeople: String { return self._s[3992]! } + public var DialogList_EncryptionRejected: String { return self._s[3993]! } + public var GroupInfo_Administrators: String { return self._s[3994]! } + public var Passport_ScanPassportHelp: String { return self._s[3995]! } + public var Application_Name: String { return self._s[3996]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3997]! } + public var Conversation_Timer_Title: String { return self._s[3998]! } + public var ChatList_PeerTypeGroup: String { return self._s[3999]! } + public var PeopleNearby_MakeVisible: String { return self._s[4001]! } + public var Appearance_ThemeCarouselDay: String { return self._s[4002]! } + public var Stats_GrowthTitle: String { return self._s[4003]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4004]! } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4003]!, self._r[4003]!, [_0]) - } - public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4004]!, self._r[4004]!, [_0]) - } - public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4005]!, self._r[4005]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4006]! } - public var Privacy_ChatsTitle: String { return self._s[4007]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[4008]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4009]! } - public var Watch_Suggestion_HoldOn: String { return self._s[4010]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[4011]! } - public var WebBrowser_Title: String { return self._s[4012]! } - public var Group_LinkedChannel: String { return self._s[4013]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4014]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4015]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4016]! } - public var Appearance_TextSize_UseSystem: String { return self._s[4017]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[4018]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4020]! } - public var Channel_Setup_TypePublic: String { return self._s[4022]! } + public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4006]!, self._r[4006]!, [_0]) + } + public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4007]!, self._r[4007]!, [_0]) + } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4008]! } + public var Privacy_ChatsTitle: String { return self._s[4009]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[4010]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4011]! } + public var Watch_Suggestion_HoldOn: String { return self._s[4012]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[4013]! } + public var WebBrowser_Title: String { return self._s[4014]! } + public var Group_LinkedChannel: String { return self._s[4015]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4016]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4017]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4018]! } + public var Appearance_TextSize_UseSystem: String { return self._s[4019]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[4020]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4022]! } + public var Channel_Setup_TypePublic: String { return self._s[4024]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4023]!, self._r[4023]!, [_0]) + return formatWithArgumentRanges(self._s[4025]!, self._r[4025]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[4025]! } - public var MessagePoll_ViewResults: String { return self._s[4026]! } - public var Map_OpenInMaps: String { return self._s[4028]! } + public var Channel_TypeSetup_Title: String { return self._s[4027]! } + public var MessagePoll_ViewResults: String { return self._s[4028]! } + public var Map_OpenInMaps: String { return self._s[4030]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4029]!, self._r[4029]!, [_1]) + return formatWithArgumentRanges(self._s[4031]!, self._r[4031]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[4031]! } + public var NotificationsSound_Tremolo: String { return self._s[4033]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4032]!, self._r[4032]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4034]!, self._r[4034]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[4033]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4034]! } - public var Passport_PasswordHelp: String { return self._s[4036]! } - public var Login_CodeExpiredError: String { return self._s[4037]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4038]! } - public var Conversation_TitleUnmute: String { return self._s[4039]! } - public var Passport_Identity_ScansHelp: String { return self._s[4040]! } - public var Passport_Language_lo: String { return self._s[4041]! } - public var Camera_FlashAuto: String { return self._s[4042]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[4043]! } - public var Common_Cancel: String { return self._s[4044]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[4045]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4046]! } - public var Appearance_TintAllColors: String { return self._s[4047]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[4035]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4036]! } + public var Passport_PasswordHelp: String { return self._s[4038]! } + public var Login_CodeExpiredError: String { return self._s[4039]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4040]! } + public var Conversation_TitleUnmute: String { return self._s[4041]! } + public var Passport_Identity_ScansHelp: String { return self._s[4042]! } + public var Passport_Language_lo: String { return self._s[4043]! } + public var Camera_FlashAuto: String { return self._s[4044]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[4045]! } + public var Common_Cancel: String { return self._s[4046]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[4047]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4048]! } + public var Appearance_TintAllColors: String { return self._s[4049]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4048]!, self._r[4048]!, [_1]) + return formatWithArgumentRanges(self._s[4050]!, self._r[4050]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[4049]! } - public var ChatSettings_Title: String { return self._s[4051]! } - public var Passport_PasswordReset: String { return self._s[4052]! } - public var SocksProxySetup_TypeNone: String { return self._s[4053]! } - public var EditTheme_Title: String { return self._s[4056]! } - public var PhoneNumberHelp_Help: String { return self._s[4057]! } - public var Checkout_EnterPassword: String { return self._s[4058]! } - public var Activity_UploadingDocument: String { return self._s[4060]! } - public var Share_AuthTitle: String { return self._s[4061]! } - public var State_Connecting: String { return self._s[4062]! } - public var Profile_MessageLifetime1w: String { return self._s[4063]! } - public var Conversation_ContextMenuReport: String { return self._s[4064]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4065]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[4066]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[4051]! } + public var ChatSettings_Title: String { return self._s[4053]! } + public var Passport_PasswordReset: String { return self._s[4054]! } + public var SocksProxySetup_TypeNone: String { return self._s[4055]! } + public var EditTheme_Title: String { return self._s[4058]! } + public var PhoneNumberHelp_Help: String { return self._s[4059]! } + public var Checkout_EnterPassword: String { return self._s[4060]! } + public var Activity_UploadingDocument: String { return self._s[4062]! } + public var Share_AuthTitle: String { return self._s[4063]! } + public var State_Connecting: String { return self._s[4064]! } + public var Profile_MessageLifetime1w: String { return self._s[4065]! } + public var Conversation_ContextMenuReport: String { return self._s[4066]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4067]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[4068]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4067]!, self._r[4067]!, [_0]) + return formatWithArgumentRanges(self._s[4069]!, self._r[4069]!, [_0]) } - public var AuthSessions_Terminate: String { return self._s[4068]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4069]! } - public var PeerInfo_PaneAudio: String { return self._s[4070]! } + public var AuthSessions_Terminate: String { return self._s[4070]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4071]! } + public var PeerInfo_PaneAudio: String { return self._s[4072]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4071]!, self._r[4071]!, [_0]) + return formatWithArgumentRanges(self._s[4073]!, self._r[4073]!, [_0]) } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4073]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4074]! } - public var PhotoEditor_Set: String { return self._s[4075]! } - public var EmptyGroupInfo_Title: String { return self._s[4076]! } - public var Login_PadPhoneHelp: String { return self._s[4078]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4080]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4082]! } - public var NotificationsSound_Complete: String { return self._s[4083]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4084]! } - public var Group_Info_AdminLog: String { return self._s[4085]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4086]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4075]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4076]! } + public var PhotoEditor_Set: String { return self._s[4077]! } + public var EmptyGroupInfo_Title: String { return self._s[4078]! } + public var Login_PadPhoneHelp: String { return self._s[4080]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4082]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4084]! } + public var NotificationsSound_Complete: String { return self._s[4085]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4086]! } + public var Group_Info_AdminLog: String { return self._s[4087]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4088]! } public func Wallet_Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4087]!, self._r[4087]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4089]!, self._r[4089]!, [_1, _2, _3]) } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4088]! } - public var Group_Location_CreateInThisPlace: String { return self._s[4090]! } - public var Conversation_Admin: String { return self._s[4091]! } - public var Conversation_GifTooltip: String { return self._s[4092]! } - public var Passport_NotLoggedInMessage: String { return self._s[4093]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4090]! } + public var Group_Location_CreateInThisPlace: String { return self._s[4092]! } + public var Conversation_Admin: String { return self._s[4093]! } + public var Conversation_GifTooltip: String { return self._s[4094]! } + public var Passport_NotLoggedInMessage: String { return self._s[4095]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4095]!, self._r[4095]!, [_0]) + return formatWithArgumentRanges(self._s[4097]!, self._r[4097]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[4096]! } - public var SharedMedia_EmptyTitle: String { return self._s[4098]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4100]! } - public var Username_Help: String { return self._s[4101]! } - public var DialogList_LanguageTooltip: String { return self._s[4103]! } - public var Map_LoadError: String { return self._s[4104]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4105]! } - public var Channel_AdminLog_AddMembers: String { return self._s[4106]! } - public var ArchivedChats_IntroTitle2: String { return self._s[4107]! } - public var Notification_Exceptions_NewException: String { return self._s[4108]! } - public var TwoStepAuth_EmailTitle: String { return self._s[4109]! } - public var WatchRemote_AlertText: String { return self._s[4110]! } + public var Profile_MessageLifetimeForever: String { return self._s[4098]! } + public var SharedMedia_EmptyTitle: String { return self._s[4100]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4102]! } + public var Username_Help: String { return self._s[4103]! } + public var DialogList_LanguageTooltip: String { return self._s[4105]! } + public var Map_LoadError: String { return self._s[4106]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4107]! } + public var Channel_AdminLog_AddMembers: String { return self._s[4108]! } + public var ArchivedChats_IntroTitle2: String { return self._s[4109]! } + public var Notification_Exceptions_NewException: String { return self._s[4110]! } + public var TwoStepAuth_EmailTitle: String { return self._s[4111]! } + public var WatchRemote_AlertText: String { return self._s[4112]! } public func Wallet_Send_ConfirmationText(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4111]!, self._r[4111]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4113]!, self._r[4113]!, [_1, _2, _3]) } - public var ChatSettings_ConnectionType_Title: String { return self._s[4115]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[4117]! } public func PUSH_PINNED_QUIZ(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4116]!, self._r[4116]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4118]!, self._r[4118]!, [_1, _2]) } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4117]!, self._r[4117]!, [_0]) + return formatWithArgumentRanges(self._s[4119]!, self._r[4119]!, [_0]) } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4118]! } - public var WebBrowser_DefaultBrowser: String { return self._s[4119]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[4120]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4120]! } + public var WebBrowser_DefaultBrowser: String { return self._s[4121]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[4122]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4121]!, self._r[4121]!, [_0]) + return formatWithArgumentRanges(self._s[4123]!, self._r[4123]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4122]!, self._r[4122]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4124]!, self._r[4124]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[4123]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4124]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[4126]! } - public var Wallet_Created_ExportErrorText: String { return self._s[4127]! } - public var ChatList_UndoArchiveText1: String { return self._s[4128]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4129]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4130]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4131]! } - public var Cache_ClearNone: String { return self._s[4132]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[4133]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[4134]! } + public var Group_AdminLog_EmptyText: String { return self._s[4125]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4126]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[4128]! } + public var Wallet_Created_ExportErrorText: String { return self._s[4129]! } + public var ChatList_UndoArchiveText1: String { return self._s[4130]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4131]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4132]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4133]! } + public var Cache_ClearNone: String { return self._s[4134]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[4135]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[4136]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4135]!, self._r[4135]!, [_0]) - } - public var Passport_Identity_Country: String { return self._s[4136]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4137]!, self._r[4137]!, [_0]) } + public var Passport_Identity_Country: String { return self._s[4138]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4139]!, self._r[4139]!, [_0]) + } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4138]!, self._r[4138]!, [_0]) + return formatWithArgumentRanges(self._s[4140]!, self._r[4140]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[4139]! } - public var AccessDenied_Settings: String { return self._s[4140]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4141]! } - public var Month_ShortMay: String { return self._s[4143]! } - public var Compose_NewGroup: String { return self._s[4145]! } - public var Group_Setup_TypePrivate: String { return self._s[4147]! } - public var Login_PadPhoneHelpTitle: String { return self._s[4149]! } - public var Appearance_ThemeDayClassic: String { return self._s[4150]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4151]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[4152]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4153]! } - public var Conversation_typing: String { return self._s[4155]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[4156]! } - public var Paint_Masks: String { return self._s[4157]! } - public var Contacts_DeselectAll: String { return self._s[4158]! } + public var Exceptions_AddToExceptions: String { return self._s[4141]! } + public var AccessDenied_Settings: String { return self._s[4142]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4143]! } + public var Month_ShortMay: String { return self._s[4145]! } + public var Compose_NewGroup: String { return self._s[4147]! } + public var Group_Setup_TypePrivate: String { return self._s[4149]! } + public var Login_PadPhoneHelpTitle: String { return self._s[4151]! } + public var Appearance_ThemeDayClassic: String { return self._s[4152]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4153]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[4154]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4155]! } + public var Conversation_typing: String { return self._s[4157]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[4158]! } + public var Paint_Masks: String { return self._s[4159]! } + public var Contacts_DeselectAll: String { return self._s[4160]! } public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4159]!, self._r[4159]!, [_0]) + return formatWithArgumentRanges(self._s[4161]!, self._r[4161]!, [_0]) } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4160]! } - public var Username_InvalidTaken: String { return self._s[4161]! } - public var Call_StatusNoAnswer: String { return self._s[4162]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[4163]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4164]! } - public var Passport_Identity_Selfie: String { return self._s[4165]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4166]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4167]! } - public var Conversation_ClearSecretHistory: String { return self._s[4168]! } - public var PeopleNearby_Description: String { return self._s[4170]! } - public var NetworkUsageSettings_Title: String { return self._s[4171]! } - public var Your_cards_security_code_is_invalid: String { return self._s[4173]! } - public var Stats_EnabledNotifications: String { return self._s[4174]! } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4162]! } + public var Username_InvalidTaken: String { return self._s[4163]! } + public var Call_StatusNoAnswer: String { return self._s[4164]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[4165]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4166]! } + public var Passport_Identity_Selfie: String { return self._s[4167]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4168]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4169]! } + public var Conversation_ClearSecretHistory: String { return self._s[4170]! } + public var PeopleNearby_Description: String { return self._s[4172]! } + public var NetworkUsageSettings_Title: String { return self._s[4173]! } + public var Your_cards_security_code_is_invalid: String { return self._s[4175]! } + public var Stats_EnabledNotifications: String { return self._s[4176]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4176]!, self._r[4176]!, [_0]) + return formatWithArgumentRanges(self._s[4178]!, self._r[4178]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4177]!, self._r[4177]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4179]!, self._r[4179]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[4179]! } - public var VoiceOver_Navigation_Search: String { return self._s[4180]! } - public var Map_LiveLocationTitle: String { return self._s[4181]! } - public var Login_InfoAvatarAdd: String { return self._s[4182]! } - public var Passport_Identity_FilesView: String { return self._s[4183]! } - public var ChatListFolderSettings_Title: String { return self._s[4184]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[4185]! } - public var Privacy_Calls_NeverAllow: String { return self._s[4186]! } - public var VoiceOver_Chat_File: String { return self._s[4187]! } - public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4188]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[4181]! } + public var VoiceOver_Navigation_Search: String { return self._s[4182]! } + public var Map_LiveLocationTitle: String { return self._s[4183]! } + public var Login_InfoAvatarAdd: String { return self._s[4184]! } + public var Passport_Identity_FilesView: String { return self._s[4185]! } + public var ChatListFolderSettings_Title: String { return self._s[4186]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[4187]! } + public var Privacy_Calls_NeverAllow: String { return self._s[4188]! } + public var VoiceOver_Chat_File: String { return self._s[4189]! } + public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4190]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4189]!, self._r[4189]!, [_0]) + return formatWithArgumentRanges(self._s[4191]!, self._r[4191]!, [_0]) } - public var ChatList_EmptyChatList: String { return self._s[4190]! } - public var ContactInfo_PhoneNumberHidden: String { return self._s[4191]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[4192]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4193]! } + public var ChatList_EmptyChatList: String { return self._s[4192]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[4193]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[4194]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4195]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4194]!, self._r[4194]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4196]!, self._r[4196]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4195]! } - public var Wallet_Intro_CreateErrorText: String { return self._s[4196]! } - public var Tour_Title2: String { return self._s[4197]! } - public var Wallet_Sent_ViewWallet: String { return self._s[4198]! } - public var Conversation_FileOpenIn: String { return self._s[4199]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4200]! } - public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4201]! } - public var Wallpaper_Set: String { return self._s[4202]! } - public var Passport_Identity_Translations: String { return self._s[4204]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4197]! } + public var Wallet_Intro_CreateErrorText: String { return self._s[4198]! } + public var Tour_Title2: String { return self._s[4199]! } + public var Wallet_Sent_ViewWallet: String { return self._s[4200]! } + public var Conversation_FileOpenIn: String { return self._s[4201]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4202]! } + public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4203]! } + public var Wallpaper_Set: String { return self._s[4204]! } + public var Passport_Identity_Translations: String { return self._s[4206]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4205]!, self._r[4205]!, [_0]) + return formatWithArgumentRanges(self._s[4207]!, self._r[4207]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[4206]! } + public var Channel_LeaveChannel: String { return self._s[4208]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4207]!, self._r[4207]!, [_1]) + return formatWithArgumentRanges(self._s[4209]!, self._r[4209]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4209]! } - public var PhotoEditor_HighlightsTint: String { return self._s[4210]! } - public var MessagePoll_LabelPoll: String { return self._s[4211]! } - public var Passport_Email_Delete: String { return self._s[4212]! } - public var Conversation_Mute: String { return self._s[4214]! } - public var Channel_AddBotAsAdmin: String { return self._s[4215]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[4217]! } - public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4218]! } - public var ChatSettings_IntentsSettings: String { return self._s[4220]! } - public var Channel_Management_LabelOwner: String { return self._s[4221]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4211]! } + public var PhotoEditor_HighlightsTint: String { return self._s[4212]! } + public var MessagePoll_LabelPoll: String { return self._s[4213]! } + public var Passport_Email_Delete: String { return self._s[4214]! } + public var Conversation_Mute: String { return self._s[4216]! } + public var Channel_AddBotAsAdmin: String { return self._s[4217]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[4219]! } + public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4220]! } + public var ChatSettings_IntentsSettings: String { return self._s[4222]! } + public var Channel_Management_LabelOwner: String { return self._s[4223]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4222]!, self._r[4222]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4224]!, self._r[4224]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[4223]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[4224]! } - public var Common_No: String { return self._s[4225]! } - public var Weekday_Sunday: String { return self._s[4226]! } - public var Notification_Reply: String { return self._s[4227]! } - public var Conversation_ViewMessage: String { return self._s[4228]! } + public var Calls_CallTabDescription: String { return self._s[4225]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[4226]! } + public var Common_No: String { return self._s[4227]! } + public var Weekday_Sunday: String { return self._s[4228]! } + public var Notification_Reply: String { return self._s[4229]! } + public var Conversation_ViewMessage: String { return self._s[4230]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4229]!, self._r[4229]!, [_0]) + return formatWithArgumentRanges(self._s[4231]!, self._r[4231]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4230]!, self._r[4230]!, [_0]) + return formatWithArgumentRanges(self._s[4232]!, self._r[4232]!, [_0]) } public func Wallet_Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4231]!, self._r[4231]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4233]!, self._r[4233]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4232]! } - public var Wallet_Send_Title: String { return self._s[4233]! } - public var Message_PinnedDocumentMessage: String { return self._s[4234]! } - public var Wallet_Info_RefreshErrorText: String { return self._s[4235]! } - public var DialogList_TabTitle: String { return self._s[4237]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4238]! } - public var Passport_FieldEmail: String { return self._s[4239]! } - public var Conversation_UnpinMessageAlert: String { return self._s[4240]! } - public var Passport_Address_TypeBankStatement: String { return self._s[4241]! } - public var Wallet_SecureStorageReset_Title: String { return self._s[4242]! } - public var Passport_Identity_ExpiryDate: String { return self._s[4243]! } - public var Privacy_Calls_P2P: String { return self._s[4244]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4234]! } + public var Wallet_Send_Title: String { return self._s[4235]! } + public var Message_PinnedDocumentMessage: String { return self._s[4236]! } + public var Wallet_Info_RefreshErrorText: String { return self._s[4237]! } + public var DialogList_TabTitle: String { return self._s[4239]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4240]! } + public var Passport_FieldEmail: String { return self._s[4241]! } + public var Conversation_UnpinMessageAlert: String { return self._s[4242]! } + public var Passport_Address_TypeBankStatement: String { return self._s[4243]! } + public var Wallet_SecureStorageReset_Title: String { return self._s[4244]! } + public var Passport_Identity_ExpiryDate: String { return self._s[4245]! } + public var Privacy_Calls_P2P: String { return self._s[4246]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4246]!, self._r[4246]!, [_0]) + return formatWithArgumentRanges(self._s[4248]!, self._r[4248]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[4247]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[4249]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4248]!, self._r[4248]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4250]!, self._r[4250]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[4249]! } - public var EnterPasscode_ChangeTitle: String { return self._s[4250]! } - public var TwoFactorSetup_Email_Title: String { return self._s[4251]! } - public var Passport_InfoText: String { return self._s[4252]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4253]! } + public var Stickers_ClearRecent: String { return self._s[4251]! } + public var EnterPasscode_ChangeTitle: String { return self._s[4252]! } + public var TwoFactorSetup_Email_Title: String { return self._s[4253]! } + public var Passport_InfoText: String { return self._s[4254]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4255]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4254]!, self._r[4254]!, [_0]) + return formatWithArgumentRanges(self._s[4256]!, self._r[4256]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4255]!, self._r[4255]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4257]!, self._r[4257]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4256]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[4257]! } - public var VoiceOver_Navigation_Compose: String { return self._s[4258]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[4259]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[4261]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4262]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4258]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[4259]! } + public var VoiceOver_Navigation_Compose: String { return self._s[4260]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[4261]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[4263]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4264]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4263]!, self._r[4263]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4265]!, self._r[4265]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4266]! } - public var ChatSettings_OpenLinksIn: String { return self._s[4267]! } - public var Map_HomeAndWorkTitle: String { return self._s[4268]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4268]! } + public var ChatSettings_OpenLinksIn: String { return self._s[4269]! } + public var Map_HomeAndWorkTitle: String { return self._s[4270]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4270]!, self._r[4270]!, [_0]) + return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_0]) } - public var DialogList_Unread: String { return self._s[4271]! } + public var DialogList_Unread: String { return self._s[4273]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4274]!, self._r[4274]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[4273]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4274]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4275]! } + public var User_DeletedAccount: String { return self._s[4275]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4276]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4277]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4276]!, self._r[4276]!, [_0]) + return formatWithArgumentRanges(self._s[4278]!, self._r[4278]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[4277]! } - public var SharedMedia_CategoryMedia: String { return self._s[4278]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4279]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4280]! } - public var Watch_ChatList_Compose: String { return self._s[4281]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4282]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[4283]! } - public var Watch_Microphone_Access: String { return self._s[4284]! } - public var Group_Setup_HistoryHeader: String { return self._s[4285]! } - public var Map_SetThisLocation: String { return self._s[4286]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4287]! } - public var Activity_UploadingPhoto: String { return self._s[4288]! } - public var Conversation_Edit: String { return self._s[4290]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[4291]! } - public var Login_TermsOfServiceDecline: String { return self._s[4292]! } - public var Message_PinnedContactMessage: String { return self._s[4293]! } + public var UserInfo_NotificationsDefault: String { return self._s[4279]! } + public var SharedMedia_CategoryMedia: String { return self._s[4280]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4281]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4282]! } + public var Watch_ChatList_Compose: String { return self._s[4283]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4284]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[4285]! } + public var Watch_Microphone_Access: String { return self._s[4286]! } + public var Group_Setup_HistoryHeader: String { return self._s[4287]! } + public var Map_SetThisLocation: String { return self._s[4288]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4289]! } + public var Activity_UploadingPhoto: String { return self._s[4290]! } + public var Conversation_Edit: String { return self._s[4292]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[4293]! } + public var Login_TermsOfServiceDecline: String { return self._s[4294]! } + public var Message_PinnedContactMessage: String { return self._s[4295]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4294]!, self._r[4294]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4296]!, self._r[4296]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4295]!, self._r[4295]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[4297]!, self._r[4297]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[4296]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4298]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4299]! } + public var Appearance_LargeEmoji: String { return self._s[4298]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4300]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4301]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4300]!, self._r[4300]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4302]!, self._r[4302]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[4301]! } - public var Message_PinnedPhotoMessage: String { return self._s[4302]! } - public var Passport_FieldPhone: String { return self._s[4303]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4304]! } - public var Stats_NotificationsTitle: String { return self._s[4305]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[4306]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[4308]! } - public var Conversation_Call: String { return self._s[4309]! } - public var Common_TakePhoto: String { return self._s[4311]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4312]! } - public var Wallet_Receive_CommentHeader: String { return self._s[4313]! } - public var Channel_NotificationLoading: String { return self._s[4314]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[4303]! } + public var Message_PinnedPhotoMessage: String { return self._s[4304]! } + public var Passport_FieldPhone: String { return self._s[4305]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4306]! } + public var Stats_NotificationsTitle: String { return self._s[4307]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[4308]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[4310]! } + public var Conversation_Call: String { return self._s[4311]! } + public var Common_TakePhoto: String { return self._s[4313]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4314]! } + public var Wallet_Receive_CommentHeader: String { return self._s[4315]! } + public var Channel_NotificationLoading: String { return self._s[4316]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4315]!, self._r[4315]!, [_0]) + return formatWithArgumentRanges(self._s[4317]!, self._r[4317]!, [_0]) } public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4316]!, self._r[4316]!, [_0]) + return formatWithArgumentRanges(self._s[4318]!, self._r[4318]!, [_0]) } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4317]!, self._r[4317]!, [_1]) + return formatWithArgumentRanges(self._s[4319]!, self._r[4319]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[4318]! } + public var Permissions_SiriTitle_v0: String { return self._s[4320]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4319]!, self._r[4319]!, [_0]) + return formatWithArgumentRanges(self._s[4321]!, self._r[4321]!, [_0]) } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4320]!, self._r[4320]!, [_0]) + return formatWithArgumentRanges(self._s[4322]!, self._r[4322]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[4321]! } - public var Wallet_Info_ReceiveGrams: String { return self._s[4322]! } - public var ClearCache_FreeSpace: String { return self._s[4323]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[4324]! } - public var Common_edit: String { return self._s[4325]! } - public var PrivacySettings_AuthSessions: String { return self._s[4326]! } - public var Month_ShortJune: String { return self._s[4327]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4328]! } - public var Call_ReportSend: String { return self._s[4329]! } - public var Watch_LastSeen_JustNow: String { return self._s[4330]! } - public var Notifications_MessageNotifications: String { return self._s[4331]! } - public var WallpaperSearch_ColorGreen: String { return self._s[4332]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4334]! } - public var Group_Status: String { return self._s[4335]! } + public var Channel_MessagePhotoRemoved: String { return self._s[4323]! } + public var Wallet_Info_ReceiveGrams: String { return self._s[4324]! } + public var ClearCache_FreeSpace: String { return self._s[4325]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[4326]! } + public var Common_edit: String { return self._s[4327]! } + public var PrivacySettings_AuthSessions: String { return self._s[4328]! } + public var Month_ShortJune: String { return self._s[4329]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4330]! } + public var Call_ReportSend: String { return self._s[4331]! } + public var Watch_LastSeen_JustNow: String { return self._s[4332]! } + public var Notifications_MessageNotifications: String { return self._s[4333]! } + public var WallpaperSearch_ColorGreen: String { return self._s[4334]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4336]! } + public var Group_Status: String { return self._s[4337]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4336]!, self._r[4336]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4338]!, self._r[4338]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[4337]! } - public var ShareMenu_ShareTo: String { return self._s[4338]! } - public var Conversation_Moderate_Ban: String { return self._s[4339]! } + public var TextFormat_AddLinkTitle: String { return self._s[4339]! } + public var ShareMenu_ShareTo: String { return self._s[4340]! } + public var Conversation_Moderate_Ban: String { return self._s[4341]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4340]!, self._r[4340]!, [_0]) + return formatWithArgumentRanges(self._s[4342]!, self._r[4342]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[4341]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4342]! } + public var SharedMedia_ViewInChat: String { return self._s[4343]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4344]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4343]!, self._r[4343]!, [_1]) + return formatWithArgumentRanges(self._s[4345]!, self._r[4345]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4344]!, self._r[4344]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4346]!, self._r[4346]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4346]!, self._r[4346]!, [_0]) + return formatWithArgumentRanges(self._s[4348]!, self._r[4348]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[4347]! } - public var Appearance_ReduceMotion: String { return self._s[4348]! } + public var Map_OpenInHereMaps: String { return self._s[4349]! } + public var Appearance_ReduceMotion: String { return self._s[4350]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4349]!, self._r[4349]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4351]!, self._r[4351]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[4350]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[4351]! } - public var PhotoEditor_Skip: String { return self._s[4352]! } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_InviteContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[4352]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[4353]! } + public var PhotoEditor_Skip: String { return self._s[4354]! } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessagePoll_QuizCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func OldChannels_GroupFormat(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeletedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InstantPage_Views(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_Weeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_File(_ value: Int32) -> String { + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public func Call_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedVideos(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Call_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveYear(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Years(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedLocations(_ value: Int32) -> String { + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_GroupFormat(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedVideoMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) } public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageViews(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_QuizCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 5d96096370a0ee0ca9c9d31cde6785f6f00b664d..0873e9119c0c0bbd67a55f67cc26553576c3072b 100644 GIT binary patch delta 20621 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
  • #x}C8=?zl((x`B*4SDb_ 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 1 let mailtoString = "mailto:" @@ -2301,9 +2301,15 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G var contactStatus: ChatContactStatus? if let peer = peerView.peers[peerView.peerId] { if let cachedData = peerView.cachedData as? CachedUserData { - contactStatus = ChatContactStatus(canAddContact: !peerView.peerIsContact, canReportIrrelevantLocation: false, peerStatusSettings: cachedData.peerStatusSettings) + contactStatus = ChatContactStatus(canAddContact: !peerView.peerIsContact, canReportIrrelevantLocation: false, peerStatusSettings: cachedData.peerStatusSettings, invitedBy: nil) } else if let cachedData = peerView.cachedData as? CachedGroupData { - contactStatus = ChatContactStatus(canAddContact: false, canReportIrrelevantLocation: false, peerStatusSettings: cachedData.peerStatusSettings) + var invitedBy: Peer? + if let invitedByPeerId = cachedData.invitedBy { + if let peer = peerView.peers[invitedByPeerId] { + invitedBy = peer + } + } + contactStatus = ChatContactStatus(canAddContact: false, canReportIrrelevantLocation: false, peerStatusSettings: cachedData.peerStatusSettings, invitedBy: invitedBy) } else if let cachedData = peerView.cachedData as? CachedChannelData { var canReportIrrelevantLocation = true if let peer = peerView.peers[peerView.peerId] as? TelegramChannel, peer.participationStatus == .member { @@ -2312,7 +2318,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if let peerReportNotice = peerReportNotice, peerReportNotice { canReportIrrelevantLocation = false } - contactStatus = ChatContactStatus(canAddContact: false, canReportIrrelevantLocation: canReportIrrelevantLocation, peerStatusSettings: cachedData.peerStatusSettings) + var invitedBy: Peer? + if let invitedByPeerId = cachedData.invitedBy { + if let peer = peerView.peers[invitedByPeerId] { + invitedBy = peer + } + } + contactStatus = ChatContactStatus(canAddContact: false, canReportIrrelevantLocation: canReportIrrelevantLocation, peerStatusSettings: cachedData.peerStatusSettings, invitedBy: invitedBy) } var peers = SimpleDictionary() @@ -3792,6 +3804,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if let navigationController = strongSelf.effectiveNavigationController { strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), subject: nil, keepStack: .always)) } + }, navigateToProfile: { [weak self] peerId in + guard let strongSelf = self else { + return + } + strongSelf.openPeer(peerId: peerId, navigation: .default, fromMessage: nil) }, openPeerInfo: { [weak self] in self?.navigationButtonAction(.openChatInfo(expandAvatar: false)) }, togglePeerNotifications: { [weak self] in @@ -7801,7 +7818,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G switch self.chatLocation { case let .peer(selfPeerId): switch navigation { - case .info: + case .info, .default: let peerSignal: Signal if let fromMessage = fromMessage { peerSignal = loadedPeerFromMessage(account: self.context.account, peerId: peerId, messageId: fromMessage.id) @@ -8219,7 +8236,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G })) } - private func openResolved(_ result: ResolvedUrl, message: Message? = nil) { + private func openResolved(_ result: ResolvedUrl) { self.context.sharedContext.openResolvedUrl(result, context: self.context, urlContext: .chat, navigationController: self.effectiveNavigationController, openPeer: { [weak self] peerId, navigation in guard let strongSelf = self else { return @@ -8261,113 +8278,17 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self?.present(c, in: .window(.root), with: a) }, dismissInput: { [weak self] in self?.chatDisplayNode.dismissInput() - }, contentContext: message) + }, contentContext: nil) } private func openUrl(_ url: String, concealed: Bool, message: Message? = nil) { self.commitPurposefulAction() - var concealed = concealed - - let openImpl: () -> Void = { [weak self] in - guard let strongSelf = self else { - return - } - - let disposable: MetaDisposable - if let current = strongSelf.resolveUrlDisposable { - disposable = current - } else { - disposable = MetaDisposable() - strongSelf.resolveUrlDisposable = disposable - } - var cancelImpl: (() -> Void)? - let presentationData = strongSelf.presentationData - let progressSignal = Signal { subscriber in - let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: { - cancelImpl?() - })) - self?.present(controller, in: .window(.root)) - return ActionDisposable { [weak controller] in - Queue.mainQueue().async() { - controller?.dismiss() - } - } - } - |> runOn(Queue.mainQueue()) - |> delay(0.15, queue: Queue.mainQueue()) - let progressDisposable = progressSignal.start() - - cancelImpl = { [weak self] in - self?.resolveUrlDisposable?.set(nil) - } - disposable.set((strongSelf.context.sharedContext.resolveUrl(account: strongSelf.context.account, url: url) - |> afterDisposed { - Queue.mainQueue().async { - progressDisposable.dispose() - } - } - |> deliverOnMainQueue).start(next: { [weak self] result in - if let strongSelf = self { - strongSelf.openResolved(result, message: message) - } - })) - } - - var parsedUrlValue: URL? - if let parsed = URL(string: url) { - parsedUrlValue = parsed - } else if let parsed = URL(string: "https://" + url) { - parsedUrlValue = parsed - } else if let encoded = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let parsed = URL(string: encoded) { - parsedUrlValue = parsed - } - let host = parsedUrlValue?.host ?? url - - let rawHost = (host as NSString).removingPercentEncoding ?? host - var latin = CharacterSet() - latin.insert(charactersIn: "A"..."Z") - latin.insert(charactersIn: "a"..."z") - latin.insert(charactersIn: "0"..."9") - var punctuation = CharacterSet() - punctuation.insert(charactersIn: ".-/+_") - var hasLatin = false - var hasNonLatin = false - for c in rawHost { - if c.unicodeScalars.allSatisfy(punctuation.contains) { - } else if c.unicodeScalars.allSatisfy(latin.contains) { - hasLatin = true - } else { - hasNonLatin = true - } - } - if hasLatin && hasNonLatin { - concealed = true - } - - if let parsedUrlValue = parsedUrlValue, isConcealedUrlWhitelisted(parsedUrlValue) { - concealed = false - } - - if concealed { - var rawDisplayUrl: String - if hasNonLatin { - rawDisplayUrl = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? url - } else { - rawDisplayUrl = url - } - let maxLength = 180 - if rawDisplayUrl.count > maxLength { - rawDisplayUrl = String(rawDisplayUrl[.. (string: String, concealed: Bool) { + var parsedUrlValue: URL? + if let parsed = URL(string: url) { + parsedUrlValue = parsed + } else if let parsed = URL(string: "https://" + url) { + parsedUrlValue = parsed + } else if let encoded = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let parsed = URL(string: encoded) { + parsedUrlValue = parsed + } + let host = parsedUrlValue?.host ?? url + + let rawHost = (host as NSString).removingPercentEncoding ?? host + var latin = CharacterSet() + latin.insert(charactersIn: "A"..."Z") + latin.insert(charactersIn: "a"..."z") + latin.insert(charactersIn: "0"..."9") + var punctuation = CharacterSet() + punctuation.insert(charactersIn: ".-/+_") + var hasLatin = false + var hasNonLatin = false + for c in rawHost { + if c.unicodeScalars.allSatisfy(punctuation.contains) { + } else if c.unicodeScalars.allSatisfy(latin.contains) { + hasLatin = true + } else { + hasNonLatin = true + } + } + var concealed = false + if hasLatin && hasNonLatin { + concealed = true + } + + var rawDisplayUrl: String + if hasNonLatin { + rawDisplayUrl = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? url + } else { + rawDisplayUrl = url + } + + if let parsedUrlValue = parsedUrlValue, isConcealedUrlWhitelisted(parsedUrlValue) { + concealed = false + } + + return (rawDisplayUrl, concealed) +} + +func openUserGeneratedUrl(context: AccountContext, url: String, concealed: Bool, present: @escaping (ViewController) -> Void, openResolved: @escaping (ResolvedUrl) -> Void) { + var concealed = concealed + + let presentationData = context.sharedContext.currentPresentationData.with { $0 } + + let openImpl: () -> Void = { + let disposable = MetaDisposable() + var cancelImpl: (() -> Void)? + let progressSignal = Signal { subscriber in + let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: { + cancelImpl?() + })) + present(controller) + return ActionDisposable { [weak controller] in + Queue.mainQueue().async() { + controller?.dismiss() + } + } + } + |> runOn(Queue.mainQueue()) + |> delay(0.15, queue: Queue.mainQueue()) + let progressDisposable = progressSignal.start() + + cancelImpl = { + disposable.dispose() + } + disposable.set((context.sharedContext.resolveUrl(account: context.account, url: url) + |> afterDisposed { + Queue.mainQueue().async { + progressDisposable.dispose() + } + } + |> deliverOnMainQueue).start(next: { result in + openResolved(result) + })) + } + + let (parsedString, parsedConcealed) = parseUrl(url: url) + if parsedConcealed { + concealed = true + } + + if concealed { + var rawDisplayUrl: String = parsedString + let maxLength = 180 + if rawDisplayUrl.count > maxLength { + rawDisplayUrl = String(rawDisplayUrl[.. map { results -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in return { _ in - return .contextRequestResult(user, results) + return .contextRequestResult(user, results?.results) } } diff --git a/submodules/TelegramUI/Sources/ChatMediaInputGifPane.swift b/submodules/TelegramUI/Sources/ChatMediaInputGifPane.swift index 5b70c31711..e87bfc7406 100644 --- a/submodules/TelegramUI/Sources/ChatMediaInputGifPane.swift +++ b/submodules/TelegramUI/Sources/ChatMediaInputGifPane.swift @@ -307,7 +307,7 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { saved = [] } - return (MultiplexedVideoNodeFiles(saved: saved, trending: trending?.files ?? [], isSearch: false, canLoadMore: false), nil) + return (MultiplexedVideoNodeFiles(saved: saved, trending: trending?.files ?? [], isSearch: false, canLoadMore: false, isStale: false), nil) } case .trending: if let searchOffset = searchOffset { @@ -319,16 +319,16 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { } else { canLoadMore = true } - return (MultiplexedVideoNodeFiles(saved: [], trending: result?.files ?? [], isSearch: true, canLoadMore: canLoadMore), result?.nextOffset) + return (MultiplexedVideoNodeFiles(saved: [], trending: result?.files ?? [], isSearch: true, canLoadMore: canLoadMore, isStale: false), result?.nextOffset) } } else { filesSignal = self.trendingPromise.get() |> map { trending -> (MultiplexedVideoNodeFiles, String?) in - return (MultiplexedVideoNodeFiles(saved: [], trending: trending?.files ?? [], isSearch: true, canLoadMore: false), trending?.nextOffset) + return (MultiplexedVideoNodeFiles(saved: [], trending: trending?.files ?? [], isSearch: true, canLoadMore: false, isStale: false), trending?.nextOffset) } } case let .emojiSearch(emoji): - filesSignal = paneGifSearchForQuery(account: self.account, query: emoji, offset: searchOffset, incompleteResults: true, delayRequest: false, updateActivity: nil) + filesSignal = paneGifSearchForQuery(account: self.account, query: emoji, offset: searchOffset, incompleteResults: true, staleCachedResults: searchOffset == nil, delayRequest: false, updateActivity: nil) |> map { result -> (MultiplexedVideoNodeFiles, String?) in let canLoadMore: Bool if let result = result { @@ -336,7 +336,7 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { } else { canLoadMore = true } - return (MultiplexedVideoNodeFiles(saved: [], trending: result?.files ?? [], isSearch: true, canLoadMore: canLoadMore), result?.nextOffset) + return (MultiplexedVideoNodeFiles(saved: [], trending: result?.files ?? [], isSearch: true, canLoadMore: canLoadMore, isStale: result?.isStale ?? false), result?.nextOffset) } } @@ -384,7 +384,7 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { existingFileIds.insert(file.file.media.fileId) resultFiles.append(file) } - files = MultiplexedVideoNodeFiles(saved: [], trending: resultFiles, isSearch: true, canLoadMore: addedFiles.canLoadMore) + files = MultiplexedVideoNodeFiles(saved: [], trending: resultFiles, isSearch: true, canLoadMore: addedFiles.canLoadMore, isStale: addedFiles.isStale) } strongSelf.nextOffset = nextOffset diff --git a/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift index 210b5d42a6..b36dc9ba26 100644 --- a/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift @@ -266,7 +266,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { cutout = TextNodeCutout(bottomRight: statusSize) } - let textInsets = UIEdgeInsets(top: 2.0, left: 0.0, bottom: 5.0, right: 0.0) + let textInsets = UIEdgeInsets(top: 2.0, left: 2.0, bottom: 5.0, right: 2.0) let (textLayout, textApply) = textLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: cutout, insets: textInsets, lineColor: messageTheme.accentControlColor)) diff --git a/submodules/TelegramUI/Sources/ChatPanelInterfaceInteraction.swift b/submodules/TelegramUI/Sources/ChatPanelInterfaceInteraction.swift index 1932e40d73..1fb9cbf8f6 100644 --- a/submodules/TelegramUI/Sources/ChatPanelInterfaceInteraction.swift +++ b/submodules/TelegramUI/Sources/ChatPanelInterfaceInteraction.swift @@ -74,6 +74,7 @@ final class ChatPanelInterfaceInteraction { let toggleMembersSearch: (Bool) -> Void let navigateToMessage: (MessageId) -> Void let navigateToChat: (PeerId) -> Void + let navigateToProfile: (PeerId) -> Void let openPeerInfo: () -> Void let togglePeerNotifications: () -> Void let sendContextResult: (ChatContextResultCollection, ChatContextResult, ASDisplayNode, CGRect) -> Bool @@ -119,7 +120,7 @@ final class ChatPanelInterfaceInteraction { let displaySearchResultsTooltip: (ASDisplayNode, CGRect) -> Void let statuses: ChatPanelInterfaceInteractionStatuses? - init(setupReplyMessage: @escaping (MessageId, @escaping (ContainedViewLayoutTransition) -> Void) -> Void, setupEditMessage: @escaping (MessageId?, @escaping (ContainedViewLayoutTransition) -> Void) -> Void, beginMessageSelection: @escaping ([MessageId], @escaping (ContainedViewLayoutTransition) -> Void) -> Void, deleteSelectedMessages: @escaping () -> Void, reportSelectedMessages: @escaping () -> Void, reportMessages: @escaping ([Message], ContextController?) -> Void, deleteMessages: @escaping ([Message], ContextController?, @escaping (ContextMenuActionResult) -> Void) -> 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, openSearchResults: @escaping () -> 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, ASDisplayNode, CGRect) -> Bool, 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, ASDisplayNode, CGRect) -> Bool, 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, displaySlowmodeTooltip: @escaping (ASDisplayNode, CGRect) -> Void, displaySendMessageOptions: @escaping (ASDisplayNode, ContextGesture) -> Void, openScheduledMessages: @escaping () -> Void, displaySearchResultsTooltip: @escaping (ASDisplayNode, CGRect) -> Void, statuses: ChatPanelInterfaceInteractionStatuses?) { + init(setupReplyMessage: @escaping (MessageId, @escaping (ContainedViewLayoutTransition) -> Void) -> Void, setupEditMessage: @escaping (MessageId?, @escaping (ContainedViewLayoutTransition) -> Void) -> Void, beginMessageSelection: @escaping ([MessageId], @escaping (ContainedViewLayoutTransition) -> Void) -> Void, deleteSelectedMessages: @escaping () -> Void, reportSelectedMessages: @escaping () -> Void, reportMessages: @escaping ([Message], ContextController?) -> Void, deleteMessages: @escaping ([Message], ContextController?, @escaping (ContextMenuActionResult) -> Void) -> 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, openSearchResults: @escaping () -> Void, navigateMessageSearch: @escaping (ChatPanelSearchNavigationAction) -> Void, openCalendarSearch: @escaping () -> Void, toggleMembersSearch: @escaping (Bool) -> Void, navigateToMessage: @escaping (MessageId) -> Void, navigateToChat: @escaping (PeerId) -> Void, navigateToProfile: @escaping (PeerId) -> Void, openPeerInfo: @escaping () -> Void, togglePeerNotifications: @escaping () -> Void, sendContextResult: @escaping (ChatContextResultCollection, ChatContextResult, ASDisplayNode, CGRect) -> Bool, 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, ASDisplayNode, CGRect) -> Bool, 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, displaySlowmodeTooltip: @escaping (ASDisplayNode, CGRect) -> Void, displaySendMessageOptions: @escaping (ASDisplayNode, ContextGesture) -> Void, openScheduledMessages: @escaping () -> Void, displaySearchResultsTooltip: @escaping (ASDisplayNode, CGRect) -> Void, statuses: ChatPanelInterfaceInteractionStatuses?) { self.setupReplyMessage = setupReplyMessage self.setupEditMessage = setupEditMessage self.beginMessageSelection = beginMessageSelection @@ -144,6 +145,7 @@ final class ChatPanelInterfaceInteraction { self.toggleMembersSearch = toggleMembersSearch self.navigateToMessage = navigateToMessage self.navigateToChat = navigateToChat + self.navigateToProfile = navigateToProfile self.openPeerInfo = openPeerInfo self.togglePeerNotifications = togglePeerNotifications self.sendContextResult = sendContextResult diff --git a/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift b/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift index 3697ec4e39..5ec5936c4f 100644 --- a/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift +++ b/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift @@ -243,6 +243,7 @@ struct ChatContactStatus: Equatable { var canAddContact: Bool var canReportIrrelevantLocation: Bool var peerStatusSettings: PeerStatusSettings? + var invitedBy: Peer? var isEmpty: Bool { guard var peerStatusSettings = self.peerStatusSettings else { @@ -256,6 +257,22 @@ struct ChatContactStatus: Equatable { } return peerStatusSettings.isEmpty } + + static func ==(lhs: ChatContactStatus, rhs: ChatContactStatus) -> Bool { + if lhs.canAddContact != rhs.canAddContact { + return false + } + if lhs.canReportIrrelevantLocation != rhs.canReportIrrelevantLocation { + return false + } + if lhs.peerStatusSettings != rhs.peerStatusSettings { + return false + } + if !arePeersEqual(lhs.invitedBy, rhs.invitedBy) { + return false + } + return true + } } enum ChatSlowmodeVariant: Equatable { diff --git a/submodules/TelegramUI/Sources/ChatRecentActionsController.swift b/submodules/TelegramUI/Sources/ChatRecentActionsController.swift index 02ef88da19..d38f18ae3d 100644 --- a/submodules/TelegramUI/Sources/ChatRecentActionsController.swift +++ b/submodules/TelegramUI/Sources/ChatRecentActionsController.swift @@ -75,6 +75,7 @@ final class ChatRecentActionsController: TelegramBaseController { }, toggleMembersSearch: { _ in }, navigateToMessage: { _ in }, navigateToChat: { _ in + }, navigateToProfile: { _ in }, openPeerInfo: { }, togglePeerNotifications: { }, sendContextResult: { _, _, _, _ in diff --git a/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift index ef1b9e7aec..679fdef12e 100644 --- a/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift @@ -78,7 +78,109 @@ private func peerButtons(_ state: ChatPresentationInterfaceState) -> [ChatReport return buttons } +private final class ChatInfoTitlePanelInviteInfoNode: ASDisplayNode { + private var theme: PresentationTheme? + + private let labelNode: ImmediateTextNode + private let filledBackgroundNode: LinkHighlightingNode + + init(openInvitePeer: @escaping () -> Void) { + self.labelNode = ImmediateTextNode() + self.labelNode.maximumNumberOfLines = 1 + self.labelNode.textAlignment = .center + + self.filledBackgroundNode = LinkHighlightingNode(color: .clear) + + super.init() + + self.addSubnode(self.filledBackgroundNode) + self.addSubnode(self.labelNode) + + self.labelNode.highlightAttributeAction = { attributes in + for (key, _) in attributes { + if key.rawValue == "_Link" { + return key + } + } + return nil + } + self.labelNode.tapAttributeAction = { attributes, _ in + for (key, _) in attributes { + if key.rawValue == "_Link" { + openInvitePeer() + } + } + } + } + + func update(width: CGFloat, theme: PresentationTheme, strings: PresentationStrings, wallpaper: TelegramWallpaper, chatPeer: Peer, invitedBy: Peer, transition: ContainedViewLayoutTransition) -> CGFloat { + let primaryTextColor = serviceMessageColorComponents(theme: theme, wallpaper: wallpaper).primaryText + + if self.theme !== theme { + self.theme = theme + + self.labelNode.linkHighlightColor = primaryTextColor.withAlphaComponent(0.3) + } + + let topInset: CGFloat = 6.0 + let bottomInset: CGFloat = 6.0 + let sideInset: CGFloat = 16.0 + + let stringAndRanges: (String, [(Int, NSRange)]) + if let channel = chatPeer as? TelegramChannel, case .broadcast = channel.info { + stringAndRanges = strings.Conversation_NoticeInvitedByInChannel(invitedBy.compactDisplayTitle) + } else { + stringAndRanges = strings.Conversation_NoticeInvitedByInGroup(invitedBy.compactDisplayTitle) + } + + let attributedString = NSMutableAttributedString(string: stringAndRanges.0, font: Font.regular(13.0), textColor: primaryTextColor) + + let boldAttributes = [NSAttributedString.Key.font: Font.semibold(13.0), NSAttributedString.Key(rawValue: "_Link"): true as NSNumber] + for (_, range) in stringAndRanges.1 { + attributedString.addAttributes(boldAttributes, range: range) + } + + self.labelNode.attributedText = attributedString + let labelLayout = self.labelNode.updateLayoutFullInfo(CGSize(width: width - sideInset * 2.0, height: CGFloat.greatestFiniteMagnitude)) + + var labelRects = labelLayout.linesRects() + if labelRects.count > 1 { + let sortedIndices = (0 ..< labelRects.count).sorted(by: { labelRects[$0].width > labelRects[$1].width }) + for i in 0 ..< sortedIndices.count { + let index = sortedIndices[i] + for j in -1 ... 1 { + if j != 0 && index + j >= 0 && index + j < sortedIndices.count { + if abs(labelRects[index + j].width - labelRects[index].width) < 40.0 { + labelRects[index + j].size.width = max(labelRects[index + j].width, labelRects[index].width) + labelRects[index].size.width = labelRects[index + j].size.width + } + } + } + } + } + for i in 0 ..< labelRects.count { + labelRects[i] = labelRects[i].insetBy(dx: -6.0, dy: floor((labelRects[i].height - 20.0) / 2.0)) + labelRects[i].size.height = 20.0 + labelRects[i].origin.x = floor((labelLayout.size.width - labelRects[i].width) / 2.0) + } + + let backgroundLayout = self.filledBackgroundNode.asyncLayout() + let serviceColor = serviceMessageColorComponents(theme: theme, wallpaper: wallpaper) + let backgroundApply = backgroundLayout(serviceColor.fill, labelRects, 10.0, 10.0, 0.0) + backgroundApply() + + let backgroundSize = CGSize(width: labelLayout.size.width + 8.0 + 8.0, height: labelLayout.size.height + 4.0) + + let labelFrame = CGRect(origin: CGPoint(x: floor((width - labelLayout.size.width) / 2.0), y: topInset + floorToScreenPixels((backgroundSize.height - labelLayout.size.height) / 2.0) - 1.0), size: labelLayout.size) + self.labelNode.frame = labelFrame + self.filledBackgroundNode.frame = labelFrame.offsetBy(dx: 0.0, dy: -11.0) + + return topInset + backgroundSize.height + bottomInset + } +} + final class ChatReportPeerTitlePanelNode: ChatTitleAccessoryPanelNode { + private let backgroundNode: ASDisplayNode private let separatorNode: ASDisplayNode private let closeButton: HighlightableButtonNode @@ -86,7 +188,11 @@ final class ChatReportPeerTitlePanelNode: ChatTitleAccessoryPanelNode { private var theme: PresentationTheme? + private var inviteInfoNode: ChatInfoTitlePanelInviteInfoNode? + override init() { + self.backgroundNode = ASDisplayNode() + self.backgroundNode.isLayerBacked = true self.separatorNode = ASDisplayNode() self.separatorNode.isLayerBacked = true @@ -96,6 +202,7 @@ final class ChatReportPeerTitlePanelNode: ChatTitleAccessoryPanelNode { super.init() + self.addSubnode(self.backgroundNode) self.addSubnode(self.separatorNode) self.closeButton.addTarget(self, action: #selector(self.closePressed), forControlEvents: [.touchUpInside]) @@ -107,11 +214,11 @@ final class ChatReportPeerTitlePanelNode: ChatTitleAccessoryPanelNode { self.theme = interfaceState.theme self.closeButton.setImage(PresentationResourcesChat.chatInputPanelEncircledCloseIconImage(interfaceState.theme), for: []) - self.backgroundColor = interfaceState.theme.chat.historyNavigation.fillColor + self.backgroundNode.backgroundColor = interfaceState.theme.chat.historyNavigation.fillColor self.separatorNode.backgroundColor = interfaceState.theme.chat.historyNavigation.strokeColor } - let panelHeight: CGFloat = 40.0 + var panelHeight: CGFloat = 40.0 let contentRightInset: CGFloat = 14.0 + rightInset @@ -190,8 +297,42 @@ final class ChatReportPeerTitlePanelNode: ChatTitleAccessoryPanelNode { } } + transition.updateFrame(node: self.backgroundNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: panelHeight))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) + var chatPeer: Peer? + if let renderedPeer = interfaceState.renderedPeer { + chatPeer = renderedPeer.peers[renderedPeer.peerId] + } + if let chatPeer = chatPeer, let invitedBy = interfaceState.contactStatus?.invitedBy { + var inviteInfoTransition = transition + let inviteInfoNode: ChatInfoTitlePanelInviteInfoNode + if let current = self.inviteInfoNode { + inviteInfoNode = current + } else { + inviteInfoTransition = .immediate + inviteInfoNode = ChatInfoTitlePanelInviteInfoNode(openInvitePeer: { [weak self] in + self?.interfaceInteraction?.navigateToProfile(invitedBy.id) + }) + self.addSubnode(inviteInfoNode) + self.inviteInfoNode = inviteInfoNode + inviteInfoNode.alpha = 0.0 + transition.updateAlpha(node: inviteInfoNode, alpha: 1.0) + } + + if let inviteInfoNode = self.inviteInfoNode { + let inviteHeight = inviteInfoNode.update(width: width, theme: interfaceState.theme, strings: interfaceState.strings, wallpaper: interfaceState.chatWallpaper, chatPeer: chatPeer, invitedBy: invitedBy, transition: inviteInfoTransition) + inviteInfoTransition.updateFrame(node: inviteInfoNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight), size: CGSize(width: width, height: inviteHeight))) + panelHeight += inviteHeight + } + } else if let inviteInfoNode = self.inviteInfoNode { + self.inviteInfoNode = nil + transition.updateAlpha(node: inviteInfoNode, alpha: 0.0, completion: { [weak inviteInfoNode] _ in + inviteInfoNode?.removeFromSupernode() + }) + } + return panelHeight } diff --git a/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift b/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift index 064b575d51..c24ab68115 100644 --- a/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift +++ b/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift @@ -15,15 +15,17 @@ class PaneGifSearchForQueryResult { let files: [MultiplexedVideoNodeFile] let nextOffset: String? let isComplete: Bool + let isStale: Bool - init(files: [MultiplexedVideoNodeFile], nextOffset: String?, isComplete: Bool) { + init(files: [MultiplexedVideoNodeFile], nextOffset: String?, isComplete: Bool, isStale: Bool) { self.files = files self.nextOffset = nextOffset self.isComplete = isComplete + self.isStale = isStale } } -func paneGifSearchForQuery(account: Account, query: String, offset: String?, incompleteResults: Bool = false, delayRequest: Bool = true, updateActivity: ((Bool) -> Void)?) -> Signal { +func paneGifSearchForQuery(account: Account, query: String, offset: String?, incompleteResults: Bool = false, staleCachedResults: Bool = false, delayRequest: Bool = true, updateActivity: ((Bool) -> Void)?) -> Signal { let contextBot = account.postbox.transaction { transaction -> String in let configuration = currentSearchBotsConfiguration(transaction: transaction) return configuration.gifBotUsername ?? "gif" @@ -42,14 +44,14 @@ func paneGifSearchForQuery(account: Account, query: String, offset: String?, inc return .single(nil) } } - |> mapToSignal { peer -> Signal<(ChatPresentationInputQueryResult?, Bool), NoError> in + |> mapToSignal { peer -> Signal<(ChatPresentationInputQueryResult?, Bool, Bool), NoError> in if let user = peer as? TelegramUser, let botInfo = user.botInfo, let _ = botInfo.inlinePlaceholder { - let results = requestContextResults(account: account, botId: user.id, query: query, peerId: account.peerId, offset: offset ?? "", incompleteResults: incompleteResults, limit: 1) - |> map { results -> (ChatPresentationInputQueryResult?, Bool) in - return (.contextRequestResult(user, results), results != nil) + let results = requestContextResults(account: account, botId: user.id, query: query, peerId: account.peerId, offset: offset ?? "", incompleteResults: incompleteResults, staleCachedResults: staleCachedResults, limit: 1) + |> map { results -> (ChatPresentationInputQueryResult?, Bool, Bool) in + return (.contextRequestResult(user, results?.results), results != nil, results?.isStale ?? false) } - let maybeDelayedContextResults: Signal<(ChatPresentationInputQueryResult?, Bool), NoError> + let maybeDelayedContextResults: Signal<(ChatPresentationInputQueryResult?, Bool, Bool), NoError> if delayRequest { maybeDelayedContextResults = results |> delay(0.4, queue: Queue.concurrentDefaultQueue()) } else { @@ -58,7 +60,7 @@ func paneGifSearchForQuery(account: Account, query: String, offset: String?, inc return maybeDelayedContextResults } else { - return .single((nil, true)) + return .single((nil, true, false)) } } return contextBot @@ -111,7 +113,7 @@ func paneGifSearchForQuery(account: Account, query: String, offset: String?, inc } } } - return .single(PaneGifSearchForQueryResult(files: references, nextOffset: collection.nextOffset, isComplete: result.1)) + return .single(PaneGifSearchForQueryResult(files: references, nextOffset: collection.nextOffset, isComplete: result.1, isStale: result.2)) } else if incompleteResults { return .single(nil) } else { @@ -232,7 +234,7 @@ final class GifPaneSearchContentNode: ASDisplayNode & PaneSearchContentNode { } else { strongSelf.nextOffset = nil } - strongSelf.multiplexedNode?.setFiles(files: MultiplexedVideoNodeFiles(saved: [], trending: result, isSearch: true, canLoadMore: false), synchronous: true, resetScrollingToOffset: nil) + strongSelf.multiplexedNode?.setFiles(files: MultiplexedVideoNodeFiles(saved: [], trending: result, isSearch: true, canLoadMore: false, isStale: false), synchronous: true, resetScrollingToOffset: nil) strongSelf.updateActivity?(false) strongSelf.notFoundNode.isHidden = text.isEmpty || !result.isEmpty })) @@ -279,7 +281,7 @@ final class GifPaneSearchContentNode: ASDisplayNode & PaneSearchContentNode { } else { strongSelf.nextOffset = nil } - strongSelf.multiplexedNode?.setFiles(files: MultiplexedVideoNodeFiles(saved: [], trending: files, isSearch: true, canLoadMore: false), synchronous: true, resetScrollingToOffset: nil) + strongSelf.multiplexedNode?.setFiles(files: MultiplexedVideoNodeFiles(saved: [], trending: files, isSearch: true, canLoadMore: false, isStale: false), synchronous: true, resetScrollingToOffset: nil) strongSelf.notFoundNode.isHidden = text.isEmpty || !files.isEmpty })) } diff --git a/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputContextPanelNode.swift b/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputContextPanelNode.swift index 150e806eba..4ff474d8d2 100644 --- a/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputContextPanelNode.swift @@ -217,6 +217,9 @@ final class HorizontalListContextResultsChatInputContextPanelNode: ChatInputCont return (geoPoint.latitude, geoPoint.longitude) } self.loadMoreDisposable.set((requestChatContextResults(account: self.context.account, botId: currentProcessedResults.botId, peerId: currentProcessedResults.peerId, query: currentProcessedResults.query, location: .single(geoPoint), offset: nextOffset) + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> deliverOnMainQueue).start(next: { [weak self] nextResults in guard let strongSelf = self, let nextResults = nextResults else { return diff --git a/submodules/TelegramUI/Sources/InlineReactionSearchPanel.swift b/submodules/TelegramUI/Sources/InlineReactionSearchPanel.swift index bd106a9d60..9e6c107944 100644 --- a/submodules/TelegramUI/Sources/InlineReactionSearchPanel.swift +++ b/submodules/TelegramUI/Sources/InlineReactionSearchPanel.swift @@ -9,6 +9,7 @@ import Postbox import TelegramPresentationData import TelegramUIPreferences import AccountContext +import StickerPackPreviewUI private final class InlineReactionSearchStickersNode: ASDisplayNode, UIScrollViewDelegate { private final class DisplayItem { @@ -23,6 +24,7 @@ private final class InlineReactionSearchStickersNode: ASDisplayNode, UIScrollVie private let context: AccountContext private var theme: PresentationTheme + private var strings: PresentationStrings private let scrollNode: ASScrollNode private var items: [TelegramMediaFile] = [] @@ -34,12 +36,17 @@ private final class InlineReactionSearchStickersNode: ASDisplayNode, UIScrollVie private var ignoreScrolling: Bool = false private var animateInOnLayout: Bool = false + var previewedStickerItem: StickerPackItem? + var updateBackgroundOffset: ((CGFloat, ContainedViewLayoutTransition) -> Void)? var sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Void)? - init(context: AccountContext, theme: PresentationTheme) { + var getControllerInteraction: (() -> ChatControllerInteraction?)? + + init(context: AccountContext, theme: PresentationTheme, strings: PresentationStrings) { self.context = context self.theme = theme + self.strings = strings self.scrollNode = ASScrollNode() @@ -56,6 +63,112 @@ private final class InlineReactionSearchStickersNode: ASDisplayNode, UIScrollVie self.addSubnode(self.scrollNode) } + override func didLoad() { + super.didLoad() + + self.view.addGestureRecognizer(PeekControllerGestureRecognizer(contentAtPoint: { [weak self] point in + if let strongSelf = self { + let convertedPoint = strongSelf.scrollNode.view.convert(point, from: strongSelf.view) + guard strongSelf.scrollNode.view.bounds.contains(convertedPoint) else { + return nil + } + + var selectedNode: HorizontalStickerGridItemNode? + for (_, node) in strongSelf.itemNodes { + if node.frame.contains(convertedPoint) { + selectedNode = node + break + } + } + + if let itemNode = selectedNode, let item = itemNode.stickerItem { + return strongSelf.context.account.postbox.transaction { transaction -> Bool in + return getIsStickerSaved(transaction: transaction, fileId: item.file.fileId) + } + |> deliverOnMainQueue + |> map { isStarred -> (ASDisplayNode, PeekControllerContent)? in + if let strongSelf = self, let controllerInteraction = strongSelf.getControllerInteraction?() { + var menuItems: [PeekControllerMenuItem] = [] + menuItems = [ + PeekControllerMenuItem(title: strongSelf.strings.StickerPack_Send, color: .accent, font: .bold, action: { _, _ in + return controllerInteraction.sendSticker(.standalone(media: item.file), true, itemNode, itemNode.bounds) + }), + PeekControllerMenuItem(title: isStarred ? strongSelf.strings.Stickers_RemoveFromFavorites : strongSelf.strings.Stickers_AddToFavorites, color: isStarred ? .destructive : .accent, action: { _, _ in + if let strongSelf = self { + if isStarred { + let _ = removeSavedSticker(postbox: strongSelf.context.account.postbox, mediaId: item.file.fileId).start() + } else { + let _ = addSavedSticker(postbox: strongSelf.context.account.postbox, network: strongSelf.context.account.network, file: item.file).start() + } + } + return true + }), + PeekControllerMenuItem(title: strongSelf.strings.StickerPack_ViewPack, color: .accent, action: { _, _ in + if let strongSelf = self, let controllerInteraction = strongSelf.getControllerInteraction?() { + loop: for attribute in item.file.attributes { + switch attribute { + case let .Sticker(_, packReference, _): + if let packReference = packReference { + let controller = StickerPackScreen(context: strongSelf.context, mainStickerPack: packReference, stickerPacks: [packReference], parentNavigationController: controllerInteraction.navigationController(), sendSticker: { file, sourceNode, sourceRect in + if let strongSelf = self, let controllerInteraction = strongSelf.getControllerInteraction?() { + return controllerInteraction.sendSticker(file, true, sourceNode, sourceRect) + } else { + return false + } + }) + + controllerInteraction.navigationController()?.view.window?.endEditing(true) + controllerInteraction.presentController(controller, nil) + } + break loop + default: + break + } + } + return true + } + return true + }), + PeekControllerMenuItem(title: strongSelf.strings.Common_Cancel, color: .accent, font: .bold, action: { _, _ in return true }) + ] + return (itemNode, StickerPreviewPeekContent(account: strongSelf.context.account, item: .pack(item), menu: menuItems)) + } else { + return nil + } + } + } + } + return nil + }, present: { [weak self] content, sourceNode in + if let strongSelf = self { + let controller = PeekController(theme: PeekControllerTheme(presentationTheme: strongSelf.theme), content: content, sourceNode: { + return sourceNode + }) + strongSelf.getControllerInteraction?()?.presentGlobalOverlayController(controller, nil) + return controller + } + return nil + }, updateContent: { [weak self] content in + if let strongSelf = self { + var item: StickerPackItem? + if let content = content as? StickerPreviewPeekContent, case let .pack(contentItem) = content.item { + item = contentItem + } + strongSelf.updatePreviewingItem(item: item, animated: true) + } + })) + } + + private func updatePreviewingItem(item: StickerPackItem?, animated: Bool) { + if self.previewedStickerItem != item { + self.previewedStickerItem = item + + for (_, itemNode) in self.itemNodes { + itemNode.updatePreviewing(animated: animated) + } + } + } + func scrollViewDidScroll(_ scrollView: UIScrollView) { if !self.ignoreScrolling { self.updateVisibleItems(synchronous: false) @@ -223,8 +336,8 @@ private final class InlineReactionSearchStickersNode: ASDisplayNode, UIScrollVie account: self.context.account, file: item.file, theme: self.theme, - isPreviewed: { _ in - return false + isPreviewed: { [weak self] item in + return item.file.fileId == self?.previewedStickerItem?.file.fileId }, sendSticker: { [weak self] file, node, rect in self?.sendSticker?(file, node, rect) } @@ -321,7 +434,7 @@ final class InlineReactionSearchPanel: ChatInputContextPanelNode { self.backgroundContainerNode = ASDisplayNode() - self.stickersNode = InlineReactionSearchStickersNode(context: context, theme: theme) + self.stickersNode = InlineReactionSearchStickersNode(context: context, theme: theme, strings: strings) super.init(context: context, theme: theme, strings: strings, fontSize: fontSize) @@ -339,6 +452,10 @@ final class InlineReactionSearchPanel: ChatInputContextPanelNode { self.backgroundNode.backgroundColor = theme.list.plainBackgroundColor + self.stickersNode.getControllerInteraction = { [weak self] in + return self?.controllerInteraction + } + self.stickersNode.updateBackgroundOffset = { [weak self] offset, transition in guard let strongSelf = self, let (_, _) = strongSelf.validLayout else { return @@ -362,6 +479,11 @@ final class InlineReactionSearchPanel: ChatInputContextPanelNode { self.view.disablesInteractiveKeyboardGestureRecognizer = true } + override func didLoad() { + super.didLoad() + + } + func updateResults(results: [TelegramMediaFile]) { self.stickersNode.updateItems(items: results) } diff --git a/submodules/TelegramUI/Sources/ListMessageSnippetItemNode.swift b/submodules/TelegramUI/Sources/ListMessageSnippetItemNode.swift index 304b8b7c01..4152079a7d 100644 --- a/submodules/TelegramUI/Sources/ListMessageSnippetItemNode.swift +++ b/submodules/TelegramUI/Sources/ListMessageSnippetItemNode.swift @@ -244,11 +244,13 @@ final class ListMessageSnippetItemNode: ListMessageNode { isInstantView = true } - primaryUrl = content.url + let (parsedUrl, _) = parseUrl(url: content.url) + + primaryUrl = parsedUrl processed = true var hostName: String = "" - if let url = URL(string: content.url), let host = url.host, !host.isEmpty { + if let url = URL(string: parsedUrl), let host = url.host, !host.isEmpty { hostName = host iconText = NSAttributedString(string: host[.. CGFloat { + func update(width: CGFloat, containerHeight: CGFloat, containerInset: CGFloat, statusBarHeight: CGFloat, navigationHeight: CGFloat, isModalOverlay: Bool, isMediaOnly: Bool, contentOffset: CGFloat, presentationData: PresentationData, peer: Peer?, cachedData: CachedPeerData?, notificationSettings: TelegramPeerNotificationSettings?, statusData: PeerInfoStatusData?, isContact: Bool, state: PeerInfoState, transition: ContainedViewLayoutTransition, additive: Bool) -> CGFloat { + var contentOffset = contentOffset + + if isMediaOnly { + if isModalOverlay { + contentOffset = 312.0 + } else { + contentOffset = 212.0 + } + } + let themeUpdated = self.presentationData?.theme !== presentationData.theme self.presentationData = presentationData diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index d5d0e7a541..66c7a0325b 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -367,6 +367,7 @@ final class PeerInfoSelectionPanelNode: ASDisplayNode { }, toggleMembersSearch: { _ in }, navigateToMessage: { _ in }, navigateToChat: { _ in + }, navigateToProfile: { _ in }, openPeerInfo: { }, togglePeerNotifications: { }, sendContextResult: { _, _, _, _ in @@ -1484,11 +1485,11 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD }, requestMessageActionCallback: { _, _, _ in }, requestMessageActionUrlAuth: { _, _, _ in }, activateSwitchInline: { _, _ in - }, openUrl: { [weak self] url, _, external, _ in + }, openUrl: { [weak self] url, concealed, external, _ in guard let strongSelf = self else { return } - strongSelf.openUrl(url: url, external: external ?? false) + strongSelf.openUrl(url: url, concealed: concealed, external: external ?? false) }, shareCurrentLocation: { }, shareAccountContact: { }, sendBotCommand: { _, _ in @@ -2129,7 +2130,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD } strongSelf.paneContainerNode.currentPane?.node.addToTransitionSurface(view: view) }, openUrl: { [weak self] url in - self?.openUrl(url: url, external: false) + self?.openUrl(url: url, concealed: false, external: false) }, openPeer: { [weak self] peer, navigation in self?.openPeer(peerId: peer.id, navigation: navigation) }, callPeer: { peerId in @@ -2138,7 +2139,27 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD }, sendSticker: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in })) } - private func openUrl(url: String, external: Bool) { + private func openUrl(url: String, concealed: Bool, external: Bool) { + openUserGeneratedUrl(context: self.context, url: url, concealed: concealed, present: { [weak self] c in + self?.controller?.present(c, in: .window(.root)) + }, openResolved: { [weak self] tempResolved in + guard let strongSelf = self else { + return + } + + let result: ResolvedUrl = external ? .externalUrl(url) : tempResolved + + strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.controller?.navigationController as? NavigationController, openPeer: { peerId, navigation in + self?.openPeer(peerId: peerId, navigation: navigation) + }, sendFile: nil, + sendSticker: nil, + present: { c, a in + self?.controller?.present(c, in: .window(.root), with: a) + }, dismissInput: { + self?.view.endEditing(true) + }, contentContext: nil) + }) + let disposable = self.resolveUrlDisposable let resolvedUrl: Signal @@ -2147,22 +2168,6 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD } else { resolvedUrl = self.context.sharedContext.resolveUrl(account: self.context.account, url: url) } - - disposable.set((resolvedUrl - |> deliverOnMainQueue).start(next: { [weak self] result in - guard let strongSelf = self else { - return - } - strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.controller?.navigationController as? NavigationController, openPeer: { peerId, navigation in - self?.openPeer(peerId: peerId, navigation: navigation) - }, sendFile: nil, - sendSticker: nil, - present: { c, a in - self?.controller?.present(c, in: .window(.root), with: a) - }, dismissInput: { - self?.view.endEditing(true) - }, contentContext: nil) - })) } private func openPeer(peerId: PeerId, navigation: ChatControllerInteractionNavigateToPeer) { @@ -3807,7 +3812,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD var contentHeight: CGFloat = 0.0 - let headerHeight = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: navigationHeight, isModalOverlay: layout.isModalOverlay, contentOffset: self.isMediaOnly ? 212.0 : self.scrollNode.view.contentOffset.y, presentationData: self.presentationData, peer: self.data?.peer, cachedData: self.data?.cachedData, notificationSettings: self.data?.notificationSettings, statusData: self.data?.status, isContact: self.data?.isContact ?? false, state: self.state, transition: transition, additive: additive) + let headerHeight = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: navigationHeight, isModalOverlay: layout.isModalOverlay, isMediaOnly: self.isMediaOnly, contentOffset: self.isMediaOnly ? 212.0 : self.scrollNode.view.contentOffset.y, presentationData: self.presentationData, peer: self.data?.peer, cachedData: self.data?.cachedData, notificationSettings: self.data?.notificationSettings, statusData: self.data?.status, isContact: self.data?.isContact ?? false, state: self.state, transition: transition, additive: additive) let headerFrame = CGRect(origin: CGPoint(x: 0.0, y: contentHeight), size: CGSize(width: layout.size.width, height: headerHeight)) if additive { transition.updateFrameAdditive(node: self.headerNode, frame: headerFrame) @@ -4040,7 +4045,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD if let (layout, navigationHeight) = self.validLayout { if !additive { - let _ = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: navigationHeight, isModalOverlay: layout.isModalOverlay, contentOffset: self.isMediaOnly ? 212.0 : offsetY, presentationData: self.presentationData, peer: self.data?.peer, cachedData: self.data?.cachedData, notificationSettings: self.data?.notificationSettings, statusData: self.data?.status, isContact: self.data?.isContact ?? false, state: self.state, transition: transition, additive: additive) + let _ = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: navigationHeight, isModalOverlay: layout.isModalOverlay, isMediaOnly: self.isMediaOnly, contentOffset: self.isMediaOnly ? 212.0 : offsetY, presentationData: self.presentationData, peer: self.data?.peer, cachedData: self.data?.cachedData, notificationSettings: self.data?.notificationSettings, statusData: self.data?.status, isContact: self.data?.isContact ?? false, state: self.state, transition: transition, additive: additive) } let paneAreaExpansionDistance: CGFloat = 32.0 @@ -4541,7 +4546,7 @@ private final class PeerInfoNavigationTransitionNode: ASDisplayNode, CustomNavig self.headerNode.navigationTransition = PeerInfoHeaderNavigationTransition(sourceNavigationBar: bottomNavigationBar, sourceTitleView: previousTitleView, sourceTitleFrame: previousTitleFrame, sourceSubtitleFrame: previousStatusFrame, fraction: fraction) if let (layout, _) = self.screenNode.validLayout { - let _ = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: topNavigationBar.bounds.height, isModalOverlay: layout.isModalOverlay, contentOffset: 0.0, presentationData: self.presentationData, peer: self.screenNode.data?.peer, cachedData: self.screenNode.data?.cachedData, notificationSettings: self.screenNode.data?.notificationSettings, statusData: self.screenNode.data?.status, isContact: self.screenNode.data?.isContact ?? false, state: self.screenNode.state, transition: transition, additive: false) + let _ = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: topNavigationBar.bounds.height, isModalOverlay: layout.isModalOverlay, isMediaOnly: false, contentOffset: 0.0, presentationData: self.presentationData, peer: self.screenNode.data?.peer, cachedData: self.screenNode.data?.cachedData, notificationSettings: self.screenNode.data?.notificationSettings, statusData: self.screenNode.data?.status, isContact: self.screenNode.data?.isContact ?? false, state: self.screenNode.state, transition: transition, additive: false) } let titleScale = (fraction * previousTitleNode.bounds.height + (1.0 - fraction) * self.headerNode.titleNodeRawContainer.bounds.height) / previousTitleNode.bounds.height diff --git a/submodules/TelegramUI/Sources/PeerMediaCollectionController.swift b/submodules/TelegramUI/Sources/PeerMediaCollectionController.swift index 8a4688ae51..cbb82b7ebf 100644 --- a/submodules/TelegramUI/Sources/PeerMediaCollectionController.swift +++ b/submodules/TelegramUI/Sources/PeerMediaCollectionController.swift @@ -502,6 +502,7 @@ public class PeerMediaCollectionController: TelegramBaseController { }, toggleMembersSearch: { _ in }, navigateToMessage: { _ in }, navigateToChat: { _ in + }, navigateToProfile: { _ in }, openPeerInfo: { }, togglePeerNotifications: { }, sendContextResult: { _, _, _, _ in diff --git a/submodules/TelegramUI/Sources/TextLinkHandling.swift b/submodules/TelegramUI/Sources/TextLinkHandling.swift index 14401f2ffa..35fb0c4b32 100644 --- a/submodules/TelegramUI/Sources/TextLinkHandling.swift +++ b/submodules/TelegramUI/Sources/TextLinkHandling.swift @@ -14,6 +14,7 @@ import InstantPageUI import HashtagSearchUI import StickerPackPreviewUI import JoinLinkPreviewUI +import PresentationDataUtils func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigateDisposable: MetaDisposable, controller: ViewController, action: TextLinkItemActionType, itemLink: TextLinkItem) { let presentImpl: (ViewController, Any?) -> Void = { controllerToPresent, _ in @@ -89,8 +90,26 @@ func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigate switch action { case .tap: switch itemLink { - case let .url(url): - openLinkImpl(url) + case .url(let url, var concealed): + let (parsedString, parsedConcealed) = parseUrl(url: url) + if parsedConcealed { + concealed = true + } + + if concealed { + var rawDisplayUrl: String = parsedString + let maxLength = 180 + if rawDisplayUrl.count > maxLength { + rawDisplayUrl = String(rawDisplayUrl[.. 1 let openText = canOpenIn ? presentationData.strings.Conversation_FileOpenIn : presentationData.strings.Conversation_LinkDialogOpen let actionSheet = ActionSheetController(presentationData: presentationData) + let (displayUrl, _) = parseUrl(url: url) actionSheet.setItemGroups([ActionSheetItemGroup(items: [ - ActionSheetTextItem(title: url), + ActionSheetTextItem(title: displayUrl), ActionSheetButtonItem(title: openText, color: .accent, action: { [weak actionSheet] in actionSheet?.dismissAnimated() openLinkImpl(url) diff --git a/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputContextPanelNode.swift b/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputContextPanelNode.swift index 095b199064..23cf9e3fc7 100644 --- a/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputContextPanelNode.swift @@ -335,6 +335,9 @@ final class VerticalListContextResultsChatInputContextPanelNode: ChatInputContex return (geoPoint.latitude, geoPoint.longitude) } self.loadMoreDisposable.set((requestChatContextResults(account: self.context.account, botId: currentProcessedResults.botId, peerId: currentProcessedResults.peerId, query: currentProcessedResults.query, location: .single(geoPoint), offset: nextOffset) + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> deliverOnMainQueue).start(next: { [weak self] nextResults in guard let strongSelf = self, let nextResults = nextResults else { return diff --git a/submodules/TelegramUpdateUI/Sources/UpdateInfoItem.swift b/submodules/TelegramUpdateUI/Sources/UpdateInfoItem.swift index 191872e8b7..e7110d649b 100644 --- a/submodules/TelegramUpdateUI/Sources/UpdateInfoItem.swift +++ b/submodules/TelegramUpdateUI/Sources/UpdateInfoItem.swift @@ -392,7 +392,7 @@ class UpdateInfoItemNode: ListViewItemNode { 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[NSAttributedString.Key(rawValue: TelegramTextAttributes.URL)] as? String { - return .url(url) + return .url(url: url, concealed: false) } else if let peerName = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.PeerTextMention)] as? String { return .mention(peerName) } else if let hashtag = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Hashtag)] as? TelegramHashtag { diff --git a/submodules/WatchBridge/Sources/WatchRequestHandlers.swift b/submodules/WatchBridge/Sources/WatchRequestHandlers.swift index 45dfb9ddf7..be82c9c4e2 100644 --- a/submodules/WatchBridge/Sources/WatchRequestHandlers.swift +++ b/submodules/WatchBridge/Sources/WatchRequestHandlers.swift @@ -756,6 +756,9 @@ final class WatchLocationHandler: WatchRequestHandler { return .single(nil) } return requestChatContextResults(account: context.account, botId: peerId, peerId: context.account.peerId, query: "", location: .single((args.coordinate.latitude, args.coordinate.longitude)), offset: "") + |> map { results -> ChatContextResultCollection? in + return results?.results + } |> `catch` { error -> Signal in return .single(nil) } diff --git a/submodules/WebSearchUI/Sources/WebSearchController.swift b/submodules/WebSearchUI/Sources/WebSearchController.swift index d5f037e7c6..142db4ef32 100644 --- a/submodules/WebSearchUI/Sources/WebSearchController.swift +++ b/submodules/WebSearchUI/Sources/WebSearchController.swift @@ -10,12 +10,14 @@ import LegacyComponents import TelegramUIPreferences import AccountContext -public func requestContextResults(account: Account, botId: PeerId, query: String, peerId: PeerId, offset: String = "", existingResults: ChatContextResultCollection? = nil, incompleteResults: Bool = false, limit: Int = 60) -> Signal { - return requestChatContextResults(account: account, botId: botId, peerId: peerId, query: query, offset: offset, incompleteResults: incompleteResults) - |> `catch` { error -> Signal in +public func requestContextResults(account: Account, botId: PeerId, query: String, peerId: PeerId, offset: String = "", existingResults: ChatContextResultCollection? = nil, incompleteResults: Bool = false, staleCachedResults: Bool = false, limit: Int = 60) -> Signal { + return requestChatContextResults(account: account, botId: botId, peerId: peerId, query: query, offset: offset, incompleteResults: incompleteResults, staleCachedResults: staleCachedResults) + |> `catch` { error -> Signal in return .single(nil) } - |> mapToSignal { results -> Signal in + |> mapToSignal { resultsStruct -> Signal in + let results = resultsStruct?.results + var collection = existingResults var updated: Bool = false if let existingResults = existingResults, let results = results { @@ -40,13 +42,15 @@ public func requestContextResults(account: Account, botId: PeerId, query: String if let collection = collection, collection.results.count < limit, let nextOffset = collection.nextOffset, updated { let nextResults = requestContextResults(account: account, botId: botId, query: query, peerId: peerId, offset: nextOffset, existingResults: collection, limit: limit) if collection.results.count > 10 { - return .single(collection) + return .single(RequestChatContextResultsResult(results: collection, isStale: resultsStruct?.isStale ?? false)) |> then(nextResults) } else { return nextResults } + } else if let collection = collection { + return .single(RequestChatContextResultsResult(results: collection, isStale: resultsStruct?.isStale ?? false)) } else { - return .single(collection) + return .single(nil) } } } @@ -424,7 +428,7 @@ public final class WebSearchController: ViewController { let results = requestContextResults(account: account, botId: user.id, query: query, peerId: peerId, limit: 64) |> map { results -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in return { _ in - return .contextRequestResult(user, results) + return .contextRequestResult(user, results?.results) } } diff --git a/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift b/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift index e68aa0ddf3..1f7ea755ef 100644 --- a/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift +++ b/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift @@ -559,13 +559,13 @@ class WebSearchControllerNode: ASDisplayNode { results.append(result) existingIds.insert(result.id) } - for result in nextResults.results { + for result in nextResults.results.results { if !existingIds.contains(result.id) { results.append(result) existingIds.insert(result.id) } } - let mergedResults = ChatContextResultCollection(botId: currentProcessedResults.botId, peerId: currentProcessedResults.peerId, query: currentProcessedResults.query, geoPoint: currentProcessedResults.geoPoint, queryId: nextResults.queryId, nextOffset: nextResults.nextOffset, presentation: currentProcessedResults.presentation, switchPeer: currentProcessedResults.switchPeer, results: results, cacheTimeout: currentProcessedResults.cacheTimeout) + let mergedResults = ChatContextResultCollection(botId: currentProcessedResults.botId, peerId: currentProcessedResults.peerId, query: currentProcessedResults.query, geoPoint: currentProcessedResults.geoPoint, queryId: nextResults.results.queryId, nextOffset: nextResults.results.nextOffset, presentation: currentProcessedResults.presentation, switchPeer: currentProcessedResults.switchPeer, results: results, cacheTimeout: currentProcessedResults.cacheTimeout) strongSelf.currentProcessedResults = mergedResults strongSelf.results.set(mergedResults) }))