Various settings UI improvements

This commit is contained in:
Ilya Laktyushin 2021-10-26 14:57:50 +04:00
parent 8fdc7a8e1e
commit 6b0fb9097b
61 changed files with 3066 additions and 267 deletions

View File

@ -6872,6 +6872,9 @@ Sorry for the inconvenience.";
"InviteLink.Create.RequestApprovalOnInfoGroup" = "New users will be able to join the group only after having been approved by the admins.";
"InviteLink.Create.RequestApprovalOnInfoChannel" = "New users will be able to join the channel only after having been approved by the admins.";
"InviteLink.Create.LinkName" = "Link Name (Optional)";
"InviteLink.Create.LinkNameInfo" = "You can provide an optional name for this link.";
"MemberRequests.Title" = "Member Requests";
"MemberRequests.DescriptionGroup" = "Some [additional links]() are set up to accept requests to join the group.";
"MemberRequests.DescriptionChannel" = "Some [additional links]() are set up to accept requests to join the channel.";
@ -6957,3 +6960,5 @@ Sorry for the inconvenience.";
"Time.HoursAgo_many" = "%@ hours ago";
"Time.HoursAgo_0" = "%@ hours ago";
"Time.AtDate" = "last seen %@";
"Stickers.ShowMore" = "Show More";

View File

@ -32,9 +32,10 @@ private final class InviteLinkEditControllerArguments {
}
private enum InviteLinksEditSection: Int32 {
case title
case requestApproval
case time
case usage
case requestApproval
case revoke
}
@ -55,6 +56,12 @@ func isValidNumberOfUsers(_ number: String) -> Bool {
}
private enum InviteLinksEditEntry: ItemListNodeEntry {
case title(PresentationTheme, String, String)
case titleInfo(PresentationTheme, String)
case requestApproval(PresentationTheme, String, Bool)
case requestApprovalInfo(PresentationTheme, String)
case timeHeader(PresentationTheme, String)
case timePicker(PresentationTheme, InviteLinkTimeLimit)
case timeExpiryDate(PresentationTheme, PresentationDateTimeFormat, Int32?, Bool)
@ -66,13 +73,12 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
case usageCustomPicker(PresentationTheme, Int32?, Bool, Bool)
case usageInfo(PresentationTheme, String)
case requestApproval(PresentationTheme, String, Bool)
case requestApprovalInfo(PresentationTheme, String)
case revoke(PresentationTheme, String)
var section: ItemListSectionId {
switch self {
case .title, .titleInfo:
return InviteLinksEditSection.title.rawValue
case .requestApproval, .requestApprovalInfo:
return InviteLinksEditSection.requestApproval.rawValue
case .timeHeader, .timePicker, .timeExpiryDate, .timeCustomPicker, .timeInfo:
@ -86,35 +92,63 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
var stableId: Int32 {
switch self {
case .requestApproval:
case .title:
return 0
case .requestApprovalInfo:
case .titleInfo:
return 1
case .timeHeader:
case .requestApproval:
return 2
case .timePicker:
case .requestApprovalInfo:
return 3
case .timeExpiryDate:
case .timeHeader:
return 4
case .timeCustomPicker:
case .timePicker:
return 5
case .timeInfo:
case .timeExpiryDate:
return 6
case .usageHeader:
case .timeCustomPicker:
return 7
case .usagePicker:
case .timeInfo:
return 8
case .usageCustomPicker:
case .usageHeader:
return 9
case .usageInfo:
case .usagePicker:
return 10
case .revoke:
case .usageCustomPicker:
return 11
case .usageInfo:
return 12
case .revoke:
return 13
}
}
static func ==(lhs: InviteLinksEditEntry, rhs: InviteLinksEditEntry) -> Bool {
switch lhs {
case let .title(lhsTheme, lhsPlaceholder, lhsValue):
if case let .title(rhsTheme, rhsPlaceholder, rhsValue) = rhs, lhsTheme === rhsTheme, lhsPlaceholder == rhsPlaceholder, lhsValue == rhsValue {
return true
} else {
return false
}
case let .titleInfo(lhsTheme, lhsText):
if case let .titleInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
} else {
return false
}
case let .requestApproval(lhsTheme, lhsText, lhsValue):
if case let .requestApproval(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue {
return true
} else {
return false
}
case let .requestApprovalInfo(lhsTheme, lhsText):
if case let .requestApprovalInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
} else {
return false
}
case let .timeHeader(lhsTheme, lhsText):
if case let .timeHeader(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
@ -169,18 +203,6 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
} else {
return false
}
case let .requestApproval(lhsTheme, lhsText, lhsValue):
if case let .requestApproval(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue {
return true
} else {
return false
}
case let .requestApprovalInfo(lhsTheme, lhsText):
if case let .requestApprovalInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
} else {
return false
}
case let .revoke(lhsTheme, lhsText):
if case let .revoke(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
@ -197,6 +219,26 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
func item(presentationData: ItemListPresentationData, arguments: Any) -> ListViewItem {
let arguments = arguments as! InviteLinkEditControllerArguments
switch self {
case let .title(_, placeholder, value):
return ItemListSingleLineInputItem(presentationData: presentationData, title: NSAttributedString(), text: value, placeholder: placeholder, sectionId: self.section, textUpdated: { value in
arguments.updateState { state in
var updatedState = state
updatedState.title = value
return updatedState
}
}, action: {})
case let .titleInfo(_, text):
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
case let .requestApproval(_, text, value):
return ItemListSwitchItem(presentationData: presentationData, title: text, value: value, sectionId: self.section, style: .blocks, updated: { value in
arguments.updateState { state in
var updatedState = state
updatedState.requestApproval = value
return updatedState
}
})
case let .requestApprovalInfo(_, text):
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
case let .timeHeader(_, text):
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
case let .timePicker(_, value):
@ -288,16 +330,6 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
})
case let .usageInfo(_, text):
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
case let .requestApproval(_, text, value):
return ItemListSwitchItem(presentationData: presentationData, title: text, value: value, sectionId: self.section, style: .blocks, updated: { value in
arguments.updateState { state in
var updatedState = state
updatedState.requestApproval = value
return updatedState
}
})
case let .requestApprovalInfo(_, text):
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
case let .revoke(_, text):
return ItemListActionItem(presentationData: presentationData, title: text, kind: .destructive, alignment: .center, sectionId: self.section, style: .blocks, action: {
arguments.revoke()
@ -309,6 +341,9 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
private func inviteLinkEditControllerEntries(invite: ExportedInvitation?, state: InviteLinkEditControllerState, isGroup: Bool, isPublic: Bool, presentationData: PresentationData) -> [InviteLinksEditEntry] {
var entries: [InviteLinksEditEntry] = []
entries.append(.title(presentationData.theme, presentationData.strings.InviteLink_Create_LinkName, state.title))
entries.append(.titleInfo(presentationData.theme, presentationData.strings.InviteLink_Create_LinkNameInfo))
entries.append(.requestApproval(presentationData.theme, presentationData.strings.InviteLink_Create_RequestApproval, state.requestApproval))
var requestApprovalInfoText = presentationData.strings.InviteLink_Create_RequestApprovalOffInfoChannel
if state.requestApproval {
@ -354,6 +389,7 @@ private func inviteLinkEditControllerEntries(invite: ExportedInvitation?, state:
}
private struct InviteLinkEditControllerState: Equatable {
var title: String
var usage: InviteLinkUsageLimit
var time: InviteLinkTimeLimit
var requestApproval = false
@ -385,9 +421,9 @@ public func inviteLinkEditController(context: AccountContext, updatedPresentatio
timeLimit = .unlimited
}
initialState = InviteLinkEditControllerState(usage: InviteLinkUsageLimit(value: usageLimit), time: timeLimit, requestApproval: invite.requestApproval, pickingTimeLimit: false, pickingUsageLimit: false)
initialState = InviteLinkEditControllerState(title: "", usage: InviteLinkUsageLimit(value: usageLimit), time: timeLimit, requestApproval: invite.requestApproval, pickingTimeLimit: false, pickingUsageLimit: false)
} else {
initialState = InviteLinkEditControllerState(usage: .unlimited, time: .unlimited, requestApproval: false, pickingTimeLimit: false, pickingUsageLimit: false)
initialState = InviteLinkEditControllerState(title: "", usage: .unlimited, time: .unlimited, requestApproval: false, pickingTimeLimit: false, pickingUsageLimit: false)
}
let statePromise = ValuePromise(initialState, ignoreRepeated: true)

View File

@ -219,13 +219,13 @@ public func inviteRequestsController(context: AccountContext, updatedPresentatio
let _ = (context.engine.data.get(
TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)
)
|> deliverOnMainQueue).start(next: { peer in
guard let peer = peer else {
|> deliverOnMainQueue).start(next: { chatPeer in
guard let chatPeer = chatPeer else {
return
}
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let addString: String
if case let .channel(channel) = peer, case .broadcast = channel.info {
if case let .channel(channel) = chatPeer, case .broadcast = channel.info {
addString = presentationData.strings.MemberRequests_AddToChannel
} else {
addString = presentationData.strings.MemberRequests_AddToGroup

View File

@ -201,8 +201,8 @@ private final class ItemListInviteLinkTimeLimitItemNode: ListViewItemNode {
let sliderView = TGPhotoEditorSliderView()
sliderView.enablePanHandling = true
sliderView.trackCornerRadius = 1.0
sliderView.lineSize = 2.0
sliderView.trackCornerRadius = 2.0
sliderView.lineSize = 4.0
sliderView.dotSize = 5.0
sliderView.minimumValue = 0.0
sliderView.startValue = 0.0

View File

@ -217,8 +217,8 @@ private final class ItemListInviteLinkUsageLimitItemNode: ListViewItemNode {
let sliderView = TGPhotoEditorSliderView()
sliderView.enablePanHandling = true
sliderView.trackCornerRadius = 1.0
sliderView.lineSize = 2.0
sliderView.trackCornerRadius = 2.0
sliderView.lineSize = 4.0
sliderView.dotSize = 5.0
sliderView.minimumValue = 0.0
sliderView.startValue = 0.0

View File

@ -65,6 +65,7 @@ class ChatSlowmodeItemNode: ListViewItemNode {
private let backgroundNode: ASDisplayNode
private let topStripeNode: ASDisplayNode
private let bottomStripeNode: ASDisplayNode
private let maskNode: ASImageNode
private let textNodes: [TextNode]
private var sliderView: TGPhotoEditorSliderView?
@ -77,6 +78,8 @@ class ChatSlowmodeItemNode: ListViewItemNode {
self.backgroundNode = ASDisplayNode()
self.backgroundNode.isLayerBacked = true
self.maskNode = ASImageNode()
self.topStripeNode = ASDisplayNode()
self.topStripeNode.isLayerBacked = true
@ -218,23 +221,36 @@ class ChatSlowmodeItemNode: ListViewItemNode {
if strongSelf.bottomStripeNode.supernode == nil {
strongSelf.insertSubnode(strongSelf.bottomStripeNode, at: 2)
}
if strongSelf.maskNode.supernode == nil {
strongSelf.insertSubnode(strongSelf.maskNode, at: 3)
}
let hasCorners = itemListHasRoundedBlockLayout(params)
var hasTopCorners = false
var hasBottomCorners = false
switch neighbors.top {
case .sameSection(false):
strongSelf.topStripeNode.isHidden = true
default:
strongSelf.topStripeNode.isHidden = false
case .sameSection(false):
strongSelf.topStripeNode.isHidden = true
default:
hasTopCorners = true
strongSelf.topStripeNode.isHidden = hasCorners
}
let bottomStripeInset: CGFloat
let bottomStripeOffset: CGFloat
switch neighbors.bottom {
case .sameSection(false):
bottomStripeInset = 0.0 //params.leftInset + 16.0
bottomStripeOffset = -separatorHeight
default:
bottomStripeInset = 0.0
bottomStripeOffset = 0.0
case .sameSection(false):
bottomStripeInset = 0.0
bottomStripeOffset = -separatorHeight
default:
bottomStripeInset = 0.0
hasBottomCorners = true
strongSelf.bottomStripeNode.isHidden = hasCorners
bottomStripeOffset = 0.0
}
strongSelf.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(item.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil
strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: contentSize.height + min(insets.top, separatorHeight) + min(insets.bottom, separatorHeight)))
strongSelf.maskNode.frame = strongSelf.backgroundNode.frame.insetBy(dx: params.leftInset, dy: 0.0)
strongSelf.topStripeNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: layoutSize.width, height: separatorHeight))
strongSelf.bottomStripeNode.frame = CGRect(origin: CGPoint(x: bottomStripeInset, y: contentSize.height + bottomStripeOffset), size: CGSize(width: layoutSize.width - bottomStripeInset, height: separatorHeight))

View File

@ -99,6 +99,24 @@ final class ItemListRecentSessionItem: ListViewItem, ItemListItem {
}
}
private func iconForSession(_ session: RecentAccountSession) -> UIImage? {
let platform = session.platform.lowercased()
let device = session.deviceModel.lowercased()
if device.contains("safari") {
return UIImage(bundleImageName: "Settings/Devices/Safari")
}
if device.contains("firefox") {
return UIImage(bundleImageName: "Settings/Devices/Firefox")
}
if device.contains("opera") {
return UIImage(bundleImageName: "Settings/Devices/Opera")
}
if platform.contains("ios") || platform.contains("macos") {
return UIImage(bundleImageName: "Settings/Devices/iOS")
}
return nil
}
class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode {
private let backgroundNode: ASDisplayNode
private let topStripeNode: ASDisplayNode
@ -222,6 +240,11 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode {
appString += item.session.systemVersion
}
var updatedIcon: UIImage?
if item.session != currentItem?.session {
updatedIcon = iconForSession(item.session)
}
appAttributedString = NSAttributedString(string: appString, font: textFont, textColor: item.presentationData.theme.list.itemPrimaryTextColor)
let label: String
@ -299,6 +322,10 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode {
strongSelf.activateArea.accessibilityTraits = .notEnabled
}
if let updatedIcon = updatedIcon {
strongSelf.iconNode.image = updatedIcon
}
if let _ = updatedTheme {
strongSelf.topStripeNode.backgroundColor = item.presentationData.theme.list.itemBlocksSeparatorColor
strongSelf.bottomStripeNode.backgroundColor = item.presentationData.theme.list.itemBlocksSeparatorColor
@ -440,7 +467,7 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode {
return
}
let leftInset: CGFloat = 15.0 + params.leftInset
let leftInset: CGFloat = 59.0 + params.leftInset
let editingOffset: CGFloat
if let editableControlNode = self.editableControlNode {

View File

@ -407,7 +407,7 @@ class ItemListWebsiteItemNode: ItemListRevealOptionsItemNode {
return
}
let leftInset: CGFloat = 15.0 + params.leftInset
let leftInset: CGFloat = 59.0 + params.leftInset
let editingOffset: CGFloat
if let editableControlNode = self.editableControlNode {

View File

@ -12,6 +12,7 @@ import TextFormat
import AccountContext
import StickerPackPreviewUI
import ItemListStickerPackItem
import ItemListPeerActionItem
import UndoUI
import ShareController
@ -28,8 +29,10 @@ private final class InstalledStickerPacksControllerArguments {
let openSuggestOptions: () -> Void
let toggleAnimatedStickers: (Bool) -> Void
let togglePackSelected: (ItemCollectionId) -> Void
let expandTrendingPacks: () -> Void
let addPack: (StickerPackCollectionInfo) -> Void
init(account: Account, openStickerPack: @escaping (StickerPackCollectionInfo) -> Void, setPackIdWithRevealedOptions: @escaping (ItemCollectionId?, ItemCollectionId?) -> Void, removePack: @escaping (ArchivedStickerPackItem) -> Void, openStickersBot: @escaping () -> Void, openMasks: @escaping () -> Void, openFeatured: @escaping () -> Void, openArchived: @escaping ([ArchivedStickerPackItem]?) -> Void, openSuggestOptions: @escaping () -> Void, toggleAnimatedStickers: @escaping (Bool) -> Void, togglePackSelected: @escaping (ItemCollectionId) -> Void) {
init(account: Account, openStickerPack: @escaping (StickerPackCollectionInfo) -> Void, setPackIdWithRevealedOptions: @escaping (ItemCollectionId?, ItemCollectionId?) -> Void, removePack: @escaping (ArchivedStickerPackItem) -> Void, openStickersBot: @escaping () -> Void, openMasks: @escaping () -> Void, openFeatured: @escaping () -> Void, openArchived: @escaping ([ArchivedStickerPackItem]?) -> Void, openSuggestOptions: @escaping () -> Void, toggleAnimatedStickers: @escaping (Bool) -> Void, togglePackSelected: @escaping (ItemCollectionId) -> Void, expandTrendingPacks: @escaping () -> Void, addPack: @escaping (StickerPackCollectionInfo) -> Void) {
self.account = account
self.openStickerPack = openStickerPack
self.setPackIdWithRevealedOptions = setPackIdWithRevealedOptions
@ -41,11 +44,14 @@ private final class InstalledStickerPacksControllerArguments {
self.openSuggestOptions = openSuggestOptions
self.toggleAnimatedStickers = toggleAnimatedStickers
self.togglePackSelected = togglePackSelected
self.expandTrendingPacks = expandTrendingPacks
self.addPack = addPack
}
}
private enum InstalledStickerPacksSection: Int32 {
case service
case trending
case stickers
}
@ -64,6 +70,7 @@ public enum InstalledStickerPacksEntryTag: ItemListItemTag {
private enum InstalledStickerPacksEntryId: Hashable {
case index(Int32)
case trendingPack(ItemCollectionId)
case pack(ItemCollectionId)
}
@ -74,6 +81,9 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
case masks(PresentationTheme, String)
case animatedStickers(PresentationTheme, String, Bool)
case animatedStickersInfo(PresentationTheme, String)
case trendingPacksTitle(PresentationTheme, String)
case trendingPack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, Bool, Bool)
case trendingExpand(PresentationTheme, String)
case packsTitle(PresentationTheme, String)
case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, Bool, ItemListStickerPackItemEditing, Bool?)
case packsInfo(PresentationTheme, String)
@ -82,6 +92,8 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
switch self {
case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo:
return InstalledStickerPacksSection.service.rawValue
case .trendingPacksTitle, .trendingPack, .trendingExpand:
return InstalledStickerPacksSection.trending.rawValue
case .packsTitle, .pack, .packsInfo:
return InstalledStickerPacksSection.stickers.rawValue
}
@ -101,12 +113,18 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
return .index(4)
case .animatedStickersInfo:
return .index(5)
case .packsTitle:
case .trendingPacksTitle:
return .index(6)
case let .trendingPack(_, _, _, info, _, _, _, _, _):
return .trendingPack(info.id)
case .trendingExpand:
return .index(7)
case .packsTitle:
return .index(8)
case let .pack(_, _, _, info, _, _, _, _, _, _):
return .pack(info.id)
case .packsInfo:
return .index(7)
return .index(9)
}
}
@ -148,12 +166,57 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
} else {
return false
}
case let .trendingPacksTitle(lhsTheme, lhsText):
if case let .trendingPacksTitle(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
} else {
return false
}
case let .packsTitle(lhsTheme, lhsText):
if case let .packsTitle(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
} else {
return false
}
case let .trendingPack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsAnimatedStickers, lhsUnread, lhsInstalled):
if case let .trendingPack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsAnimatedStickers, rhsUnread, rhsInstalled) = rhs {
if lhsIndex != rhsIndex {
return false
}
if lhsTheme !== rhsTheme {
return false
}
if lhsStrings !== rhsStrings {
return false
}
if lhsInfo != rhsInfo {
return false
}
if lhsTopItem != rhsTopItem {
return false
}
if lhsCount != rhsCount {
return false
}
if lhsAnimatedStickers != rhsAnimatedStickers {
return false
}
if lhsUnread != rhsUnread {
return false
}
if lhsInstalled != rhsInstalled {
return false
}
return true
} else {
return false
}
case let .trendingExpand(lhsTheme, lhsText):
if case let .trendingExpand(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
return true
} else {
return false
}
case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsAnimatedStickers, lhsEnabled, lhsEditing, lhsSelected):
if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsAnimatedStickers, rhsEnabled, rhsEditing, rhsSelected) = rhs {
if lhsIndex != rhsIndex {
@ -243,9 +306,32 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
default:
return true
}
case .trendingPacksTitle:
switch rhs {
case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo, .trendingPacksTitle:
return false
default:
return true
}
case let .trendingPack(lhsIndex, _, _, _, _, _, _, _, _):
switch rhs {
case let .trendingPack(rhsIndex, _, _, _, _, _, _, _, _):
return lhsIndex < rhsIndex
case .trendingExpand, .packsTitle, .pack, .packsInfo:
return true
default:
return false
}
case .trendingExpand:
switch rhs {
case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo, .trendingPacksTitle, .trendingPack, .trendingExpand:
return false
default:
return true
}
case .packsTitle:
switch rhs {
case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo, .packsTitle:
case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo, .trendingPacksTitle, .trendingPack, .trendingExpand, .packsTitle:
return false
default:
return true
@ -294,6 +380,21 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
})
case let .animatedStickersInfo(_, text):
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
case let .trendingPacksTitle(_, text):
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
case let .trendingPack(_, _, _, info, topItem, count, animatedStickers, unread, installed):
return ItemListStickerPackItem(presentationData: presentationData, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: unread, control: .installation(installed: installed), editing: ItemListStickerPackItemEditing(editable: false, editing: false, revealed: false, reorderable: false, selectable: false), enabled: true, playAnimatedStickers: animatedStickers, sectionId: self.section, action: {
arguments.openStickerPack(info)
}, setPackIdWithRevealedOptions: { _, _ in
}, addPack: {
arguments.addPack(info)
}, removePack: {
}, toggleSelected: {
})
case let .trendingExpand(theme, text):
return ItemListPeerActionItem(presentationData: presentationData, icon: PresentationResourcesItemList.downArrowImage(theme), title: text, sectionId: self.section, editing: false, action: {
arguments.expandTrendingPacks()
})
case let .packsTitle(_, text):
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
case let .pack(_, _, _, info, topItem, count, animatedStickers, enabled, editing, selected):
@ -319,17 +420,20 @@ private struct InstalledStickerPacksControllerState: Equatable {
let editing: Bool
let selectedPackIds: Set<ItemCollectionId>?
let packIdWithRevealedOptions: ItemCollectionId?
let trendingPacksExpanded: Bool
init() {
self.editing = false
self.selectedPackIds = nil
self.packIdWithRevealedOptions = nil
self.trendingPacksExpanded = false
}
init(editing: Bool, selectedPackIds: Set<ItemCollectionId>?, packIdWithRevealedOptions: ItemCollectionId?) {
init(editing: Bool, selectedPackIds: Set<ItemCollectionId>?, packIdWithRevealedOptions: ItemCollectionId?, trendingPacksExpanded: Bool) {
self.editing = editing
self.selectedPackIds = selectedPackIds
self.packIdWithRevealedOptions = packIdWithRevealedOptions
self.trendingPacksExpanded = trendingPacksExpanded
}
static func ==(lhs: InstalledStickerPacksControllerState, rhs: InstalledStickerPacksControllerState) -> Bool {
@ -342,20 +446,26 @@ private struct InstalledStickerPacksControllerState: Equatable {
if lhs.packIdWithRevealedOptions != rhs.packIdWithRevealedOptions {
return false
}
if lhs.trendingPacksExpanded != rhs.trendingPacksExpanded {
return false
}
return true
}
func withUpdatedEditing(_ editing: Bool) -> InstalledStickerPacksControllerState {
return InstalledStickerPacksControllerState(editing: editing, selectedPackIds: self.selectedPackIds, packIdWithRevealedOptions: self.packIdWithRevealedOptions)
return InstalledStickerPacksControllerState(editing: editing, selectedPackIds: self.selectedPackIds, packIdWithRevealedOptions: self.packIdWithRevealedOptions, trendingPacksExpanded: self.trendingPacksExpanded)
}
func withUpdatedSelectedPackIds(_ selectedPackIds: Set<ItemCollectionId>?) -> InstalledStickerPacksControllerState {
return InstalledStickerPacksControllerState(editing: editing, selectedPackIds: selectedPackIds, packIdWithRevealedOptions: self.packIdWithRevealedOptions)
return InstalledStickerPacksControllerState(editing: editing, selectedPackIds: selectedPackIds, packIdWithRevealedOptions: self.packIdWithRevealedOptions, trendingPacksExpanded: self.trendingPacksExpanded)
}
func withUpdatedPackIdWithRevealedOptions(_ packIdWithRevealedOptions: ItemCollectionId?) -> InstalledStickerPacksControllerState {
return InstalledStickerPacksControllerState(editing: self.editing, selectedPackIds: self.selectedPackIds, packIdWithRevealedOptions: packIdWithRevealedOptions)
return InstalledStickerPacksControllerState(editing: self.editing, selectedPackIds: self.selectedPackIds, packIdWithRevealedOptions: packIdWithRevealedOptions, trendingPacksExpanded: self.trendingPacksExpanded)
}
func withUpdatedTrendingPacksExpanded(_ trendingPacksExpanded: Bool) -> InstalledStickerPacksControllerState {
return InstalledStickerPacksControllerState(editing: self.editing, selectedPackIds: self.selectedPackIds, packIdWithRevealedOptions: self.packIdWithRevealedOptions, trendingPacksExpanded: trendingPacksExpanded)
}
}
@ -368,9 +478,24 @@ private func namespaceForMode(_ mode: InstalledStickerPacksControllerMode) -> It
}
}
private let maxTrendingPacksDisplayedLimit: Int32 = 3
private func installedStickerPacksControllerEntries(presentationData: PresentationData, state: InstalledStickerPacksControllerState, mode: InstalledStickerPacksControllerMode, view: CombinedView, temporaryPackOrder: [ItemCollectionId]?, featured: [FeaturedStickerPackItem], archived: [ArchivedStickerPackItem]?, stickerSettings: StickerSettings) -> [InstalledStickerPacksEntry] {
var entries: [InstalledStickerPacksEntry] = []
var installedPacks = Set<ItemCollectionId>()
if let stickerPacksView = view.views[.itemCollectionInfos(namespaces: [namespaceForMode(mode)])] as? ItemCollectionInfosView {
if let packsEntries = stickerPacksView.entriesByNamespace[namespaceForMode(mode)] {
var sortedPacks: [ItemCollectionInfoEntry] = []
for entry in packsEntries {
if let _ = entry.info as? StickerPackCollectionInfo {
installedPacks.insert(entry.id)
sortedPacks.append(entry)
}
}
}
}
switch mode {
case .general, .modal:
let suggestString: String
@ -384,15 +509,6 @@ private func installedStickerPacksControllerEntries(presentationData: Presentati
}
entries.append(.suggestOptions(presentationData.theme, presentationData.strings.Stickers_SuggestStickers, suggestString))
if featured.count != 0 {
var unreadCount: Int32 = 0
for item in featured {
if item.unread {
unreadCount += 1
}
}
entries.append(.trending(presentationData.theme, presentationData.strings.StickerPacksSettings_FeaturedPacks, unreadCount))
}
if let archived = archived, !archived.isEmpty {
entries.append(.archived(presentationData.theme, presentationData.strings.StickerPacksSettings_ArchivedPacks, Int32(archived.count), archived))
}
@ -401,6 +517,28 @@ private func installedStickerPacksControllerEntries(presentationData: Presentati
entries.append(.animatedStickers(presentationData.theme, presentationData.strings.StickerPacksSettings_AnimatedStickers, stickerSettings.loopAnimatedStickers))
entries.append(.animatedStickersInfo(presentationData.theme, presentationData.strings.StickerPacksSettings_AnimatedStickersInfo))
if featured.count > 0 {
entries.append(.trendingPacksTitle(presentationData.theme, presentationData.strings.StickerPacksSettings_FeaturedPacks.uppercased()))
var index: Int32 = 0
var featuredPacks = featured
var effectiveExpanded = state.trendingPacksExpanded
if featuredPacks.count > maxTrendingPacksDisplayedLimit && !effectiveExpanded {
featuredPacks = Array(featuredPacks.prefix(Int(maxTrendingPacksDisplayedLimit)))
} else {
effectiveExpanded = true
}
for featuredPack in featuredPacks {
entries.append(.trendingPack(index, presentationData.theme, presentationData.strings, featuredPack.info, featuredPack.topItems.first, presentationData.strings.StickerPack_StickerCount(featuredPack.info.count), stickerSettings.loopAnimatedStickers, featuredPack.unread, installedPacks.contains(featuredPack.info.id)))
index += 1
}
if !effectiveExpanded {
entries.append(.trendingExpand(presentationData.theme, presentationData.strings.Stickers_ShowMore))
}
}
entries.append(.packsTitle(presentationData.theme, presentationData.strings.StickerPacksSettings_StickerPacksSection))
case .masks:
if let archived = archived, !archived.isEmpty {
@ -618,6 +756,27 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta
return state
}
}
}, expandTrendingPacks: {
updateState { state in
return state.withUpdatedTrendingPacksExpanded(true)
}
}, addPack: { info in
let _ = (context.engine.stickers.loadedStickerPack(reference: .id(id: info.id.id, accessHash: info.accessHash), forceActualized: false)
|> mapToSignal { result -> Signal<Void, NoError> in
switch result {
case let .result(info, items, installed):
if installed {
return .complete()
} else {
return context.engine.stickers.addStickerPackInteractively(info: info, items: items)
}
case .fetching:
break
case .none:
break
}
return .complete()
} |> deliverOnMainQueue).start()
})
let stickerPacks = Promise<CombinedView>()
stickerPacks.set(context.account.postbox.combinedView(keys: [.itemCollectionInfos(namespaces: [namespaceForMode(mode)])]))

View File

@ -1126,92 +1126,73 @@ public func themePickerController(context: AccountContext, focusOnItemTag: Theme
pushControllerImpl?(controller)
}
selectAccentColorImpl = { currentBaseTheme, accentColor in
let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in
return current
// var currentTheme = current.theme
// let currentPreferredBaseTheme = currentBaseTheme
// if case let .cloud(theme) = currentTheme, let _ = theme.theme.settings, currentBaseTheme != nil {
//
// }
//
// return PresentationThemeSettings(theme: updatedTheme, themePreferredBaseTheme: themePreferredBaseTheme, themeSpecificAccentColors: themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, useSystemFont: current.useSystemFont, fontSize: current.fontSize, listsFontSize: current.listsFontSize, chatBubbleSettings: current.chatBubbleSettings, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, reduceMotion: current.reduceMotion)
}).start()
var wallpaperSignal: Signal<TelegramWallpaper?, NoError> = .single(nil)
if let colorWallpaper = accentColor?.wallpaper, case let .file(file) = colorWallpaper {
wallpaperSignal = cachedWallpaper(account: context.account, slug: file.slug, settings: colorWallpaper.settings)
|> mapToSignal { cachedWallpaper in
if let wallpaper = cachedWallpaper?.wallpaper, case let .file(file) = wallpaper {
let _ = fetchedMediaResource(mediaBox: context.account.postbox.mediaBox, reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource)).start()
return .single(wallpaper)
} else {
return .single(nil)
}
}
}
presentCrossfadeControllerImpl?(true)
let _ = (wallpaperSignal
|> deliverOnMainQueue).start(next: { presetWallpaper in
let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in
let autoNightModeTriggered = context.sharedContext.currentPresentationData.with { $0 }.autoNightModeTriggered
var currentTheme = current.theme
if autoNightModeTriggered {
currentTheme = current.automaticThemeSwitchSetting.theme
}
let generalThemeReference: PresentationThemeReference
if case let .cloud(theme) = currentTheme, let settings = theme.theme.settings?.first {
generalThemeReference = .builtin(PresentationBuiltinThemeReference(baseTheme: settings.baseTheme))
} else {
generalThemeReference = currentTheme
}
currentTheme = generalThemeReference
var updatedTheme = current.theme
var updatedAutomaticThemeSwitchSetting = current.automaticThemeSwitchSetting
if autoNightModeTriggered {
updatedAutomaticThemeSwitchSetting.theme = generalThemeReference
} else {
updatedTheme = generalThemeReference
}
guard let _ = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: generalThemeReference, accentColor: accentColor?.color, wallpaper: presetWallpaper, baseColor: accentColor?.baseColor) else {
return current
}
let themePreferredBaseTheme = current.themePreferredBaseTheme
var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers
var themeSpecificAccentColors = current.themeSpecificAccentColors
themeSpecificAccentColors[generalThemeReference.index] = accentColor?.withUpdatedWallpaper(presetWallpaper)
if case .builtin = generalThemeReference {
let index = coloredThemeIndex(reference: currentTheme, accentColor: accentColor)
if let wallpaper = current.themeSpecificChatWallpapers[index] {
if wallpaper.isColorOrGradient || wallpaper.isPattern || wallpaper.isBuiltin {
themeSpecificChatWallpapers[index] = presetWallpaper
}
} else {
themeSpecificChatWallpapers[index] = presetWallpaper
}
}
return PresentationThemeSettings(theme: updatedTheme, themePreferredBaseTheme: themePreferredBaseTheme, themeSpecificAccentColors: themeSpecificAccentColors, themeSpecificChatWallpapers: themeSpecificChatWallpapers, useSystemFont: current.useSystemFont, fontSize: current.fontSize, listsFontSize: current.listsFontSize, chatBubbleSettings: current.chatBubbleSettings, automaticThemeSwitchSetting: updatedAutomaticThemeSwitchSetting, largeEmoji: current.largeEmoji, reduceMotion: current.reduceMotion)
}).start()
presentCrossfadeControllerImpl?(true)
})
}
// var wallpaperSignal: Signal<TelegramWallpaper?, NoError> = .single(nil)
// if let colorWallpaper = accentColor?.wallpaper, case let .file(file) = colorWallpaper {
// wallpaperSignal = cachedWallpaper(account: context.account, slug: file.slug, settings: colorWallpaper.settings)
// |> mapToSignal { cachedWallpaper in
// if let wallpaper = cachedWallpaper?.wallpaper, case let .file(file) = wallpaper {
// let _ = fetchedMediaResource(mediaBox: context.account.postbox.mediaBox, reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource)).start()
//
// return .single(wallpaper)
//
// } else {
// return .single(nil)
// }
// }
// }
//
// let _ = (wallpaperSignal
// |> deliverOnMainQueue).start(next: { presetWallpaper in
// let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in
// let autoNightModeTriggered = context.sharedContext.currentPresentationData.with { $0 }.autoNightModeTriggered
// var currentTheme = current.theme
// let currentPreferredBaseTheme = currentBaseTheme
//
// if autoNightModeTriggered {
// currentTheme = current.automaticThemeSwitchSetting.theme
// }
//
// let generalThemeReference: PresentationThemeReference
// if case let .cloud(theme) = currentTheme, let settings = theme.theme.settings, currentBaseTheme != nil && {
// generalThemeReference = .builtin(PresentationBuiltinThemeReference(baseTheme: settings.baseTheme))
// } else {
// generalThemeReference = currentTheme
// }
//
// currentTheme = generalThemeReference
// var updatedTheme = current.theme
// var updatedAutomaticThemeSwitchSetting = current.automaticThemeSwitchSetting
//
// if autoNightModeTriggered {
// updatedAutomaticThemeSwitchSetting.theme = generalThemeReference
// } else {
// updatedTheme = generalThemeReference
// }
//
// guard let _ = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: generalThemeReference, accentColor: accentColor?.color, wallpaper: presetWallpaper, baseColor: accentColor?.baseColor) else {
// return current
// }
//
// var themePreferredBaseTheme = current.themePreferredBaseTheme
// if up
//
// var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers
// var themeSpecificAccentColors = current.themeSpecificAccentColors
// themeSpecificAccentColors[generalThemeReference.index] = accentColor?.withUpdatedWallpaper(presetWallpaper)
//
// if case .builtin = generalThemeReference {
// let index = coloredThemeIndex(reference: currentTheme, accentColor: accentColor)
// if let wallpaper = current.themeSpecificChatWallpapers[index] {
// if wallpaper.isColorOrGradient || wallpaper.isPattern || wallpaper.isBuiltin {
// themeSpecificChatWallpapers[index] = presetWallpaper
// }
// } else {
// themeSpecificChatWallpapers[index] = presetWallpaper
// }
// }
//
// return PresentationThemeSettings(theme: updatedTheme, themePreferredBaseTheme: themePreferredBaseTheme, themeSpecificAccentColors: themeSpecificAccentColors, themeSpecificChatWallpapers: themeSpecificChatWallpapers, useSystemFont: current.useSystemFont, fontSize: current.fontSize, listsFontSize: current.listsFontSize, chatBubbleSettings: current.chatBubbleSettings, automaticThemeSwitchSetting: updatedAutomaticThemeSwitchSetting, largeEmoji: current.largeEmoji, reduceMotion: current.reduceMotion)
// }).start()
//
// presentCrossfadeControllerImpl?(true)
// })
// }
return controller
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "brave_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,222 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
1.000000 0.584314 0.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 8.602356 cm
1.000000 1.000000 1.000000 scn
20.000000 9.665556 m
20.000000 9.665556 20.000000 9.613642 19.959682 9.478666 c
19.923941 9.331396 19.845953 9.191380 19.792299 9.095052 c
19.755169 9.028389 19.729692 8.982650 19.737938 8.969910 c
19.692581 8.917996 19.634624 8.850509 19.576670 8.783020 c
19.518715 8.715532 19.460758 8.648045 19.415401 8.596130 c
16.079155 4.941400 l
15.988441 4.837572 15.958203 4.650682 16.008600 4.526089 c
16.704071 2.833698 l
16.754469 2.709105 16.764547 2.491068 16.714149 2.366474 c
16.522644 1.836954 l
16.371454 1.390495 16.099314 0.995951 15.736459 0.694850 c
15.061147 0.123798 l
14.960354 0.040736 14.778926 0.009588 14.657975 0.071884 c
12.511085 1.120544 l
12.390133 1.172458 12.208706 1.297051 12.107913 1.390496 c
10.575861 2.812934 l
10.354116 3.020589 10.333958 3.383985 10.545623 3.602022 c
13.760917 5.844699 l
13.871789 5.927761 13.912107 6.083503 13.851631 6.208096 c
12.430450 8.949144 l
12.359895 9.063355 12.359896 9.271009 12.410292 9.395603 c
12.581639 9.800531 l
12.632036 9.935507 12.783225 10.070482 12.904177 10.122396 c
17.046766 11.742107 l
17.177797 11.794022 17.167717 11.845935 17.036688 11.856318 c
14.365674 12.115887 l
14.234644 12.126269 14.022979 12.115887 13.891948 12.074356 c
11.513235 11.389093 l
11.382205 11.357945 11.301569 11.212587 11.321728 11.077611 c
12.138151 6.415751 l
12.168389 6.280775 12.158309 6.083502 12.128072 5.990057 c
12.097834 5.896612 11.966804 5.792785 11.835773 5.761637 c
10.293640 5.398240 l
10.162609 5.367092 9.950945 5.367092 9.819914 5.398240 c
8.166909 5.761637 l
8.035878 5.792785 7.904848 5.886230 7.874610 5.990057 c
7.844372 6.093884 7.844372 6.280775 7.864531 6.415751 c
8.691032 11.077611 l
8.711191 11.212587 8.630556 11.347563 8.499526 11.389093 c
6.120812 12.074356 l
5.989781 12.105504 5.778116 12.126269 5.647086 12.115887 c
2.976073 11.856318 l
2.845042 11.845935 2.845042 11.794022 2.965993 11.742107 c
7.108583 10.143162 l
7.229535 10.091249 7.380724 9.945890 7.431121 9.821297 c
7.602469 9.416369 l
7.652865 9.291777 7.642786 9.094503 7.582310 8.969910 c
6.171208 6.228861 l
6.110733 6.104268 6.151050 5.938144 6.261922 5.865464 c
9.477218 3.633171 l
9.678803 3.404750 9.668724 3.051737 9.446980 2.844082 c
7.914927 1.421643 l
7.814134 1.328198 7.632707 1.203606 7.511755 1.141309 c
5.374944 0.092651 l
5.253993 0.030354 5.072566 0.061503 4.971773 0.144566 c
4.296460 0.705234 l
3.933605 1.006333 3.661464 1.400879 3.500196 1.847337 c
3.308689 2.376858 l
3.258293 2.511834 3.268372 2.719489 3.318769 2.844082 c
4.014240 4.536470 l
4.064636 4.661064 4.034399 4.847954 3.943685 4.951781 c
0.607439 8.606513 l
0.516725 8.699958 0.365536 8.876465 0.284901 8.980293 c
0.284901 8.980293 0.113553 9.208714 0.042998 9.457901 c
0.002681 9.603259 0.002681 9.644790 0.002681 9.644790 c
-0.007398 9.779766 0.012760 10.008186 0.032919 10.143162 c
0.133712 10.444263 l
0.194187 10.568855 0.305060 10.766129 0.375615 10.880339 c
1.514575 12.614259 l
1.522274 12.625163 1.530432 12.636730 1.538962 12.648824 c
1.619771 12.763399 1.733939 12.925272 1.806874 13.019186 c
3.278452 14.919232 l
3.359086 15.023060 3.439720 15.106121 3.449799 15.106121 c
3.469958 15.106121 l
3.469958 15.106121 3.580830 15.095738 3.711861 15.064590 c
5.979702 14.628514 l
6.045217 14.618132 6.130890 14.599962 6.216564 14.581792 c
6.302239 14.563622 6.387914 14.545452 6.453430 14.535069 c
6.493747 14.524687 l
6.624778 14.503922 6.836442 14.514304 6.967474 14.555836 c
8.852301 15.178801 l
8.973252 15.220332 9.184918 15.282628 9.315949 15.313777 c
9.315949 15.313777 9.698961 15.396839 10.011419 15.396839 c
10.323877 15.407222 10.706892 15.313777 10.706892 15.313777 c
10.827844 15.282628 11.039508 15.220332 11.170539 15.178801 c
13.055367 14.555836 l
13.186397 14.514304 13.398064 14.503922 13.529094 14.524687 c
13.569410 14.535069 l
13.700441 14.555835 13.912107 14.597366 14.043138 14.628514 c
16.290819 15.085356 l
16.421850 15.106121 16.532722 15.126887 16.532722 15.126887 c
16.552883 15.126887 l
16.562962 15.137270 16.643595 15.043825 16.724230 14.939997 c
18.195807 13.039952 l
18.286520 12.925742 18.417551 12.749235 18.488106 12.635025 c
19.627068 10.901104 l
19.707701 10.786894 19.808493 10.589621 19.868969 10.465028 c
19.969763 10.163927 l
19.989922 10.028952 20.000000 9.800531 20.000000 9.665556 c
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 18.445190 cm
1.000000 1.000000 1.000000 scn
10.211664 -8.913772 m
10.251982 -8.913772 10.383012 -8.955302 10.503963 -9.007215 c
11.814272 -9.567886 l
11.935224 -9.619800 12.136808 -9.713244 12.257760 -9.775541 c
14.233302 -10.813818 l
14.354254 -10.876114 14.364332 -10.990326 14.253460 -11.073387 c
12.509742 -12.350468 l
12.398870 -12.433529 12.227523 -12.568504 12.126730 -12.661949 c
11.350623 -13.357595 l
11.300226 -13.404318 11.234712 -13.464020 11.169197 -13.523720 c
11.103682 -13.583420 11.038166 -13.643120 10.987770 -13.689842 c
10.221743 -14.375105 l
10.120950 -14.468550 9.959682 -14.468550 9.858889 -14.375105 c
9.113021 -13.689842 l
9.062617 -13.643114 8.997091 -13.583403 8.931567 -13.523695 c
8.866061 -13.464003 8.800556 -13.404312 8.750166 -13.357595 c
7.974061 -12.672331 l
7.873268 -12.578886 7.701920 -12.443911 7.591048 -12.360849 c
5.847331 -11.094152 l
5.736458 -11.011091 5.746537 -10.896879 5.867489 -10.834583 c
7.843030 -9.775541 l
7.963982 -9.713244 8.165567 -9.619800 8.286519 -9.567886 c
9.596828 -9.007215 l
9.717779 -8.955302 9.848809 -8.913772 9.889127 -8.913772 c
10.211664 -8.913772 l
h
f
n
Q
endstream
endobj
3 0 obj
6482
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000006572 00000 n
0000006595 00000 n
0000006768 00000 n
0000006842 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
6901
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "chrome_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,124 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.203922 0.780392 0.349020 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.007263 cm
1.000000 1.000000 1.000000 scn
10.385256 0.000021 m
15.729561 0.202463 20.000000 4.598893 20.000000 9.992737 c
20.000000 11.288390 19.753593 12.526491 19.305084 13.662736 c
13.865254 13.662736 l
14.773007 12.706999 15.330009 11.414915 15.330009 9.992736 c
15.330009 8.988510 15.052287 8.049150 14.569457 7.247272 c
10.385256 0.000021 l
h
8.526487 0.100538 m
3.702282 0.812984 0.000000 4.970504 0.000000 9.992737 c
0.000000 11.677361 0.416564 13.264692 1.152306 14.657343 c
5.333802 7.414780 l
6.242358 5.773760 7.991437 4.662736 10.000010 4.662736 c
10.428658 4.662736 10.845490 4.713336 11.244855 4.808889 c
8.526487 0.100538 l
h
2.170357 16.214027 m
4.888107 11.506746 l
5.540517 13.712953 7.582271 15.322736 10.000010 15.322736 c
18.462690 15.322736 l
16.691639 18.128817 13.563491 19.992737 10.000000 19.992737 c
6.828819 19.992737 4.002402 18.516630 2.170357 16.214027 c
h
6.821685 8.157690 m
6.821184 8.157401 l
7.455792 7.060620 8.641729 6.322736 10.000010 6.322736 c
11.335388 6.322736 12.504187 7.035948 13.146267 8.102232 c
13.178304 8.157721 l
13.178841 8.157411 l
13.491220 8.697292 13.670010 9.324135 13.670010 9.992736 c
13.670010 12.019621 12.026895 13.662736 10.000010 13.662736 c
7.973125 13.662736 6.330009 12.019621 6.330009 9.992736 c
6.330009 9.348661 6.495923 8.743338 6.787343 8.217174 c
6.821685 8.157690 l
h
f*
n
Q
endstream
endobj
3 0 obj
2344
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002434 00000 n
0000002457 00000 n
0000002630 00000 n
0000002704 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2763
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "edge_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,136 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.000000 0.478431 1.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 4.736938 cm
1.000000 1.000000 1.000000 scn
11.900037 8.634101 m
11.885621 8.615415 11.864395 8.595106 11.840209 8.571966 c
11.758227 8.493532 11.642241 8.382564 11.642241 8.191941 c
11.642241 7.988048 11.775045 7.791966 12.010968 7.627133 c
13.115903 6.858749 15.182940 6.945906 15.255679 6.948972 c
15.256892 6.949023 15.257550 6.949051 15.257640 6.949051 c
16.090031 6.951048 16.906643 7.176311 17.622335 7.601353 c
18.344326 8.022921 18.943544 8.625936 19.360540 9.350575 c
19.777538 10.075214 19.997820 10.896292 19.999533 11.732345 c
20.018791 13.392278 19.439672 14.524769 19.157171 15.077211 c
19.154255 15.082913 19.151373 15.088553 19.148520 15.094131 c
19.136271 15.118097 19.124619 15.140921 19.113647 15.162600 c
17.458282 18.400679 13.885070 20.263062 9.999374 20.263062 c
7.371560 20.263321 4.849260 19.229143 2.978004 17.384201 c
1.110140 15.542604 0.040836 13.040949 0.000211 10.418595 c
0.003647 10.627830 0.022124 10.834094 0.054752 11.036695 c
0.024285 10.820783 0.008593 10.605573 0.008593 10.392585 c
-0.004934 8.882174 0.318240 7.387724 0.954628 6.017858 c
1.994662 3.798796 3.813399 2.038939 6.065473 1.072468 c
8.317547 0.105997 10.846126 0.000217 13.171052 0.775215 c
12.943295 0.703405 12.711941 0.645655 12.478284 0.602083 c
12.731620 0.656212 12.968803 0.717464 13.161678 0.778343 c
13.264015 0.812716 l
15.416415 1.556816 17.251350 3.011539 18.466814 4.937458 c
18.504044 4.996111 18.520664 5.065497 18.514051 5.134652 c
18.507439 5.203807 18.477968 5.268785 18.430302 5.319322 c
18.382631 5.369857 18.319483 5.403069 18.250832 5.413705 c
18.182180 5.424340 18.111942 5.411797 18.051216 5.378055 c
17.784576 5.238605 17.509592 5.115723 17.227831 5.010108 c
16.330969 4.674528 15.380904 4.503569 14.423319 4.505452 c
10.726674 4.505452 7.506563 7.048263 7.506563 10.311340 c
7.511295 10.748997 7.632745 11.177461 7.858376 11.552504 c
8.084005 11.927547 8.405639 12.235578 8.790074 12.444799 c
8.798831 12.448925 8.807810 12.453171 8.817010 12.457521 c
8.818890 12.458410 l
8.818943 12.458436 l
9.066021 12.575289 9.471478 12.767045 10.004062 12.757280 c
10.394279 12.754438 10.778539 12.661270 11.126724 12.485077 c
11.474911 12.308882 11.777564 12.054450 12.010967 11.741718 c
12.303961 11.350515 12.474868 10.882447 12.503695 10.396185 c
12.505230 10.366109 12.506418 10.337431 12.507300 10.310274 c
12.507517 10.301520 12.507688 10.292761 12.507812 10.283998 c
12.507812 10.284079 12.507858 10.284312 12.507951 10.284697 c
12.508044 10.285077 l
12.508965 10.250379 12.509375 10.218417 12.509375 10.189472 c
12.509375 9.769968 12.295324 9.148131 11.900037 8.634101 c
h
f
n
Q
endstream
endobj
3 0 obj
3597
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000003687 00000 n
0000003710 00000 n
0000003883 00000 n
0000003957 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
4016
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "firefox_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,211 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
1.000000 0.584314 0.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 4.362915 4.470703 cm
1.000000 1.000000 1.000000 scn
20.867619 11.727962 m
20.837833 11.923677 20.808041 12.038755 20.808041 12.038755 c
20.808041 12.038755 20.731541 11.950078 20.604939 11.782793 c
20.565567 12.248770 20.481461 12.710009 20.353767 13.159824 c
20.193708 13.722517 19.981323 14.269047 19.719404 14.792139 c
19.554642 15.139147 19.360769 15.471685 19.139881 15.786032 c
19.060444 15.904663 18.979427 16.019739 18.896833 16.131262 c
18.510927 16.761562 18.068161 17.146816 17.555662 17.875271 c
17.221905 18.434662 16.994442 19.051001 16.884739 19.693062 c
16.744175 19.306286 16.636375 18.908424 16.562481 18.503540 c
16.036444 19.034332 15.578785 19.411377 15.302558 19.668694 c
13.939726 20.941479 14.098149 21.601562 14.098149 21.601562 c
14.098149 21.601562 11.552572 18.760094 12.655433 15.800247 c
13.035939 14.795693 13.693181 13.919416 14.551071 13.272955 c
15.618046 12.392786 16.766945 11.700209 17.372868 9.930478 c
16.885212 10.861839 16.148270 11.639370 15.244332 12.176170 c
15.516506 11.533771 15.654726 10.842716 15.650546 10.145147 c
15.649514 8.677663 14.980511 7.290648 13.832813 6.376209 c
12.685124 5.461855 11.183599 5.119755 9.753075 5.446625 c
9.337452 5.524471 8.935081 5.661294 8.558136 5.852863 c
7.996383 6.192848 7.509294 6.643085 7.126257 7.176416 c
7.119488 7.187924 l
7.204789 7.156785 l
7.403728 7.087824 7.607355 7.033332 7.814104 6.993648 c
8.632199 6.820271 9.484598 6.920878 10.239841 7.279986 c
11.002167 7.703148 11.463887 8.016563 11.838277 7.892687 c
11.845046 7.892687 l
12.210635 7.776256 12.499038 8.130963 12.237712 8.502002 c
11.786289 9.093718 11.042494 9.384117 10.309572 9.254825 c
9.546578 9.143809 8.847224 8.601508 7.847274 9.126885 c
7.782916 9.160478 7.720325 9.197285 7.659740 9.237224 c
7.592040 9.275808 7.874358 9.178332 7.808688 9.222332 c
7.590313 9.331739 7.380323 9.457140 7.180411 9.597432 c
7.165519 9.609616 7.331390 9.550047 7.315821 9.562231 c
7.056560 9.738739 6.833995 9.963732 6.660466 10.225024 c
6.481039 10.549186 6.464489 10.938840 6.615781 11.277047 c
6.708858 11.442978 6.850665 11.576247 7.021994 11.658916 c
7.151303 11.595285 7.231188 11.547224 7.231188 11.547224 c
7.231188 11.547224 7.172288 11.655532 7.140473 11.712394 c
7.151980 11.716455 7.162135 11.712393 7.173642 11.719839 c
7.286705 11.671101 7.537200 11.543840 7.669218 11.465994 c
7.759037 11.416071 7.836536 11.346686 7.896020 11.262833 c
7.896020 11.262833 7.941383 11.285171 7.907528 11.380024 c
7.861134 11.497640 7.779268 11.597994 7.673279 11.667040 c
7.684118 11.667040 l
7.785182 11.615594 7.881670 11.555516 7.972521 11.487655 c
8.055698 11.679647 8.095018 11.887801 8.087615 12.096971 c
8.096678 12.211878 8.080744 12.327377 8.040898 12.435431 c
8.005021 12.503124 8.061214 12.530201 8.124177 12.459124 c
8.113346 12.514970 8.095366 12.569124 8.070692 12.620317 c
8.070692 12.625731 8.106568 12.672440 8.122823 12.689363 c
8.167567 12.733786 8.216543 12.773640 8.269055 12.808501 c
8.585170 13.004047 8.916913 13.173278 9.260883 13.314247 c
9.541163 13.436770 9.773382 13.530186 9.820775 13.557262 c
9.890870 13.602616 9.957200 13.653640 10.019138 13.709570 c
10.252313 13.907909 10.410096 14.180455 10.465968 14.481432 c
10.472044 14.521370 10.475884 14.561563 10.477475 14.601924 c
10.477475 14.673002 l
10.436852 14.825310 10.174171 14.939709 8.801186 15.068409 c
8.316492 15.145662 7.927717 15.510355 7.819520 15.989109 c
7.819520 15.983017 l
7.819520 15.993847 l
8.080778 16.678047 8.551307 17.262316 9.164066 17.663393 c
9.199275 17.691824 9.023250 17.655947 9.058450 17.685055 c
9.175143 17.742254 9.294932 17.792854 9.417270 17.836685 c
9.478869 17.862408 9.153228 17.986961 8.865501 17.956501 c
8.689095 17.947023 8.515795 17.906239 8.353680 17.836008 c
8.421380 17.894224 8.624491 17.971394 8.576421 17.971394 c
8.208513 17.900146 7.855455 17.766708 7.532453 17.576748 c
7.531836 17.609493 7.538791 17.641901 7.552770 17.671516 c
7.295539 17.562532 7.070758 17.389071 6.900131 17.167801 c
6.905073 17.206894 6.907332 17.246155 6.906900 17.285585 c
6.789158 17.197754 6.681730 17.096977 6.586673 16.985031 c
5.822587 17.273993 4.996310 17.344479 4.199521 17.183371 c
4.192751 17.189463 l
4.035384 17.323746 3.892527 17.483755 3.777738 17.663393 c
3.766908 17.660686 l
3.754046 17.675577 l
3.701914 17.752747 3.648429 17.840071 3.593590 17.937548 c
3.554328 18.005239 3.514381 18.084438 3.474434 18.166348 c
3.474434 18.171762 3.468342 18.173794 3.465635 18.174471 c
3.449389 18.174471 3.437881 18.099331 3.424334 18.118963 c
3.424334 18.123024 l
3.284769 18.487123 3.219624 18.875507 3.232739 19.265162 c
3.221908 19.259747 l
2.997458 19.105917 2.828083 18.884394 2.738526 18.627417 c
2.697225 18.534678 2.670817 18.483910 2.643740 18.433140 c
2.643740 18.429077 2.643740 18.439909 2.643740 18.456831 c
2.649832 18.503540 2.670140 18.599663 2.665402 18.592216 c
2.660663 18.584770 2.657279 18.579355 2.652540 18.572586 c
2.585220 18.496347 2.528096 18.411732 2.482615 18.320770 c
2.441298 18.237679 2.407316 18.151115 2.381060 18.062101 c
2.376999 18.047886 2.381060 18.074286 2.381060 18.105423 c
2.381060 18.136562 2.387152 18.192154 2.381060 18.180647 c
2.366168 18.151455 l
2.072950 17.501354 1.889919 16.806915 1.824553 16.096739 c
1.806725 15.976162 1.799702 15.854317 1.803568 15.732555 c
1.803568 15.721724 l
1.593959 15.493177 1.408592 15.243647 1.250446 14.976939 c
0.722328 14.084924 0.328367 13.119970 0.081239 12.113216 c
0.256512 12.497116 0.466112 12.864432 0.707478 13.210678 c
0.240062 12.024879 0.000000 10.761656 0.000000 9.487094 c
0.079615 9.860332 0.181348 10.228662 0.304658 10.589886 c
0.229308 9.084409 0.519191 7.582994 1.149568 6.213663 c
1.994808 4.315317 3.400726 2.721165 5.178487 1.645195 c
5.901077 1.155949 6.692341 0.776701 7.526370 0.519978 c
7.636048 0.480040 7.747081 0.440779 7.860812 0.402870 c
7.824935 0.417086 7.793111 0.432655 7.757235 0.448225 c
8.745610 0.151817 9.771902 0.000776 10.803795 0.000015 c
14.455618 0.000015 15.661377 1.390671 15.772409 1.529440 c
15.952877 1.692410 16.099430 1.889225 16.203669 2.108971 c
16.274076 2.137825 16.345163 2.168709 16.416925 2.201710 c
16.462288 2.222017 l
16.544203 2.260601 l
17.094584 2.520031 17.612083 2.844109 18.085770 3.226063 c
18.796379 3.735193 19.305187 4.478201 19.523071 5.324778 c
19.652456 5.632777 19.659479 5.978601 19.542702 6.291594 c
19.580160 6.350656 19.618753 6.413862 19.658472 6.481132 c
20.442619 7.741224 20.887384 9.182901 20.949602 10.665701 c
20.949602 10.709785 20.949602 10.749723 20.949602 10.789662 c
20.950481 11.104262 20.923075 11.418355 20.867619 11.727962 c
h
f*
n
Q
endstream
endobj
3 0 obj
7552
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000007642 00000 n
0000007665 00000 n
0000007838 00000 n
0000007912 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
7971
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "kaios_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,111 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.345098 0.337255 0.839216 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 8.000000 5.756409 cm
1.000000 1.000000 1.000000 scn
2.000000 18.243591 m
3.104569 18.243591 4.000000 17.348162 4.000000 16.243591 c
4.000000 2.243591 l
4.000000 1.139023 3.104569 0.243591 2.000000 0.243591 c
0.895430 0.243591 0.000000 1.139023 0.000000 2.243591 c
0.000000 16.243591 l
0.000000 17.348162 0.895430 18.243591 2.000000 18.243591 c
h
6.719631 9.780034 m
7.568185 10.487162 8.829314 10.372514 9.536443 9.523960 c
14.536443 3.523960 l
15.243570 2.675406 15.128922 1.414276 14.280369 0.707150 c
13.431815 0.000021 12.170686 0.114670 11.463557 0.963223 c
6.463557 6.963223 l
5.756429 7.811776 5.871078 9.072906 6.719631 9.780034 c
h
10.500000 13.243591 m
11.880712 13.243591 13.000000 14.362880 13.000000 15.743591 c
13.000000 17.124304 11.880712 18.243591 10.500000 18.243591 c
9.119288 18.243591 8.000000 17.124304 8.000000 15.743591 c
8.000000 14.362880 9.119288 13.243591 10.500000 13.243591 c
h
f*
n
Q
endstream
endobj
3 0 obj
1898
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001988 00000 n
0000002011 00000 n
0000002184 00000 n
0000002258 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2317
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "linux_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,123 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.556863 0.556863 0.576471 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.534058 cm
1.000000 1.000000 1.000000 scn
10.000000 19.465942 m
4.477152 19.465942 0.000000 14.988791 0.000000 9.465942 c
0.000000 8.755366 0.074113 8.062100 0.215032 7.393454 c
0.276254 7.102958 0.548629 7.173076 0.500000 7.465942 c
0.500000 10.227366 2.738576 12.465942 5.500000 12.465942 c
7.110920 12.465942 8.543908 11.704120 9.458341 10.521095 c
9.713549 10.190927 10.286453 10.190927 10.541661 10.521095 c
11.456094 11.704120 12.889080 12.465942 14.500000 12.465942 c
17.261423 12.465942 19.500000 10.227366 19.500000 7.465942 c
19.451372 7.173075 19.723747 7.102958 19.784969 7.393454 c
19.925886 8.062100 20.000000 8.755366 20.000000 9.465942 c
20.000000 14.988791 15.522848 19.465942 10.000000 19.465942 c
h
4.339812 4.469827 m
5.810565 4.883366 8.201645 5.465942 10.000000 5.465942 c
11.798355 5.465942 14.189435 4.883365 15.660189 4.469827 c
16.112568 4.342629 16.139755 3.712604 15.712085 3.517864 c
14.300119 2.874929 12.058548 1.723875 10.725945 0.375814 c
10.354440 0.000000 9.645560 0.000000 9.274055 0.375814 c
7.941452 1.723875 5.699881 2.874929 4.287915 3.517864 c
3.860245 3.712604 3.887434 4.342630 4.339812 4.469827 c
h
7.000000 7.965942 m
7.000000 7.413658 6.552285 6.965942 6.000000 6.965942 c
5.447715 6.965942 5.000000 7.413658 5.000000 7.965942 c
5.000000 8.518228 5.447715 8.965942 6.000000 8.965942 c
6.552285 8.965942 7.000000 8.518228 7.000000 7.965942 c
h
14.000000 6.965942 m
14.552284 6.965942 15.000000 7.413658 15.000000 7.965942 c
15.000000 8.518228 14.552284 8.965942 14.000000 8.965942 c
13.447715 8.965942 13.000000 8.518228 13.000000 7.965942 c
13.000000 7.413658 13.447715 6.965942 14.000000 6.965942 c
h
f*
n
Q
endstream
endobj
3 0 obj
2648
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002738 00000 n
0000002761 00000 n
0000002934 00000 n
0000003008 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
3067
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "safari_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,122 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.000000 0.478431 1.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.000000 cm
1.000000 1.000000 1.000000 scn
20.000000 10.000000 m
20.000000 4.477153 15.522847 0.000000 10.000000 0.000000 c
4.477153 0.000000 0.000000 4.477153 0.000000 10.000000 c
0.000000 15.522848 4.477153 20.000000 10.000000 20.000000 c
15.522847 20.000000 20.000000 15.522848 20.000000 10.000000 c
h
13.130271 8.970633 m
12.897431 8.427341 12.781012 8.155694 12.611408 7.924634 c
12.461015 7.719744 12.280256 7.538985 12.075366 7.388592 c
11.844306 7.218988 11.572659 7.102569 11.029367 6.869729 c
8.345726 5.719597 l
8.345717 5.719594 l
6.911028 5.104726 6.193683 4.797293 5.749460 4.939239 c
5.364217 5.062338 5.062338 5.364218 4.939239 5.749460 c
4.797293 6.193684 5.104728 6.911032 5.719597 8.345726 c
6.869729 11.029367 l
6.869736 11.029382 l
7.102571 11.572665 7.218989 11.844308 7.388591 12.075367 c
7.538985 12.280256 7.719743 12.461015 7.924634 12.611408 c
8.155693 12.781012 8.427338 12.897430 8.970633 13.130271 c
11.654274 14.280403 l
13.088968 14.895272 13.806316 15.202707 14.250540 15.060761 c
14.635782 14.937662 14.937662 14.635782 15.060761 14.250540 c
15.202707 13.806316 14.895274 13.088972 14.280406 11.654283 c
14.280403 11.654274 l
13.130271 8.970633 l
h
10.000000 8.750000 m
10.690356 8.750000 11.250000 9.309644 11.250000 10.000000 c
11.250000 10.690356 10.690356 11.250000 10.000000 11.250000 c
9.309644 11.250000 8.750000 10.690356 8.750000 10.000000 c
8.750000 9.309644 9.309644 8.750000 10.000000 8.750000 c
h
f*
n
Q
endstream
endobj
3 0 obj
2443
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002533 00000 n
0000002556 00000 n
0000002729 00000 n
0000002803 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2862
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "samsung_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,130 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.345098 0.337255 0.839216 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 2.505493 6.000000 cm
1.000000 1.000000 1.000000 scn
22.261389 5.980152 m
21.862171 5.753639 21.355968 5.560726 20.751179 5.412772 c
21.229342 6.511833 21.494490 7.724953 21.494490 9.000000 c
21.494490 9.449555 21.461529 9.891413 21.397892 10.323286 c
22.121691 9.726398 22.644676 9.139212 22.962757 8.597699 c
23.320982 7.987844 23.387718 7.496468 23.283875 7.108917 c
23.180031 6.721367 22.876547 6.329189 22.261389 5.980152 c
h
20.607622 12.900566 m
21.152983 12.570322 21.656496 12.227567 22.112347 11.876263 c
23.095554 11.118547 23.890961 10.295010 24.394094 9.438458 c
24.899305 8.578368 25.140821 7.625392 24.887310 6.679277 c
24.633801 5.733163 23.948153 5.028619 23.080582 4.536366 c
22.216581 4.046138 21.115971 3.730636 19.885628 3.566039 c
17.421051 3.236324 14.265757 3.489654 10.985565 4.368578 c
7.705375 5.247502 4.846144 6.605762 2.876615 8.123590 c
1.893407 8.881306 1.098001 9.704844 0.594868 10.561395 c
0.089656 11.421485 -0.151860 12.374460 0.101651 13.320576 c
0.355162 14.266690 1.040808 14.971233 1.908379 15.463488 c
2.772381 15.953715 3.872991 16.269217 5.103333 16.433813 c
5.881148 16.537870 6.727761 16.583857 7.625384 16.570431 c
8.422212 17.083990 9.305349 17.475176 10.248231 17.717422 c
10.966249 17.901897 11.718914 18.000000 12.494490 18.000000 c
12.652748 18.000000 12.810052 17.995914 12.966303 17.987844 c
15.310061 17.866798 17.416731 16.849108 18.949896 15.271191 c
19.622210 14.579253 20.184240 13.779593 20.607622 12.900566 c
h
5.634501 14.826132 m
5.529276 14.814692 5.425574 14.802135 5.323449 14.788472 c
4.222026 14.641123 3.346303 14.370763 2.727574 14.019701 c
2.112414 13.670664 1.808932 13.278486 1.705088 12.890936 c
1.601244 12.503386 1.667979 12.012009 2.026204 11.402154 c
2.334355 10.877547 2.834814 10.310076 3.523864 9.732444 c
3.679742 11.667833 4.447917 13.430359 5.634501 14.826132 c
h
18.280874 2.106417 m
15.969578 2.036342 13.325348 2.363437 10.636553 3.083897 c
8.209179 3.734309 5.973554 4.644207 4.114826 5.709922 c
5.428493 2.366698 8.685105 0.000000 12.494490 0.000000 c
14.697897 0.000000 16.716366 0.791813 18.280874 2.106417 c
h
f*
n
Q
endstream
endobj
3 0 obj
3091
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000003181 00000 n
0000003204 00000 n
0000003377 00000 n
0000003451 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
3510
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "ubuntu_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,148 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
1.000000 0.584314 0.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 3.000000 3.771423 cm
1.000000 1.000000 1.000000 scn
15.177608 20.713148 m
15.204557 20.772539 15.234649 20.831167 15.267939 20.888826 c
15.820224 21.845411 17.043404 22.173162 17.999990 21.620876 c
18.956575 21.068592 19.284325 19.845411 18.732040 18.888826 c
18.698307 18.830399 18.662071 18.774315 18.623545 18.720636 c
18.583227 18.664463 18.540403 18.610920 18.495317 18.560074 c
17.878128 17.864054 16.837002 17.673527 15.999990 18.156775 c
15.101064 18.675770 14.757450 19.787222 15.177608 20.713148 c
h
2.204488 9.238899 m
3.213000 9.341319 4.000000 10.193040 4.000000 11.228574 c
4.000000 12.266298 3.209666 13.119431 2.198084 13.218888 c
2.132923 13.225295 2.066844 13.228574 2.000000 13.228574 c
0.895431 13.228574 0.000000 12.333143 0.000000 11.228574 c
0.000000 10.124004 0.895431 9.228574 2.000000 9.228574 c
2.066842 9.228574 2.132918 9.231853 2.198076 9.238258 c
2.200214 9.238468 2.202352 9.238682 2.204488 9.238899 c
h
18.495323 3.897072 m
17.878134 4.593092 16.837008 4.783619 15.999995 4.300371 c
15.101073 3.781378 14.757460 2.669931 15.177609 1.744005 c
15.204560 1.684610 15.234653 1.625982 15.267944 1.568319 c
15.820230 0.611734 17.043409 0.283985 17.999994 0.836269 c
18.956581 1.388554 19.284330 2.611734 18.732046 3.568319 c
18.698311 3.626751 18.662073 3.682835 18.623545 3.736517 c
18.583229 3.792688 18.540407 3.846230 18.495323 3.897072 c
h
12.000000 21.228577 m
12.642377 21.228577 13.270601 21.168005 13.879285 21.052265 c
13.319308 19.555737 13.905367 17.830355 15.334990 17.004961 c
16.764109 16.179859 18.550608 16.534466 19.566835 17.766634 c
20.913383 16.209583 21.787418 14.232605 21.966045 12.058582 c
17.943056 12.058582 l
17.538868 14.979481 15.032086 17.228577 12.000000 17.228577 c
11.203122 17.228577 10.442527 17.073227 9.746849 16.791162 c
7.734877 20.275999 l
9.028571 20.886940 10.474389 21.228577 12.000000 21.228577 c
h
5.330000 11.228574 m
5.330000 9.577477 4.128354 8.207040 2.551897 7.944097 c
3.252132 5.929559 4.578487 4.208017 6.298005 3.012430 c
8.309907 6.497146 l
6.903931 7.595241 6.000000 9.306347 6.000000 11.228577 c
6.000000 13.150808 6.903933 14.861916 8.309912 15.960011 c
6.298010 19.444725 l
4.578489 18.249138 3.252129 16.527592 2.551893 14.513052 c
4.128352 14.250109 5.330000 12.879672 5.330000 11.228574 c
h
15.334996 5.452185 m
16.764111 6.277285 18.550604 5.922682 19.566835 4.690519 c
20.913385 6.247572 21.787422 8.224556 21.966047 10.398582 c
17.943058 10.398582 l
17.538876 7.477678 15.032091 5.228577 12.000000 5.228577 c
11.203119 5.228577 10.442523 5.383926 9.746843 5.665993 c
7.734872 2.181156 l
9.028567 1.570213 10.474387 1.228577 12.000000 1.228577 c
12.642378 1.228577 13.270603 1.289148 13.879288 1.404888 c
13.319315 2.901415 13.905375 4.626793 15.334996 5.452185 c
h
f*
n
Q
endstream
endobj
3 0 obj
3748
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000003838 00000 n
0000003861 00000 n
0000004034 00000 n
0000004108 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
4167
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "vivaldi_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,107 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
1.000000 0.231373 0.188235 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.688965 cm
1.000000 1.000000 1.000000 scn
15.324838 14.641751 m
14.559619 16.175201 15.373041 17.889412 17.039049 18.256958 c
18.394751 18.558224 19.798656 17.564043 19.976404 16.187252 c
20.054733 15.584717 19.937241 15.033398 19.635973 14.512206 c
17.165583 10.228187 14.692178 5.947180 12.227813 1.663160 c
11.769886 0.867815 11.101072 0.385788 10.188232 0.319508 c
9.163924 0.247204 8.359541 0.675003 7.844374 1.563742 c
6.280797 4.248033 4.735297 6.941361 3.183771 9.631678 c
2.240805 11.267558 1.291812 12.903439 0.351859 14.542333 c
-0.597133 16.196289 0.472366 18.205742 2.376374 18.305161 c
3.379594 18.356375 4.156863 17.892424 4.666005 17.021763 c
5.361932 15.831757 6.045809 14.632712 6.735711 13.439694 c
7.232802 12.578070 7.720854 11.710421 8.233008 10.860847 c
8.971113 9.622640 10.061700 8.926711 11.507783 8.839344 c
13.559412 8.718837 15.463422 10.201072 15.710461 12.376221 c
15.728537 12.538906 15.740587 12.701591 15.746613 12.785946 c
15.737575 13.490911 15.605017 14.084407 15.324838 14.641751 c
h
f
n
Q
endstream
endobj
3 0 obj
2021
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002111 00000 n
0000002134 00000 n
0000002307 00000 n
0000002381 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2440
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "windows_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,161 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.000000 0.478431 1.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 6.000000 6.000000 cm
1.000000 1.000000 1.000000 scn
0.108993 17.453991 m
0.000000 17.240078 0.000000 16.960052 0.000000 16.400000 c
0.000000 11.600000 l
0.000000 11.039948 0.000000 10.759921 0.108993 10.546009 c
0.204867 10.357847 0.357847 10.204866 0.546009 10.108994 c
0.759921 10.000000 1.039948 10.000000 1.600000 10.000000 c
6.400000 10.000000 l
6.960052 10.000000 7.240079 10.000000 7.453990 10.108994 c
7.642153 10.204866 7.795133 10.357847 7.891006 10.546009 c
8.000000 10.759921 8.000000 11.039948 8.000000 11.600000 c
8.000000 16.400000 l
8.000000 16.960052 8.000000 17.240078 7.891006 17.453991 c
7.795133 17.642153 7.642153 17.795134 7.453990 17.891006 c
7.240079 18.000000 6.960052 18.000000 6.400000 18.000000 c
1.600000 18.000000 l
1.039948 18.000000 0.759921 18.000000 0.546009 17.891006 c
0.357847 17.795134 0.204867 17.642153 0.108993 17.453991 c
h
0.108993 7.453991 m
0.000000 7.240079 0.000000 6.960052 0.000000 6.400000 c
0.000000 1.600000 l
0.000000 1.039948 0.000000 0.759922 0.108993 0.546009 c
0.204867 0.357847 0.357847 0.204866 0.546009 0.108994 c
0.759921 0.000000 1.039948 0.000000 1.600000 0.000000 c
6.400000 0.000000 l
6.960052 0.000000 7.240079 0.000000 7.453990 0.108994 c
7.642153 0.204866 7.795133 0.357847 7.891006 0.546009 c
8.000000 0.759922 8.000000 1.039948 8.000000 1.600000 c
8.000000 6.400000 l
8.000000 6.960052 8.000000 7.240079 7.891006 7.453991 c
7.795133 7.642153 7.642153 7.795134 7.453990 7.891006 c
7.240079 8.000000 6.960052 8.000000 6.400000 8.000000 c
1.600000 8.000000 l
1.039948 8.000000 0.759921 8.000000 0.546009 7.891006 c
0.357847 7.795134 0.204867 7.642153 0.108993 7.453991 c
h
10.000000 6.400000 m
10.000000 6.960052 10.000000 7.240079 10.108994 7.453991 c
10.204866 7.642153 10.357847 7.795134 10.546009 7.891006 c
10.759921 8.000000 11.039948 8.000000 11.600000 8.000000 c
16.400000 8.000000 l
16.960052 8.000000 17.240078 8.000000 17.453991 7.891006 c
17.642153 7.795134 17.795134 7.642153 17.891006 7.453991 c
18.000000 7.240079 18.000000 6.960052 18.000000 6.400000 c
18.000000 1.600000 l
18.000000 1.039948 18.000000 0.759922 17.891006 0.546009 c
17.795134 0.357847 17.642153 0.204866 17.453991 0.108994 c
17.240078 0.000000 16.960052 0.000000 16.400000 0.000000 c
11.600000 0.000000 l
11.039948 0.000000 10.759921 0.000000 10.546009 0.108994 c
10.357847 0.204866 10.204866 0.357847 10.108994 0.546009 c
10.000000 0.759922 10.000000 1.039948 10.000000 1.600000 c
10.000000 6.400000 l
h
10.108994 17.453991 m
10.000000 17.240078 10.000000 16.960052 10.000000 16.400000 c
10.000000 11.600000 l
10.000000 11.039948 10.000000 10.759921 10.108994 10.546009 c
10.204866 10.357847 10.357847 10.204866 10.546009 10.108994 c
10.759921 10.000000 11.039948 10.000000 11.600000 10.000000 c
16.400000 10.000000 l
16.960052 10.000000 17.240078 10.000000 17.453991 10.108994 c
17.642153 10.204866 17.795134 10.357847 17.891006 10.546009 c
18.000000 10.759921 18.000000 11.039948 18.000000 11.600000 c
18.000000 16.400000 l
18.000000 16.960052 18.000000 17.240078 17.891006 17.453991 c
17.795134 17.642153 17.642153 17.795134 17.453991 17.891006 c
17.240078 18.000000 16.960052 18.000000 16.400000 18.000000 c
11.600000 18.000000 l
11.039948 18.000000 10.759921 18.000000 10.546009 17.891006 c
10.357847 17.795134 10.204866 17.642153 10.108994 17.453991 c
h
f*
n
Q
endstream
endobj
3 0 obj
4302
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000004392 00000 n
0000004415 00000 n
0000004588 00000 n
0000004662 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
4721
%%EOF

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "xbox_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,133 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.203922 0.780392 0.349020 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.000000 cm
1.000000 1.000000 1.000000 scn
9.999756 20.000000 m
7.979835 20.000000 6.309427 19.451963 4.788253 18.530428 c
4.763316 18.530428 4.762926 18.505716 4.762926 18.480810 c
4.762926 18.455904 4.788154 18.455515 4.813092 18.455515 c
6.758200 18.878922 9.700607 17.210390 9.974917 17.036047 c
9.999756 17.036047 l
10.025083 17.036047 l
10.299393 17.210390 13.241800 18.878922 15.186910 18.455515 c
15.211846 18.455515 15.236587 18.455902 15.236587 18.480810 c
15.236587 18.505716 15.236685 18.530428 15.211744 18.530428 c
13.690573 19.451963 12.019677 20.000000 9.999756 20.000000 c
h
16.688015 17.192684 m
16.193554 17.163498 15.043322 16.780853 12.742857 14.520601 c
12.718021 14.495792 l
12.718021 14.495792 12.717922 14.470497 12.742857 14.470497 c
14.762777 12.079487 18.653288 6.375931 17.905169 4.009827 c
17.905169 3.960209 l
17.930107 3.960209 17.954849 3.960112 17.954847 3.985018 c
19.226648 5.653745 20.000000 7.770979 20.000000 10.037457 c
20.000000 12.802063 18.877726 15.317605 17.032366 17.135769 c
17.007427 17.160675 17.007132 17.160578 16.982195 17.160578 c
16.944788 17.173031 16.852835 17.202414 16.688015 17.192684 c
h
3.301269 17.181982 m
3.132943 17.188597 3.036114 17.154448 2.992474 17.135769 c
2.967537 17.135769 2.967732 17.110960 2.942795 17.110960 c
1.122373 15.292795 0.000000 12.777252 0.000000 10.012647 c
0.000000 7.746168 0.773349 5.628935 2.045151 3.960209 c
2.045151 3.935303 2.069893 3.935400 2.094830 3.935400 c
2.119767 3.935400 2.119767 3.960114 2.094830 3.985018 c
1.321774 6.351123 5.236733 12.054677 7.256654 14.445687 c
7.281981 14.470496 l
7.281981 14.495403 7.281582 14.495791 7.256654 14.495791 c
4.956191 16.774723 3.806250 17.162134 3.301269 17.181982 c
h
9.999756 11.979861 m
9.999756 11.979861 9.974917 11.979955 9.974917 11.955051 c
6.982442 9.688573 1.845652 4.059835 3.416702 2.465828 c
5.162312 0.921635 7.481090 0.000000 9.999756 0.000000 c
12.518421 0.000000 14.812753 0.921635 16.583298 2.465828 c
18.129410 4.059833 13.017559 9.688573 10.025083 11.955051 c
10.025083 11.979958 9.999756 11.979861 9.999756 11.979861 c
h
f
n
Q
endstream
endobj
3 0 obj
3084
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000003174 00000 n
0000003197 00000 n
0000003370 00000 n
0000003444 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
3503
%%EOF

View File

@ -1,22 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "EditProfile@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "EditProfile@3x.png",
"scale" : "3x"
"filename" : "person_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 954 B

View File

@ -0,0 +1,102 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.000000 0.478431 1.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 6.730286 6.000000 cm
1.000000 1.000000 1.000000 scn
8.269731 10.500000 m
10.478869 10.500000 12.269731 12.290861 12.269731 14.500000 c
12.269731 16.709139 10.478869 18.500000 8.269731 18.500000 c
6.060592 18.500000 4.269731 16.709139 4.269731 14.500000 c
4.269731 12.290861 6.060592 10.500000 8.269731 10.500000 c
h
16.238016 3.829397 m
15.145899 5.884616 12.897719 8.000000 8.269734 8.000000 c
3.641746 8.000000 1.393565 5.884617 0.301445 3.829397 c
-0.735194 1.878584 1.060591 0.000000 3.269730 0.000000 c
13.269731 0.000000 l
15.478869 0.000000 17.274654 1.878582 16.238016 3.829397 c
h
f*
n
Q
endstream
endobj
3 0 obj
1580
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001670 00000 n
0000001693 00000 n
0000001866 00000 n
0000001940 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1999
%%EOF

View File

@ -1,22 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "ic_faq@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "ic_faq@3x.png",
"scale" : "3x"
"filename" : "faq_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

View File

@ -0,0 +1,117 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.203922 0.666667 0.858824 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.000000 cm
1.000000 1.000000 1.000000 scn
10.000000 0.000000 m
15.522847 0.000000 20.000000 4.477153 20.000000 10.000000 c
20.000000 15.522848 15.522847 20.000000 10.000000 20.000000 c
4.477152 20.000000 0.000000 15.522848 0.000000 10.000000 c
0.000000 4.477153 4.477152 0.000000 10.000000 0.000000 c
h
9.999991 14.170009 m
8.801534 14.170009 7.829991 13.198466 7.829991 12.000009 c
7.829991 11.541613 7.458388 11.170009 6.999991 11.170009 c
6.541595 11.170009 6.169991 11.541613 6.169991 12.000009 c
6.169991 14.115259 7.884741 15.830009 9.999991 15.830009 c
12.115242 15.830009 13.829991 14.115259 13.829991 12.000009 c
13.829991 10.458002 12.918732 9.130548 11.608949 8.523561 c
11.050548 8.264785 10.829991 7.920669 10.829991 7.700009 c
10.829991 7.500009 l
10.829991 7.041612 10.458387 6.670009 9.999991 6.670009 c
9.541595 6.670009 9.169991 7.041612 9.169991 7.500009 c
9.169991 7.700009 l
9.169991 8.915289 10.166533 9.684700 10.910970 10.029692 c
11.656005 10.374960 12.169991 11.128319 12.169991 12.000009 c
12.169991 13.198466 11.198449 14.170009 9.999991 14.170009 c
h
10.999991 4.500009 m
10.999991 3.947723 10.552277 3.500008 9.999991 3.500008 c
9.447706 3.500008 8.999991 3.947723 8.999991 4.500009 c
8.999991 5.052294 9.447706 5.500009 9.999991 5.500009 c
10.552277 5.500009 10.999991 5.052294 10.999991 4.500009 c
h
f*
n
Q
endstream
endobj
3 0 obj
2332
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002422 00000 n
0000002445 00000 n
0000002618 00000 n
0000002692 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2751
%%EOF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,22 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "SettingsPassportIcon@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "SettingsPassportIcon@3x.png",
"scale" : "3x"
"filename" : "passport_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 854 B

View File

@ -0,0 +1,121 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.000000 0.478431 1.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 7.000000 5.000000 cm
1.000000 1.000000 1.000000 scn
0.000000 13.600000 m
0.000000 15.840210 0.000000 16.960316 0.435974 17.815962 c
0.819467 18.568611 1.431390 19.180532 2.184038 19.564026 c
3.039685 20.000000 4.159790 20.000000 6.400000 20.000000 c
9.600000 20.000000 l
11.840210 20.000000 12.960315 20.000000 13.815962 19.564026 c
14.568610 19.180532 15.180532 18.568611 15.564026 17.815962 c
16.000000 16.960316 16.000000 15.840210 16.000000 13.600000 c
16.000000 6.400000 l
16.000000 4.159790 16.000000 3.039684 15.564026 2.184038 c
15.180532 1.431389 14.568610 0.819468 13.815962 0.435974 c
12.960315 0.000000 11.840210 0.000000 9.600000 0.000000 c
6.400000 0.000000 l
4.159790 0.000000 3.039685 0.000000 2.184038 0.435974 c
1.431390 0.819468 0.819467 1.431389 0.435974 2.184038 c
0.000000 3.039684 0.000000 4.159790 0.000000 6.400000 c
0.000000 13.600000 l
h
5.335000 5.000000 m
5.335000 5.367270 5.632730 5.665000 6.000000 5.665000 c
10.000000 5.665000 l
10.367270 5.665000 10.665000 5.367270 10.665000 5.000000 c
10.665000 4.632730 10.367270 4.335000 10.000000 4.335000 c
6.000000 4.335000 l
5.632730 4.335000 5.335000 4.632730 5.335000 5.000000 c
h
8.000000 8.000000 m
9.932997 8.000000 11.500000 9.567003 11.500000 11.500000 c
11.500000 13.432997 9.932997 15.000000 8.000000 15.000000 c
6.067003 15.000000 4.500000 13.432997 4.500000 11.500000 c
4.500000 9.567003 6.067003 8.000000 8.000000 8.000000 c
h
f*
n
Q
endstream
endobj
3 0 obj
2404
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002494 00000 n
0000002517 00000 n
0000002690 00000 n
0000002764 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2823
%%EOF

View File

@ -1,22 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "SettingsProxyIcon@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "SettingsProxyIcon@3x.png",
"scale" : "3x"
"filename" : "proxy_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,154 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.203922 0.780392 0.349020 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 6.000000 4.366699 cm
1.000000 1.000000 1.000000 scn
0.000000 15.553658 m
0.000000 9.914721 l
0.000000 8.349366 0.000000 7.566689 0.215754 6.856245 c
0.406759 6.227295 0.719904 5.642179 1.137271 5.134375 c
1.608717 4.560774 2.259944 4.126621 3.562399 3.258318 c
7.224959 0.816612 l
7.866474 0.388935 8.187231 0.175097 8.533923 0.092016 c
8.840303 0.018597 9.159697 0.018597 9.466077 0.092016 c
9.812769 0.175097 10.133526 0.388935 10.775041 0.816612 c
14.437600 3.258318 l
15.740056 4.126621 16.391283 4.560774 16.862728 5.134375 c
17.280096 5.642179 17.593241 6.227295 17.784246 6.856245 c
18.000000 7.566689 18.000000 8.349366 18.000000 9.914721 c
18.000000 15.553658 l
18.000000 16.306395 18.000000 16.682764 17.881628 17.011351 c
17.776997 17.301800 17.606544 17.564083 17.383625 17.777660 c
17.131433 18.019281 16.787502 18.172138 16.099644 18.477856 c
11.599288 20.478012 l
10.642108 20.903425 10.163518 21.116133 9.666042 21.200140 c
9.225135 21.274595 8.774865 21.274595 8.333958 21.200140 c
7.836482 21.116133 7.357893 20.903425 6.400713 20.478012 c
1.900359 18.477856 l
1.900357 18.477856 l
1.900351 18.477852 l
1.212495 18.172138 0.868566 18.019279 0.616375 17.777660 c
0.393455 17.564083 0.223004 17.301800 0.118372 17.011351 c
0.000000 16.682764 0.000000 16.306395 0.000000 15.553658 c
h
6.970233 15.663034 m
7.229931 15.922733 7.229931 16.343788 6.970233 16.603485 c
6.710534 16.863186 6.289479 16.863186 6.029780 16.603485 c
3.529781 14.103486 l
3.400439 13.974144 3.335515 13.804777 3.335010 13.635255 c
3.335007 13.633261 l
3.335010 13.631266 l
3.335272 13.541825 3.353192 13.456539 3.385466 13.378709 c
3.417918 13.300276 3.466023 13.226792 3.529781 13.163034 c
6.029780 10.663034 l
6.289479 10.403336 6.710534 10.403336 6.970233 10.663034 c
7.229931 10.922733 7.229931 11.343788 6.970233 11.603486 c
5.605459 12.968260 l
12.000007 12.968260 l
12.367276 12.968260 12.665007 13.265991 12.665007 13.633261 c
12.665007 14.000529 12.367276 14.298260 12.000007 14.298260 c
5.605459 14.298260 l
6.970233 15.663034 l
h
11.970232 10.603485 m
11.710534 10.863184 11.289479 10.863184 11.029781 10.603485 c
10.770082 10.343787 10.770082 9.922732 11.029781 9.663034 c
12.394555 8.298260 l
6.000007 8.298260 l
5.632737 8.298260 5.335007 8.000528 5.335007 7.633261 c
5.335007 7.265991 5.632737 6.968260 6.000007 6.968260 c
12.394555 6.968260 l
11.029781 5.603485 l
10.770082 5.343788 10.770082 4.922733 11.029781 4.663034 c
11.289479 4.403336 11.710534 4.403336 11.970232 4.663034 c
14.470233 7.163034 l
14.533991 7.226791 14.582095 7.300276 14.614547 7.378708 c
14.647060 7.457117 14.665007 7.543093 14.665007 7.633261 c
14.665007 7.723427 14.647060 7.809402 14.614547 7.887812 c
14.582095 7.966244 14.533991 8.039728 14.470233 8.103485 c
11.970232 10.603485 l
h
f*
n
Q
endstream
endobj
3 0 obj
3757
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000003847 00000 n
0000003870 00000 n
0000004043 00000 n
0000004117 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
4176
%%EOF

View File

@ -11,7 +11,7 @@ stream
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.964706 0.768627 0.262745 scn
1.000000 0.800000 0.000000 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
@ -34,30 +34,29 @@ f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 8.500000 5.000000 cm
1.000000 0.000000 -0.000000 1.000000 8.000000 5.000000 cm
1.000000 1.000000 1.000000 scn
0.000000 12.500000 m
0.000000 16.089851 2.910149 19.000000 6.500000 19.000000 c
10.089851 19.000000 13.000000 16.089851 13.000000 12.500000 c
13.000000 9.326989 11.698906 7.884006 10.621044 6.688600 c
10.292052 6.323730 9.983858 5.981926 9.739806 5.621033 c
9.164136 4.769756 8.876301 4.344118 8.752400 4.243239 c
8.663695 4.171017 8.625642 4.138249 8.582385 4.115283 c
8.539128 4.092316 8.490668 4.079148 8.381149 4.046125 c
8.228177 4.000000 7.977118 4.000000 7.475001 4.000000 c
5.525000 4.000000 l
5.022882 4.000000 4.771823 4.000000 4.618851 4.046125 c
4.509332 4.079148 4.460872 4.092316 4.417615 4.115283 c
4.374358 4.138249 4.336305 4.171017 4.247600 4.243239 c
4.123699 4.344119 3.835864 4.769756 3.260195 5.621032 c
3.016143 5.981926 2.707948 6.323730 2.378956 6.688601 c
1.301094 7.884007 0.000000 9.326990 0.000000 12.500000 c
0.000000 13.066666 m
0.000000 16.895842 3.134007 20.000000 7.000000 20.000000 c
10.865994 20.000000 14.000001 16.895840 14.000001 13.066666 c
14.000001 9.851412 12.761293 8.645617 11.662524 7.576045 c
11.125723 7.053507 10.622322 6.563482 10.313082 5.887539 c
9.968180 5.133646 9.795729 4.756700 9.675133 4.632726 c
9.527884 4.481352 9.493101 4.459015 9.294188 4.388088 c
9.131282 4.330000 8.887521 4.330000 8.400000 4.330000 c
5.600000 4.330000 l
5.112479 4.330000 4.868718 4.330000 4.705812 4.388088 c
4.506899 4.459015 4.472116 4.481352 4.324867 4.632726 c
4.204271 4.756700 4.031820 5.133646 3.686918 5.887539 c
3.377677 6.563482 2.874277 7.053507 2.337476 7.576045 c
1.238708 8.645617 0.000000 9.851412 0.000000 13.066666 c
h
5.500000 3.000000 m
4.947715 3.000000 4.500000 2.552284 4.500000 2.000000 c
4.500000 0.895432 5.395431 0.000000 6.500000 0.000000 c
7.604569 0.000000 8.500000 0.895430 8.500000 2.000000 c
8.500000 2.552284 8.052285 3.000000 7.500000 3.000000 c
7.500000 0.000000 l
8.604569 0.000000 9.500000 0.895432 9.500000 2.000000 c
9.500000 2.552284 9.052284 3.000000 8.500000 3.000000 c
5.500000 3.000000 l
h
f*
@ -68,7 +67,7 @@ endstream
endobj
3 0 obj
2149
2059
endobj
4 0 obj
@ -99,15 +98,15 @@ xref
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002239 00000 n
0000002262 00000 n
0000002435 00000 n
0000002509 00000 n
0000002149 00000 n
0000002172 00000 n
0000002345 00000 n
0000002419 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2568
2478
%%EOF

View File

@ -1,22 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "SettingsWatchIcon@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "SettingsWatchIcon@3x.png",
"scale" : "3x"
"filename" : "watch_30.pdf",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 760 B

View File

@ -0,0 +1,149 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
0.556863 0.556863 0.576471 scn
0.000000 18.799999 m
0.000000 22.720367 0.000000 24.680552 0.762954 26.177933 c
1.434068 27.495068 2.504932 28.565931 3.822066 29.237045 c
5.319448 30.000000 7.279633 30.000000 11.200000 30.000000 c
18.799999 30.000000 l
22.720367 30.000000 24.680552 30.000000 26.177933 29.237045 c
27.495068 28.565931 28.565931 27.495068 29.237045 26.177933 c
30.000000 24.680552 30.000000 22.720367 30.000000 18.799999 c
30.000000 11.200001 l
30.000000 7.279633 30.000000 5.319448 29.237045 3.822067 c
28.565931 2.504932 27.495068 1.434069 26.177933 0.762955 c
24.680552 0.000000 22.720367 0.000000 18.799999 0.000000 c
11.200000 0.000000 l
7.279633 0.000000 5.319448 0.000000 3.822066 0.762955 c
2.504932 1.434069 1.434068 2.504932 0.762954 3.822067 c
0.000000 5.319448 0.000000 7.279633 0.000000 11.200001 c
0.000000 18.799999 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 7.334961 4.000000 cm
1.000000 1.000000 1.000000 scn
12.465363 18.798517 m
12.043724 20.485073 l
11.821140 21.375406 11.021173 22.000000 10.103439 22.000000 c
5.226545 22.000000 l
4.308810 22.000000 3.508843 21.375404 3.286260 20.485071 c
2.864619 18.798510 l
2.756479 18.756470 2.650801 18.709366 2.547134 18.656546 c
1.669358 18.209297 0.955704 17.495642 0.508455 16.617867 c
0.234740 16.080671 0.114562 15.489477 0.056706 14.781344 c
-0.000008 14.087205 -0.000004 13.224628 0.000000 12.129540 c
0.000000 12.100000 l
0.000000 9.900001 l
0.000000 9.870461 l
-0.000004 8.775373 -0.000008 7.912796 0.056706 7.218656 c
0.114562 6.510523 0.234740 5.919329 0.508455 5.382133 c
0.955704 4.504358 1.669358 3.790703 2.547134 3.343454 c
2.650796 3.290636 2.756469 3.243536 2.864604 3.201496 c
3.286246 1.514929 l
3.508829 0.624596 4.308796 0.000000 5.226531 0.000000 c
10.103425 0.000000 l
11.021160 0.000000 11.821127 0.624594 12.043710 1.514927 c
12.465347 3.201477 l
12.573500 3.243521 12.679189 3.290628 12.782866 3.343454 c
13.660642 3.790703 14.374296 4.504358 14.821546 5.382133 c
15.095260 5.919329 15.215438 6.510523 15.273294 7.218656 c
15.330009 7.912799 15.330005 8.775380 15.330000 9.870477 c
15.330000 9.900000 l
15.330000 12.100000 l
15.330000 12.129522 l
15.330005 13.224619 15.330009 14.087201 15.273294 14.781344 c
15.215438 15.489477 15.095260 16.080671 14.821546 16.617867 c
14.374296 17.495642 13.660642 18.209297 12.782866 18.656546 c
12.679193 18.709370 12.573510 18.756475 12.465363 18.798517 c
h
4.491961 17.782711 m
3.866076 17.731575 3.469394 17.633766 3.150942 17.471506 c
2.523421 17.151770 2.013231 16.641579 1.693494 16.014057 c
1.531234 15.695606 1.433425 15.298924 1.382288 14.673040 c
1.330518 14.039392 1.330000 13.231079 1.330000 12.100000 c
1.330000 9.900001 l
1.330000 8.768922 1.330518 7.960608 1.382288 7.326960 c
1.433425 6.701076 1.531234 6.304394 1.693494 5.985943 c
2.013231 5.358421 2.523421 4.848232 3.150942 4.528492 c
3.469394 4.366234 3.866076 4.268425 4.491961 4.217289 c
5.125608 4.165516 5.933923 4.165001 7.065001 4.165001 c
8.265000 4.165001 l
9.396078 4.165001 10.204392 4.165516 10.838040 4.217289 c
11.463924 4.268425 11.860606 4.366234 12.179058 4.528492 c
12.806579 4.848232 13.316769 5.358421 13.636507 5.985943 c
13.798766 6.304394 13.896575 6.701076 13.947712 7.326960 c
13.999483 7.960608 14.000000 8.768922 14.000000 9.900000 c
14.000000 12.100000 l
14.000000 13.231078 13.999483 14.039392 13.947712 14.673040 c
13.896575 15.298924 13.798766 15.695606 13.636507 16.014057 c
13.316769 16.641579 12.806579 17.151770 12.179058 17.471506 c
11.860606 17.633766 11.463924 17.731575 10.838039 17.782711 c
10.204392 17.834482 9.396078 17.834999 8.264999 17.834999 c
7.065001 17.834999 l
5.933922 17.834999 5.125608 17.834482 4.491961 17.782711 c
h
f*
n
Q
endstream
endobj
3 0 obj
3785
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 30.000000 30.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000003875 00000 n
0000003898 00000 n
0000004071 00000 n
0000004145 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
4204
%%EOF

View File

@ -259,7 +259,6 @@ func chatHistoryEntriesForView(
if view.laterId == nil && !view.isLoading {
if !entries.isEmpty, case let .MessageEntry(lastMessage, _, _, _, _, _) = entries[entries.count - 1], !adMessages.isEmpty {
var nextAdMessageId: Int32 = 1
for message in adMessages {
let updatedMessage = Message(

View File

@ -36,6 +36,7 @@ final class PeerInfoScreenActionItem: PeerInfoScreenItem {
private final class PeerInfoScreenActionItemNode: PeerInfoScreenItemNode {
private let selectionNode: PeerInfoScreenSelectableBackgroundNode
private let maskNode: ASImageNode
private let iconNode: ASImageNode
private let textNode: ImmediateTextNode
private let bottomSeparatorNode: ASDisplayNode
@ -47,6 +48,9 @@ private final class PeerInfoScreenActionItemNode: PeerInfoScreenItemNode {
var bringToFrontForHighlightImpl: (() -> Void)?
self.selectionNode = PeerInfoScreenSelectableBackgroundNode(bringToFrontForHighlight: { bringToFrontForHighlightImpl?() })
self.maskNode = ASImageNode()
self.maskNode.isUserInteractionEnabled = false
self.iconNode = ASImageNode()
self.iconNode.isLayerBacked = true
self.iconNode.displaysAsynchronously = false
@ -68,6 +72,7 @@ private final class PeerInfoScreenActionItemNode: PeerInfoScreenItemNode {
self.addSubnode(self.bottomSeparatorNode)
self.addSubnode(self.selectionNode)
self.addSubnode(self.maskNode)
self.addSubnode(self.textNode)
self.addSubnode(self.activateArea)
@ -126,6 +131,14 @@ private final class PeerInfoScreenActionItemNode: PeerInfoScreenItemNode {
transition.updateFrame(node: self.textNode, frame: textFrame)
}
let hasCorners = safeInsets.left > 0.0 && (topItem == nil || bottomItem == nil)
let hasTopCorners = hasCorners && topItem == nil
let hasBottomCorners = hasCorners && bottomItem == nil
self.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil
self.maskNode.frame = CGRect(origin: CGPoint(x: safeInsets.left, y: 0.0), size: CGSize(width: width - safeInsets.left - safeInsets.right, height: height))
self.bottomSeparatorNode.isHidden = hasBottomCorners
let highlightNodeOffset: CGFloat = topItem == nil ? 0.0 : UIScreenPixel
self.selectionNode.update(size: CGSize(width: width, height: height + highlightNodeOffset), theme: presentationData.theme, transition: transition)
transition.updateFrame(node: self.selectionNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -highlightNodeOffset), size: CGSize(width: width, height: height + highlightNodeOffset)))

View File

@ -48,6 +48,7 @@ final class PeerInfoScreenDisclosureItem: PeerInfoScreenItem {
private final class PeerInfoScreenDisclosureItemNode: PeerInfoScreenItemNode {
private let selectionNode: PeerInfoScreenSelectableBackgroundNode
private let maskNode: ASImageNode
private let iconNode: ASImageNode
private let labelBadgeNode: ASImageNode
private let labelNode: ImmediateTextNode
@ -62,6 +63,9 @@ private final class PeerInfoScreenDisclosureItemNode: PeerInfoScreenItemNode {
var bringToFrontForHighlightImpl: (() -> Void)?
self.selectionNode = PeerInfoScreenSelectableBackgroundNode(bringToFrontForHighlight: { bringToFrontForHighlightImpl?() })
self.maskNode = ASImageNode()
self.maskNode.isUserInteractionEnabled = false
self.iconNode = ASImageNode()
self.iconNode.isLayerBacked = true
self.iconNode.displaysAsynchronously = false
@ -98,6 +102,7 @@ private final class PeerInfoScreenDisclosureItemNode: PeerInfoScreenItemNode {
self.addSubnode(self.bottomSeparatorNode)
self.addSubnode(self.selectionNode)
self.addSubnode(self.maskNode)
self.addSubnode(self.labelNode)
self.addSubnode(self.textNode)
self.addSubnode(self.arrowNode)
@ -191,6 +196,14 @@ private final class PeerInfoScreenDisclosureItemNode: PeerInfoScreenItemNode {
transition.updateFrame(node: self.labelNode, frame: labelFrame)
transition.updateFrame(node: self.textNode, frame: textFrame)
let hasCorners = safeInsets.left > 0.0 && (topItem == nil || bottomItem == nil)
let hasTopCorners = hasCorners && topItem == nil
let hasBottomCorners = hasCorners && bottomItem == nil
self.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil
self.maskNode.frame = CGRect(origin: CGPoint(x: safeInsets.left, y: 0.0), size: CGSize(width: width - safeInsets.left - safeInsets.right, height: height))
self.bottomSeparatorNode.isHidden = hasBottomCorners
let highlightNodeOffset: CGFloat = topItem == nil ? 0.0 : UIScreenPixel
self.selectionNode.update(size: CGSize(width: width, height: height + highlightNodeOffset), theme: presentationData.theme, transition: transition)
transition.updateFrame(node: self.selectionNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -highlightNodeOffset), size: CGSize(width: width, height: height + highlightNodeOffset)))

View File

@ -24,6 +24,7 @@ final class PeerInfoScreenSwitchItem: PeerInfoScreenItem {
private final class PeerInfoScreenSwitchItemNode: PeerInfoScreenItemNode {
private let selectionNode: PeerInfoScreenSelectableBackgroundNode
private let maskNode: ASImageNode
private let iconNode: ASImageNode
private let textNode: ImmediateTextNode
private let switchNode: SwitchNode
@ -38,6 +39,9 @@ private final class PeerInfoScreenSwitchItemNode: PeerInfoScreenItemNode {
var bringToFrontForHighlightImpl: (() -> Void)?
self.selectionNode = PeerInfoScreenSelectableBackgroundNode(bringToFrontForHighlight: { bringToFrontForHighlightImpl?() })
self.maskNode = ASImageNode()
self.maskNode.isUserInteractionEnabled = false
self.iconNode = ASImageNode()
self.iconNode.isLayerBacked = true
self.iconNode.displaysAsynchronously = false
@ -61,6 +65,7 @@ private final class PeerInfoScreenSwitchItemNode: PeerInfoScreenItemNode {
self.addSubnode(self.bottomSeparatorNode)
self.addSubnode(self.selectionNode)
self.addSubnode(self.maskNode)
self.addSubnode(self.textNode)
self.addSubnode(self.switchNode)
self.addSubnode(self.activateArea)
@ -144,6 +149,14 @@ private final class PeerInfoScreenSwitchItemNode: PeerInfoScreenItemNode {
}
}
let hasCorners = safeInsets.left > 0.0 && (topItem == nil || bottomItem == nil)
let hasTopCorners = hasCorners && topItem == nil
let hasBottomCorners = hasCorners && bottomItem == nil
self.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil
self.maskNode.frame = CGRect(origin: CGPoint(x: safeInsets.left, y: 0.0), size: CGSize(width: width - safeInsets.left - safeInsets.right, height: height))
self.bottomSeparatorNode.isHidden = hasBottomCorners
let highlightNodeOffset: CGFloat = topItem == nil ? 0.0 : UIScreenPixel
self.selectionNode.update(size: CGSize(width: width, height: height + highlightNodeOffset), theme: presentationData.theme, transition: transition)
transition.updateFrame(node: self.selectionNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -highlightNodeOffset), size: CGSize(width: width, height: height + highlightNodeOffset)))

View File

@ -62,6 +62,7 @@ import PeerInfoAvatarListNode
import PasswordSetupUI
import CalendarMessageScreen
import TooltipUI
import _idx_Display_D7FBA2C5_ios_min9_0
protocol PeerInfoScreenItem: AnyObject {
var id: AnyHashable { get }
@ -115,6 +116,14 @@ private final class PeerInfoScreenItemSectionContainerNode: ASDisplayNode {
self.topSeparatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor
self.bottomSeparatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor
if safeInsets.left > 0.0 {
self.topSeparatorNode.isHidden = true
self.bottomSeparatorNode.isHidden = true
} else {
self.topSeparatorNode.isHidden = false
self.bottomSeparatorNode.isHidden = false
}
var contentHeight: CGFloat = 0.0
var contentWithBackgroundHeight: CGFloat = 0.0
var contentWithBackgroundOffset: CGFloat = 0.0
@ -1522,6 +1531,8 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
fileprivate let cachedDataPromise = Promise<CachedPeerData?>()
let scrollNode: ASScrollNode
private let leftOverlayNode: ASDisplayNode
private let rightOverlayNode: ASDisplayNode
let headerNode: PeerInfoHeaderNode
private var regularSections: [AnyHashable: PeerInfoScreenItemSectionContainerNode] = [:]
@ -1617,6 +1628,11 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
self.scrollNode.view.delaysContentTouches = false
self.scrollNode.canCancelAllTouchesInViews = true
self.leftOverlayNode = ASDisplayNode()
self.leftOverlayNode.isUserInteractionEnabled = false
self.rightOverlayNode = ASDisplayNode()
self.rightOverlayNode.isUserInteractionEnabled = false
self.headerNode = PeerInfoHeaderNode(context: context, avatarInitiallyExpanded: avatarInitiallyExpanded, isOpenedFromChat: isOpenedFromChat, isSettings: isSettings)
self.paneContainerNode = PeerInfoPaneContainerNode(context: context, updatedPresentationData: controller.updatedPresentationData, peerId: peerId, isMediaOnly: self.isMediaOnly)
@ -2242,6 +2258,14 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
self.scrollNode.view.delegate = self
self.addSubnode(self.scrollNode)
self.scrollNode.addSubnode(self.paneContainerNode)
self.leftOverlayNode.backgroundColor = self.presentationData.theme.list.blocksBackgroundColor
self.rightOverlayNode.backgroundColor = self.presentationData.theme.list.blocksBackgroundColor
self.addSubnode(self.leftOverlayNode)
self.addSubnode(self.rightOverlayNode)
self.addSubnode(self.headerNode)
self.scrollNode.view.isScrollEnabled = !self.isMediaOnly
@ -6270,6 +6294,8 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
self.presentationData = presentationData
self.backgroundColor = self.presentationData.theme.list.blocksBackgroundColor
self.leftOverlayNode.backgroundColor = self.presentationData.theme.list.blocksBackgroundColor
self.rightOverlayNode.backgroundColor = self.presentationData.theme.list.blocksBackgroundColor
self.updateNavigationExpansionPresentation(isExpanded: self.headerNode.isAvatarExpanded, animated: false)
@ -6312,8 +6338,22 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
contentHeight += navigationHeight
}
var currentInsets = UIEdgeInsets()
var validRegularSections: [AnyHashable] = []
if !self.isMediaOnly {
var insets = UIEdgeInsets()
let inset = max(16.0, floor((layout.size.width - 674.0) / 2.0))
if self.isSettings {
insets.left += inset
insets.right += inset
} else {
insets = layout.safeInsets
}
if !self.state.isEditing {
currentInsets = insets
}
let items = self.isSettings ? settingsItems(data: self.data, context: self.context, presentationData: self.presentationData, interaction: self.interaction, isExpanded: self.headerNode.isAvatarExpanded) : infoItems(data: self.data, context: self.context, presentationData: self.presentationData, interaction: self.interaction, nearbyPeerDistance: self.nearbyPeerDistance, callMessages: self.callMessages)
contentHeight += headerHeight
@ -6322,7 +6362,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
} else if let (section, _) = items.first, let sectionValue = section.base as? SettingsSection, sectionValue != .edit && !self.state.isEditing {
contentHeight += sectionSpacing
}
for (sectionId, sectionItems) in items {
validRegularSections.append(sectionId)
@ -6334,8 +6374,8 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
self.regularSections[sectionId] = sectionNode
self.scrollNode.addSubnode(sectionNode)
}
let sectionHeight = sectionNode.update(width: layout.size.width, safeInsets: layout.safeInsets, presentationData: self.presentationData, items: sectionItems, transition: transition)
let sectionHeight = sectionNode.update(width: layout.size.width, safeInsets: insets, presentationData: self.presentationData, items: sectionItems, transition: transition)
let sectionFrame = CGRect(origin: CGPoint(x: 0.0, y: contentHeight), size: CGSize(width: layout.size.width, height: sectionHeight))
if additive {
transition.updateFrameAdditive(node: sectionNode, frame: sectionFrame)
@ -6367,6 +6407,15 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
let editItems = self.isSettings ? settingsEditingItems(data: self.data, state: self.state, context: self.context, presentationData: self.presentationData, interaction: self.interaction) : editingItems(data: self.data, context: self.context, presentationData: self.presentationData, interaction: self.interaction)
for (sectionId, sectionItems) in editItems {
var insets = UIEdgeInsets()
let inset = max(16.0, floor((layout.size.width - 674.0) / 2.0))
insets.left += inset
insets.right += inset
if self.state.isEditing {
currentInsets = insets
}
validEditingSections.append(sectionId)
var wasAdded = false
@ -6380,7 +6429,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
self.scrollNode.addSubnode(sectionNode)
}
let sectionHeight = sectionNode.update(width: layout.size.width, safeInsets: layout.safeInsets, presentationData: self.presentationData, items: sectionItems, transition: transition)
let sectionHeight = sectionNode.update(width: layout.size.width, safeInsets: insets, presentationData: self.presentationData, items: sectionItems, transition: transition)
let sectionFrame = CGRect(origin: CGPoint(x: 0.0, y: contentHeight), size: CGSize(width: layout.size.width, height: sectionHeight))
if wasAdded {
@ -6508,6 +6557,10 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
self.scrollNode.view.contentOffset = restoreContentOffset
}
let relativeHeaderFrame = self.headerNode.view.convert(self.headerNode.bounds, to: self.view)
self.leftOverlayNode.frame = CGRect(x: 0.0, y: relativeHeaderFrame.maxY + UIScreenPixel - self.scrollNode.view.contentOffset.y, width: currentInsets.left, height: layout.size.height * 2.0)
self.rightOverlayNode.frame = CGRect(x: layout.size.width - currentInsets.right, y: relativeHeaderFrame.maxY + UIScreenPixel - self.scrollNode.view.contentOffset.y, width: currentInsets.right, height: layout.size.height * 2.0)
if additive {
transition.updateFrameAdditive(node: self.paneContainerNode, frame: paneContainerFrame)
} else {
@ -6637,6 +6690,10 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
return
}
let headerFrame = self.headerNode.view.convert(self.headerNode.bounds, to: self.view)
self.leftOverlayNode.frame = CGRect(x: 0.0, y: headerFrame.maxY + UIScreenPixel - scrollView.contentOffset.y, width: self.leftOverlayNode.frame.width, height: self.leftOverlayNode.frame.height)
self.rightOverlayNode.frame = CGRect(x: self.rightOverlayNode.frame.minX, y: headerFrame.maxY + UIScreenPixel - scrollView.contentOffset.y, width: self.rightOverlayNode.frame.width, height: self.rightOverlayNode.frame.height)
if !self.state.isEditing {
if self.canAddVelocity {
self.previousVelocityM1 = self.previousVelocity

View File

@ -31,6 +31,7 @@ final class PeerInfoScreenMultilineInputItem: PeerInfoScreenItem {
private final class PeerInfoScreenMultilineInputItemNode: PeerInfoScreenItemNode {
private let bottomSeparatorNode: ASDisplayNode
private let maskNode: ASImageNode
private var item: PeerInfoScreenMultilineInputItem?
private var itemNode: ItemListMultilineInputItemNode?
@ -39,6 +40,9 @@ private final class PeerInfoScreenMultilineInputItemNode: PeerInfoScreenItemNode
self.bottomSeparatorNode = ASDisplayNode()
self.bottomSeparatorNode.isLayerBacked = true
self.maskNode = ASImageNode()
self.maskNode.isUserInteractionEnabled = false
super.init()
self.clipsToBounds = true
@ -97,6 +101,18 @@ private final class PeerInfoScreenMultilineInputItemNode: PeerInfoScreenItemNode
separatorInset += 49.0
}
let hasCorners = safeInsets.left > 0.0 && (topItem == nil || bottomItem == nil)
let hasTopCorners = hasCorners && topItem == nil
let hasBottomCorners = hasCorners && bottomItem == nil
self.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil
self.maskNode.frame = CGRect(origin: CGPoint(x: safeInsets.left, y: 0.0), size: CGSize(width: width - safeInsets.left - safeInsets.right, height: height))
self.bottomSeparatorNode.isHidden = hasBottomCorners
if self.maskNode.supernode == nil {
self.addSubnode(self.maskNode)
}
transition.updateFrame(node: self.bottomSeparatorNode, frame: CGRect(origin: CGPoint(x: separatorInset, y: height - UIScreenPixel), size: CGSize(width: width - sideInset, height: UIScreenPixel)))
transition.updateAlpha(node: self.bottomSeparatorNode, alpha: bottomItem == nil ? 0.0 : 1.0)