├── .gitignore ├── .swiftpm └── xcode │ └── package.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── Assets ├── drawer_dismissal_broken.gif ├── drawer_dismissal_fixed.gif ├── fade_in.gif ├── fade_in_issue.gif ├── menu_appearance_animation.gif ├── menu_appearance_animation_assembled.gif ├── menu_selection_animation.gif ├── menu_selection_transition_effect.gif └── preview.gif ├── Example ├── Example.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Example │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── 1.png │ │ └── Contents.json │ ├── Contents.json │ ├── color │ │ ├── Contents.json │ │ ├── background.colorset │ │ │ └── Contents.json │ │ ├── controlBackground.colorset │ │ │ └── Contents.json │ │ ├── controlForeground.colorset │ │ │ └── Contents.json │ │ ├── offlineStatus.colorset │ │ │ └── Contents.json │ │ ├── onlineStatus.colorset │ │ │ └── Contents.json │ │ ├── selectionBackground.colorset │ │ │ └── Contents.json │ │ ├── selectionForeground.colorset │ │ │ └── Contents.json │ │ └── text.colorset │ │ │ └── Contents.json │ ├── icon │ │ ├── Contents.json │ │ ├── archive.imageset │ │ │ ├── Contents.json │ │ │ └── archive 1.pdf │ │ ├── colorScheme │ │ │ ├── Contents.json │ │ │ ├── dark.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── moon 1.pdf │ │ │ └── light.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── sun (1) 1.pdf │ │ ├── dashboard.imageset │ │ │ ├── Contents.json │ │ │ └── layout-dashboard 1.pdf │ │ ├── departments.imageset │ │ │ ├── Contents.json │ │ │ └── brand-asana 1.pdf │ │ ├── employees.imageset │ │ │ ├── Contents.json │ │ │ └── users 1.pdf │ │ ├── home.imageset │ │ │ ├── Contents.json │ │ │ └── home 1.pdf │ │ ├── logout.imageset │ │ │ ├── Contents.json │ │ │ └── logout (1) 1.pdf │ │ ├── notifications.imageset │ │ │ ├── Contents.json │ │ │ └── bell 1.pdf │ │ ├── performanceReview.imageset │ │ │ ├── Contents.json │ │ │ └── chart-dots-3 1.pdf │ │ └── projects.imageset │ │ │ ├── Contents.json │ │ │ └── folders 1.pdf │ └── placeholder │ │ ├── Contents.json │ │ └── user.imageset │ │ ├── Contents.json │ │ └── Ellipse 87.pdf │ ├── ColorSchemePicker │ ├── ColorSchemeButtonStyle.swift │ └── ColorSchemePicker.swift │ ├── ContentView.swift │ ├── ExampleApp.swift │ ├── Info.plist │ ├── Menu │ ├── Appearance │ │ ├── MenuAppearance.swift │ │ └── MenuAppearanceEnvironmentKey.swift │ ├── MenuBackground.swift │ ├── MenuItem.swift │ ├── MenuItemGeometryPreferenceKey.swift │ ├── MenuItemList.swift │ ├── MenuView.swift │ ├── Style │ │ ├── MenuButtonStyle.swift │ │ └── MenuLabelStyle.swift │ ├── UserHeader.swift │ └── UserImage.swift │ ├── Misc │ ├── Extensions │ │ ├── Binding+Default.swift │ │ ├── ColorScheme+Toggle.swift │ │ ├── Label+ColorScheme.swift │ │ ├── Label+Default.swift │ │ ├── Label+MenuItem.swift │ │ └── View+OverrideColorScheme.swift │ ├── Layout │ │ └── Dimension.swift │ ├── Preferences │ │ └── AnchorPreferenceKey.swift │ ├── Transition │ │ └── MenuBackgroundTransition.swift │ └── Typography │ │ └── TypographyStyle.swift │ ├── Model │ └── User.swift │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ └── Resources │ └── Fonts │ ├── Gilroy-Bold.ttf │ ├── Gilroy-Medium.ttf │ ├── Gilroy-Regular.ttf │ └── Gilroy-Semibold.ttf ├── Package.swift ├── README.md └── Sources └── Drawer ├── Drawer.swift └── DrawerOpenedKey.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | tmp/ 9 | 10 | ## Various settings 11 | *.pbxuser 12 | !default.pbxuser 13 | *.mode1v3 14 | !default.mode1v3 15 | *.mode2v3 16 | !default.mode2v3 17 | *.perspectivev3 18 | !default.perspectivev3 19 | xcuserdata/ 20 | 21 | ## Other 22 | *.moved-aside 23 | *.xccheckout 24 | *.xcscmblueprint 25 | .DS_Store 26 | *.swp 27 | *~.nib 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Directories potentially created on remote AFP share 32 | .AppleDB 33 | .AppleDesktop 34 | Network Trash Folder 35 | Temporary Items 36 | .apdisk 37 | 38 | # Thumbnails 39 | ._* 40 | 41 | # Files that might appear in the root of a volume 42 | .DocumentRevisions-V100 43 | .fseventsd 44 | .Spotlight-V100 45 | .TemporaryItems 46 | .Trashes 47 | .VolumeIcon.icns 48 | .com.apple.timemachine.donotpresent 49 | 50 | ## Obj-C/Swift specific 51 | *.hmap 52 | *.ipa 53 | *.dSYM.zip 54 | *.dSYM 55 | 56 | ## Playgrounds 57 | timeline.xctimeline 58 | playground.xcworkspace 59 | 60 | # Swift Package Manager 61 | # 62 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 63 | # Packages/ 64 | # Package.pins 65 | # Package.resolved 66 | .build/ 67 | 68 | # CocoaPods 69 | # 70 | # We recommend against adding the Pods directory to your .gitignore. However 71 | # you should judge for yourself, the pros and cons are mentioned at: 72 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 73 | # 74 | Pods/ 75 | Pods/CocoaPodsKeys 76 | Pods/Pods.xcodeproj/project.xcworkspace 77 | 78 | # Carthage 79 | # 80 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 81 | # Carthage/Checkouts 82 | Carthage/Build 83 | 84 | # fastlane 85 | # 86 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 87 | # screenshots whenever they are needed. 88 | # For more information about the recommended setup visit: 89 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 90 | fastlane/report.xml 91 | fastlane/Preview.html 92 | fastlane/screenshots/**/*.png 93 | fastlane/test_output 94 | 95 | ## GitLab CI 96 | .bundle/* 97 | !.bundle/config 98 | Vendor/bundle/ -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Assets/drawer_dismissal_broken.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/drawer_dismissal_broken.gif -------------------------------------------------------------------------------- /Assets/drawer_dismissal_fixed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/drawer_dismissal_fixed.gif -------------------------------------------------------------------------------- /Assets/fade_in.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/fade_in.gif -------------------------------------------------------------------------------- /Assets/fade_in_issue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/fade_in_issue.gif -------------------------------------------------------------------------------- /Assets/menu_appearance_animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/menu_appearance_animation.gif -------------------------------------------------------------------------------- /Assets/menu_appearance_animation_assembled.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/menu_appearance_animation_assembled.gif -------------------------------------------------------------------------------- /Assets/menu_selection_animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/menu_selection_animation.gif -------------------------------------------------------------------------------- /Assets/menu_selection_transition_effect.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/menu_selection_transition_effect.gif -------------------------------------------------------------------------------- /Assets/preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Assets/preview.gif -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | E8256A2329776AA90070E510 /* MenuItemGeometryPreferenceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8256A2229776AA90070E510 /* MenuItemGeometryPreferenceKey.swift */; }; 11 | E8256A26297848F50070E510 /* MenuBackgroundTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8256A25297848F50070E510 /* MenuBackgroundTransition.swift */; }; 12 | E832B1F129533B74002E3462 /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E832B1F029533B74002E3462 /* ExampleApp.swift */; }; 13 | E832B1F329533B74002E3462 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E832B1F229533B74002E3462 /* ContentView.swift */; }; 14 | E832B1F529533B76002E3462 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E832B1F429533B76002E3462 /* Assets.xcassets */; }; 15 | E832B1F829533B76002E3462 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E832B1F729533B76002E3462 /* Preview Assets.xcassets */; }; 16 | E832B202295351F9002E3462 /* Drawer in Frameworks */ = {isa = PBXBuildFile; productRef = E832B201295351F9002E3462 /* Drawer */; }; 17 | E8E214D92970539A00DF7962 /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E214D82970539A00DF7962 /* MenuItem.swift */; }; 18 | E8E214DC297053D400DF7962 /* MenuLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E214DB297053D400DF7962 /* MenuLabelStyle.swift */; }; 19 | E8E214E42970555700DF7962 /* Gilroy-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E8E214E02970555700DF7962 /* Gilroy-Medium.ttf */; }; 20 | E8E214E52970555700DF7962 /* Gilroy-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E8E214E12970555700DF7962 /* Gilroy-Regular.ttf */; }; 21 | E8E214E62970555700DF7962 /* Gilroy-Semibold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E8E214E22970555700DF7962 /* Gilroy-Semibold.ttf */; }; 22 | E8E214E72970555700DF7962 /* Gilroy-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E8E214E32970555700DF7962 /* Gilroy-Bold.ttf */; }; 23 | E8E57C4029762572006B3A6C /* MenuItemList.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E57C3F29762572006B3A6C /* MenuItemList.swift */; }; 24 | E8E57C4229762591006B3A6C /* MenuButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E57C4129762591006B3A6C /* MenuButtonStyle.swift */; }; 25 | E8E57C4429762B3B006B3A6C /* MenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E57C4329762B3B006B3A6C /* MenuView.swift */; }; 26 | E8E57C4629762B76006B3A6C /* MenuBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E57C4529762B76006B3A6C /* MenuBackground.swift */; }; 27 | E8FEEA8629704DCD001FF8AF /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA8529704DCD001FF8AF /* User.swift */; }; 28 | E8FEEA9529704F78001FF8AF /* Dimension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA8B29704F77001FF8AF /* Dimension.swift */; }; 29 | E8FEEA9629704F78001FF8AF /* View+OverrideColorScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA8E29704F77001FF8AF /* View+OverrideColorScheme.swift */; }; 30 | E8FEEA9729704F78001FF8AF /* ColorScheme+Toggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA8F29704F77001FF8AF /* ColorScheme+Toggle.swift */; }; 31 | E8FEEA9829704F78001FF8AF /* Binding+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA9029704F77001FF8AF /* Binding+Default.swift */; }; 32 | E8FEEA9929704F78001FF8AF /* TypographyStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA9229704F77001FF8AF /* TypographyStyle.swift */; }; 33 | E8FEEA9A29704F78001FF8AF /* AnchorPreferenceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA9329704F77001FF8AF /* AnchorPreferenceKey.swift */; }; 34 | E8FEEAAB29704F90001FF8AF /* ColorSchemeButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA9C29704F90001FF8AF /* ColorSchemeButtonStyle.swift */; }; 35 | E8FEEAAC29704F90001FF8AF /* Label+ColorScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA9D29704F90001FF8AF /* Label+ColorScheme.swift */; }; 36 | E8FEEAAD29704F90001FF8AF /* ColorSchemePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEA9E29704F90001FF8AF /* ColorSchemePicker.swift */; }; 37 | E8FEEAAE29704F90001FF8AF /* UserHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEAA029704F90001FF8AF /* UserHeader.swift */; }; 38 | E8FEEAAF29704F90001FF8AF /* MenuAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEAA129704F90001FF8AF /* MenuAppearance.swift */; }; 39 | E8FEEAB329704F90001FF8AF /* Label+MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEAA529704F90001FF8AF /* Label+MenuItem.swift */; }; 40 | E8FEEAB429704F90001FF8AF /* UserImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEAA629704F90001FF8AF /* UserImage.swift */; }; 41 | E8FEEABA29704FF4001FF8AF /* Label+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEAB929704FF4001FF8AF /* Label+Default.swift */; }; 42 | E8FEEABC2970505A001FF8AF /* MenuAppearanceEnvironmentKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FEEABB2970505A001FF8AF /* MenuAppearanceEnvironmentKey.swift */; }; 43 | /* End PBXBuildFile section */ 44 | 45 | /* Begin PBXFileReference section */ 46 | E8256A2229776AA90070E510 /* MenuItemGeometryPreferenceKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemGeometryPreferenceKey.swift; sourceTree = ""; }; 47 | E8256A25297848F50070E510 /* MenuBackgroundTransition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBackgroundTransition.swift; sourceTree = ""; }; 48 | E832B1ED29533B74002E3462 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | E832B1F029533B74002E3462 /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; 50 | E832B1F229533B74002E3462 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 51 | E832B1F429533B76002E3462 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 52 | E832B1F729533B76002E3462 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 53 | E832B1FF29535151002E3462 /* Drawer */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Drawer; path = ..; sourceTree = ""; }; 54 | E832B2302953C6E7002E3462 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 55 | E8E214D82970539A00DF7962 /* MenuItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuItem.swift; sourceTree = ""; }; 56 | E8E214DB297053D400DF7962 /* MenuLabelStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuLabelStyle.swift; sourceTree = ""; }; 57 | E8E214E02970555700DF7962 /* Gilroy-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gilroy-Medium.ttf"; sourceTree = ""; }; 58 | E8E214E12970555700DF7962 /* Gilroy-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gilroy-Regular.ttf"; sourceTree = ""; }; 59 | E8E214E22970555700DF7962 /* Gilroy-Semibold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gilroy-Semibold.ttf"; sourceTree = ""; }; 60 | E8E214E32970555700DF7962 /* Gilroy-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gilroy-Bold.ttf"; sourceTree = ""; }; 61 | E8E57C3F29762572006B3A6C /* MenuItemList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuItemList.swift; sourceTree = ""; }; 62 | E8E57C4129762591006B3A6C /* MenuButtonStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuButtonStyle.swift; sourceTree = ""; }; 63 | E8E57C4329762B3B006B3A6C /* MenuView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuView.swift; sourceTree = ""; }; 64 | E8E57C4529762B76006B3A6C /* MenuBackground.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuBackground.swift; sourceTree = ""; }; 65 | E8FEEA8529704DCD001FF8AF /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; 66 | E8FEEA8B29704F77001FF8AF /* Dimension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Dimension.swift; sourceTree = ""; }; 67 | E8FEEA8E29704F77001FF8AF /* View+OverrideColorScheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "View+OverrideColorScheme.swift"; sourceTree = ""; }; 68 | E8FEEA8F29704F77001FF8AF /* ColorScheme+Toggle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ColorScheme+Toggle.swift"; sourceTree = ""; }; 69 | E8FEEA9029704F77001FF8AF /* Binding+Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Binding+Default.swift"; sourceTree = ""; }; 70 | E8FEEA9229704F77001FF8AF /* TypographyStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TypographyStyle.swift; sourceTree = ""; }; 71 | E8FEEA9329704F77001FF8AF /* AnchorPreferenceKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnchorPreferenceKey.swift; sourceTree = ""; }; 72 | E8FEEA9C29704F90001FF8AF /* ColorSchemeButtonStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorSchemeButtonStyle.swift; sourceTree = ""; }; 73 | E8FEEA9D29704F90001FF8AF /* Label+ColorScheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Label+ColorScheme.swift"; sourceTree = ""; }; 74 | E8FEEA9E29704F90001FF8AF /* ColorSchemePicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorSchemePicker.swift; sourceTree = ""; }; 75 | E8FEEAA029704F90001FF8AF /* UserHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserHeader.swift; sourceTree = ""; }; 76 | E8FEEAA129704F90001FF8AF /* MenuAppearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuAppearance.swift; sourceTree = ""; }; 77 | E8FEEAA529704F90001FF8AF /* Label+MenuItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Label+MenuItem.swift"; sourceTree = ""; }; 78 | E8FEEAA629704F90001FF8AF /* UserImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserImage.swift; sourceTree = ""; }; 79 | E8FEEAB929704FF4001FF8AF /* Label+Default.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Label+Default.swift"; sourceTree = ""; }; 80 | E8FEEABB2970505A001FF8AF /* MenuAppearanceEnvironmentKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuAppearanceEnvironmentKey.swift; sourceTree = ""; }; 81 | /* End PBXFileReference section */ 82 | 83 | /* Begin PBXFrameworksBuildPhase section */ 84 | E832B1EA29533B74002E3462 /* Frameworks */ = { 85 | isa = PBXFrameworksBuildPhase; 86 | buildActionMask = 2147483647; 87 | files = ( 88 | E832B202295351F9002E3462 /* Drawer in Frameworks */, 89 | ); 90 | runOnlyForDeploymentPostprocessing = 0; 91 | }; 92 | /* End PBXFrameworksBuildPhase section */ 93 | 94 | /* Begin PBXGroup section */ 95 | E8256A24297848DF0070E510 /* Transition */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | E8256A25297848F50070E510 /* MenuBackgroundTransition.swift */, 99 | ); 100 | path = Transition; 101 | sourceTree = ""; 102 | }; 103 | E832B1E429533B74002E3462 = { 104 | isa = PBXGroup; 105 | children = ( 106 | E832B1FE29535151002E3462 /* Packages */, 107 | E832B1EF29533B74002E3462 /* Example */, 108 | E832B1EE29533B74002E3462 /* Products */, 109 | E832B200295351F9002E3462 /* Frameworks */, 110 | ); 111 | sourceTree = ""; 112 | }; 113 | E832B1EE29533B74002E3462 /* Products */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | E832B1ED29533B74002E3462 /* Example.app */, 117 | ); 118 | name = Products; 119 | sourceTree = ""; 120 | }; 121 | E832B1EF29533B74002E3462 /* Example */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | E8E214DE2970555700DF7962 /* Resources */, 125 | E8FEEA9B29704F90001FF8AF /* ColorSchemePicker */, 126 | E8FEEA9F29704F90001FF8AF /* Menu */, 127 | E8FEEA8729704F77001FF8AF /* Misc */, 128 | E8FEEA8429704DB9001FF8AF /* Model */, 129 | E832B2302953C6E7002E3462 /* Info.plist */, 130 | E832B1F029533B74002E3462 /* ExampleApp.swift */, 131 | E832B1F229533B74002E3462 /* ContentView.swift */, 132 | E832B1F429533B76002E3462 /* Assets.xcassets */, 133 | E832B1F629533B76002E3462 /* Preview Content */, 134 | ); 135 | path = Example; 136 | sourceTree = ""; 137 | }; 138 | E832B1F629533B76002E3462 /* Preview Content */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | E832B1F729533B76002E3462 /* Preview Assets.xcassets */, 142 | ); 143 | path = "Preview Content"; 144 | sourceTree = ""; 145 | }; 146 | E832B1FE29535151002E3462 /* Packages */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | E832B1FF29535151002E3462 /* Drawer */, 150 | ); 151 | name = Packages; 152 | sourceTree = ""; 153 | }; 154 | E832B200295351F9002E3462 /* Frameworks */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | ); 158 | name = Frameworks; 159 | sourceTree = ""; 160 | }; 161 | E8E214DA297053B700DF7962 /* Style */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | E8E57C4129762591006B3A6C /* MenuButtonStyle.swift */, 165 | E8E214DB297053D400DF7962 /* MenuLabelStyle.swift */, 166 | ); 167 | path = Style; 168 | sourceTree = ""; 169 | }; 170 | E8E214DD2970540000DF7962 /* Appearance */ = { 171 | isa = PBXGroup; 172 | children = ( 173 | E8FEEAA129704F90001FF8AF /* MenuAppearance.swift */, 174 | E8FEEABB2970505A001FF8AF /* MenuAppearanceEnvironmentKey.swift */, 175 | ); 176 | path = Appearance; 177 | sourceTree = ""; 178 | }; 179 | E8E214DE2970555700DF7962 /* Resources */ = { 180 | isa = PBXGroup; 181 | children = ( 182 | E8E214DF2970555700DF7962 /* Fonts */, 183 | ); 184 | path = Resources; 185 | sourceTree = ""; 186 | }; 187 | E8E214DF2970555700DF7962 /* Fonts */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | E8E214E02970555700DF7962 /* Gilroy-Medium.ttf */, 191 | E8E214E12970555700DF7962 /* Gilroy-Regular.ttf */, 192 | E8E214E22970555700DF7962 /* Gilroy-Semibold.ttf */, 193 | E8E214E32970555700DF7962 /* Gilroy-Bold.ttf */, 194 | ); 195 | path = Fonts; 196 | sourceTree = ""; 197 | }; 198 | E8FEEA8429704DB9001FF8AF /* Model */ = { 199 | isa = PBXGroup; 200 | children = ( 201 | E8FEEA8529704DCD001FF8AF /* User.swift */, 202 | ); 203 | path = Model; 204 | sourceTree = ""; 205 | }; 206 | E8FEEA8729704F77001FF8AF /* Misc */ = { 207 | isa = PBXGroup; 208 | children = ( 209 | E8256A24297848DF0070E510 /* Transition */, 210 | E8FEEABD2970508B001FF8AF /* Preferences */, 211 | E8FEEA8A29704F77001FF8AF /* Layout */, 212 | E8FEEA8D29704F77001FF8AF /* Extensions */, 213 | E8FEEA9129704F77001FF8AF /* Typography */, 214 | ); 215 | path = Misc; 216 | sourceTree = ""; 217 | }; 218 | E8FEEA8A29704F77001FF8AF /* Layout */ = { 219 | isa = PBXGroup; 220 | children = ( 221 | E8FEEA8B29704F77001FF8AF /* Dimension.swift */, 222 | ); 223 | path = Layout; 224 | sourceTree = ""; 225 | }; 226 | E8FEEA8D29704F77001FF8AF /* Extensions */ = { 227 | isa = PBXGroup; 228 | children = ( 229 | E8FEEAA529704F90001FF8AF /* Label+MenuItem.swift */, 230 | E8FEEAB929704FF4001FF8AF /* Label+Default.swift */, 231 | E8FEEA9D29704F90001FF8AF /* Label+ColorScheme.swift */, 232 | E8FEEA8E29704F77001FF8AF /* View+OverrideColorScheme.swift */, 233 | E8FEEA8F29704F77001FF8AF /* ColorScheme+Toggle.swift */, 234 | E8FEEA9029704F77001FF8AF /* Binding+Default.swift */, 235 | ); 236 | path = Extensions; 237 | sourceTree = ""; 238 | }; 239 | E8FEEA9129704F77001FF8AF /* Typography */ = { 240 | isa = PBXGroup; 241 | children = ( 242 | E8FEEA9229704F77001FF8AF /* TypographyStyle.swift */, 243 | ); 244 | path = Typography; 245 | sourceTree = ""; 246 | }; 247 | E8FEEA9B29704F90001FF8AF /* ColorSchemePicker */ = { 248 | isa = PBXGroup; 249 | children = ( 250 | E8FEEA9C29704F90001FF8AF /* ColorSchemeButtonStyle.swift */, 251 | E8FEEA9E29704F90001FF8AF /* ColorSchemePicker.swift */, 252 | ); 253 | path = ColorSchemePicker; 254 | sourceTree = ""; 255 | }; 256 | E8FEEA9F29704F90001FF8AF /* Menu */ = { 257 | isa = PBXGroup; 258 | children = ( 259 | E8E214DD2970540000DF7962 /* Appearance */, 260 | E8E214DA297053B700DF7962 /* Style */, 261 | E8FEEAA029704F90001FF8AF /* UserHeader.swift */, 262 | E8E57C3F29762572006B3A6C /* MenuItemList.swift */, 263 | E8256A2229776AA90070E510 /* MenuItemGeometryPreferenceKey.swift */, 264 | E8E57C4329762B3B006B3A6C /* MenuView.swift */, 265 | E8E57C4529762B76006B3A6C /* MenuBackground.swift */, 266 | E8E214D82970539A00DF7962 /* MenuItem.swift */, 267 | E8FEEAA629704F90001FF8AF /* UserImage.swift */, 268 | ); 269 | path = Menu; 270 | sourceTree = ""; 271 | }; 272 | E8FEEABD2970508B001FF8AF /* Preferences */ = { 273 | isa = PBXGroup; 274 | children = ( 275 | E8FEEA9329704F77001FF8AF /* AnchorPreferenceKey.swift */, 276 | ); 277 | path = Preferences; 278 | sourceTree = ""; 279 | }; 280 | /* End PBXGroup section */ 281 | 282 | /* Begin PBXNativeTarget section */ 283 | E832B1EC29533B74002E3462 /* Example */ = { 284 | isa = PBXNativeTarget; 285 | buildConfigurationList = E832B1FB29533B76002E3462 /* Build configuration list for PBXNativeTarget "Example" */; 286 | buildPhases = ( 287 | E832B1E929533B74002E3462 /* Sources */, 288 | E832B1EA29533B74002E3462 /* Frameworks */, 289 | E832B1EB29533B74002E3462 /* Resources */, 290 | ); 291 | buildRules = ( 292 | ); 293 | dependencies = ( 294 | ); 295 | name = Example; 296 | packageProductDependencies = ( 297 | E832B201295351F9002E3462 /* Drawer */, 298 | ); 299 | productName = Example; 300 | productReference = E832B1ED29533B74002E3462 /* Example.app */; 301 | productType = "com.apple.product-type.application"; 302 | }; 303 | /* End PBXNativeTarget section */ 304 | 305 | /* Begin PBXProject section */ 306 | E832B1E529533B74002E3462 /* Project object */ = { 307 | isa = PBXProject; 308 | attributes = { 309 | BuildIndependentTargetsInParallel = 1; 310 | LastSwiftUpdateCheck = 1420; 311 | LastUpgradeCheck = 1420; 312 | TargetAttributes = { 313 | E832B1EC29533B74002E3462 = { 314 | CreatedOnToolsVersion = 14.2; 315 | }; 316 | }; 317 | }; 318 | buildConfigurationList = E832B1E829533B74002E3462 /* Build configuration list for PBXProject "Example" */; 319 | compatibilityVersion = "Xcode 14.0"; 320 | developmentRegion = en; 321 | hasScannedForEncodings = 0; 322 | knownRegions = ( 323 | en, 324 | Base, 325 | ); 326 | mainGroup = E832B1E429533B74002E3462; 327 | productRefGroup = E832B1EE29533B74002E3462 /* Products */; 328 | projectDirPath = ""; 329 | projectRoot = ""; 330 | targets = ( 331 | E832B1EC29533B74002E3462 /* Example */, 332 | ); 333 | }; 334 | /* End PBXProject section */ 335 | 336 | /* Begin PBXResourcesBuildPhase section */ 337 | E832B1EB29533B74002E3462 /* Resources */ = { 338 | isa = PBXResourcesBuildPhase; 339 | buildActionMask = 2147483647; 340 | files = ( 341 | E832B1F829533B76002E3462 /* Preview Assets.xcassets in Resources */, 342 | E8E214E62970555700DF7962 /* Gilroy-Semibold.ttf in Resources */, 343 | E8E214E42970555700DF7962 /* Gilroy-Medium.ttf in Resources */, 344 | E8E214E72970555700DF7962 /* Gilroy-Bold.ttf in Resources */, 345 | E832B1F529533B76002E3462 /* Assets.xcassets in Resources */, 346 | E8E214E52970555700DF7962 /* Gilroy-Regular.ttf in Resources */, 347 | ); 348 | runOnlyForDeploymentPostprocessing = 0; 349 | }; 350 | /* End PBXResourcesBuildPhase section */ 351 | 352 | /* Begin PBXSourcesBuildPhase section */ 353 | E832B1E929533B74002E3462 /* Sources */ = { 354 | isa = PBXSourcesBuildPhase; 355 | buildActionMask = 2147483647; 356 | files = ( 357 | E8E57C4429762B3B006B3A6C /* MenuView.swift in Sources */, 358 | E8FEEAB429704F90001FF8AF /* UserImage.swift in Sources */, 359 | E8E214DC297053D400DF7962 /* MenuLabelStyle.swift in Sources */, 360 | E8FEEABA29704FF4001FF8AF /* Label+Default.swift in Sources */, 361 | E8FEEAAD29704F90001FF8AF /* ColorSchemePicker.swift in Sources */, 362 | E832B1F329533B74002E3462 /* ContentView.swift in Sources */, 363 | E8FEEAAF29704F90001FF8AF /* MenuAppearance.swift in Sources */, 364 | E8256A2329776AA90070E510 /* MenuItemGeometryPreferenceKey.swift in Sources */, 365 | E8FEEAAB29704F90001FF8AF /* ColorSchemeButtonStyle.swift in Sources */, 366 | E8FEEA9729704F78001FF8AF /* ColorScheme+Toggle.swift in Sources */, 367 | E8FEEA9929704F78001FF8AF /* TypographyStyle.swift in Sources */, 368 | E8E57C4029762572006B3A6C /* MenuItemList.swift in Sources */, 369 | E8FEEA9829704F78001FF8AF /* Binding+Default.swift in Sources */, 370 | E8E57C4629762B76006B3A6C /* MenuBackground.swift in Sources */, 371 | E8FEEABC2970505A001FF8AF /* MenuAppearanceEnvironmentKey.swift in Sources */, 372 | E832B1F129533B74002E3462 /* ExampleApp.swift in Sources */, 373 | E8FEEA9529704F78001FF8AF /* Dimension.swift in Sources */, 374 | E8FEEA8629704DCD001FF8AF /* User.swift in Sources */, 375 | E8FEEAAC29704F90001FF8AF /* Label+ColorScheme.swift in Sources */, 376 | E8E57C4229762591006B3A6C /* MenuButtonStyle.swift in Sources */, 377 | E8FEEA9629704F78001FF8AF /* View+OverrideColorScheme.swift in Sources */, 378 | E8FEEA9A29704F78001FF8AF /* AnchorPreferenceKey.swift in Sources */, 379 | E8FEEAAE29704F90001FF8AF /* UserHeader.swift in Sources */, 380 | E8256A26297848F50070E510 /* MenuBackgroundTransition.swift in Sources */, 381 | E8FEEAB329704F90001FF8AF /* Label+MenuItem.swift in Sources */, 382 | E8E214D92970539A00DF7962 /* MenuItem.swift in Sources */, 383 | ); 384 | runOnlyForDeploymentPostprocessing = 0; 385 | }; 386 | /* End PBXSourcesBuildPhase section */ 387 | 388 | /* Begin XCBuildConfiguration section */ 389 | E832B1F929533B76002E3462 /* Debug */ = { 390 | isa = XCBuildConfiguration; 391 | buildSettings = { 392 | ALWAYS_SEARCH_USER_PATHS = NO; 393 | CLANG_ANALYZER_NONNULL = YES; 394 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 395 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 396 | CLANG_ENABLE_MODULES = YES; 397 | CLANG_ENABLE_OBJC_ARC = YES; 398 | CLANG_ENABLE_OBJC_WEAK = YES; 399 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 400 | CLANG_WARN_BOOL_CONVERSION = YES; 401 | CLANG_WARN_COMMA = YES; 402 | CLANG_WARN_CONSTANT_CONVERSION = YES; 403 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 404 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 405 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 406 | CLANG_WARN_EMPTY_BODY = YES; 407 | CLANG_WARN_ENUM_CONVERSION = YES; 408 | CLANG_WARN_INFINITE_RECURSION = YES; 409 | CLANG_WARN_INT_CONVERSION = YES; 410 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 411 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 412 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 413 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 414 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 415 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 416 | CLANG_WARN_STRICT_PROTOTYPES = YES; 417 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 418 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 419 | CLANG_WARN_UNREACHABLE_CODE = YES; 420 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 421 | COPY_PHASE_STRIP = NO; 422 | DEBUG_INFORMATION_FORMAT = dwarf; 423 | ENABLE_STRICT_OBJC_MSGSEND = YES; 424 | ENABLE_TESTABILITY = YES; 425 | GCC_C_LANGUAGE_STANDARD = gnu11; 426 | GCC_DYNAMIC_NO_PIC = NO; 427 | GCC_NO_COMMON_BLOCKS = YES; 428 | GCC_OPTIMIZATION_LEVEL = 0; 429 | GCC_PREPROCESSOR_DEFINITIONS = ( 430 | "DEBUG=1", 431 | "$(inherited)", 432 | ); 433 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 434 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 435 | GCC_WARN_UNDECLARED_SELECTOR = YES; 436 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 437 | GCC_WARN_UNUSED_FUNCTION = YES; 438 | GCC_WARN_UNUSED_VARIABLE = YES; 439 | IPHONEOS_DEPLOYMENT_TARGET = 16.0; 440 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 441 | MTL_FAST_MATH = YES; 442 | ONLY_ACTIVE_ARCH = YES; 443 | SDKROOT = iphoneos; 444 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 445 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 446 | }; 447 | name = Debug; 448 | }; 449 | E832B1FA29533B76002E3462 /* Release */ = { 450 | isa = XCBuildConfiguration; 451 | buildSettings = { 452 | ALWAYS_SEARCH_USER_PATHS = NO; 453 | CLANG_ANALYZER_NONNULL = YES; 454 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 455 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 456 | CLANG_ENABLE_MODULES = YES; 457 | CLANG_ENABLE_OBJC_ARC = YES; 458 | CLANG_ENABLE_OBJC_WEAK = YES; 459 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 460 | CLANG_WARN_BOOL_CONVERSION = YES; 461 | CLANG_WARN_COMMA = YES; 462 | CLANG_WARN_CONSTANT_CONVERSION = YES; 463 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 464 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 465 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 466 | CLANG_WARN_EMPTY_BODY = YES; 467 | CLANG_WARN_ENUM_CONVERSION = YES; 468 | CLANG_WARN_INFINITE_RECURSION = YES; 469 | CLANG_WARN_INT_CONVERSION = YES; 470 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 471 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 472 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 473 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 474 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 475 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 476 | CLANG_WARN_STRICT_PROTOTYPES = YES; 477 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 478 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 479 | CLANG_WARN_UNREACHABLE_CODE = YES; 480 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 481 | COPY_PHASE_STRIP = NO; 482 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 483 | ENABLE_NS_ASSERTIONS = NO; 484 | ENABLE_STRICT_OBJC_MSGSEND = YES; 485 | GCC_C_LANGUAGE_STANDARD = gnu11; 486 | GCC_NO_COMMON_BLOCKS = YES; 487 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 488 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 489 | GCC_WARN_UNDECLARED_SELECTOR = YES; 490 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 491 | GCC_WARN_UNUSED_FUNCTION = YES; 492 | GCC_WARN_UNUSED_VARIABLE = YES; 493 | IPHONEOS_DEPLOYMENT_TARGET = 16.0; 494 | MTL_ENABLE_DEBUG_INFO = NO; 495 | MTL_FAST_MATH = YES; 496 | SDKROOT = iphoneos; 497 | SWIFT_COMPILATION_MODE = wholemodule; 498 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 499 | VALIDATE_PRODUCT = YES; 500 | }; 501 | name = Release; 502 | }; 503 | E832B1FC29533B76002E3462 /* Debug */ = { 504 | isa = XCBuildConfiguration; 505 | buildSettings = { 506 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 507 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 508 | CODE_SIGN_STYLE = Automatic; 509 | CURRENT_PROJECT_VERSION = 1; 510 | DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; 511 | DEVELOPMENT_TEAM = NU4532QGA8; 512 | ENABLE_PREVIEWS = YES; 513 | GENERATE_INFOPLIST_FILE = YES; 514 | INFOPLIST_FILE = Example/Info.plist; 515 | INFOPLIST_KEY_CFBundleDisplayName = "Side Menu"; 516 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 517 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 518 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 519 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 520 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 521 | IPHONEOS_DEPLOYMENT_TARGET = 16.0; 522 | LD_RUNPATH_SEARCH_PATHS = ( 523 | "$(inherited)", 524 | "@executable_path/Frameworks", 525 | ); 526 | MARKETING_VERSION = 1.0; 527 | PRODUCT_BUNDLE_IDENTIFIER = com.lanars.sidemenu; 528 | PRODUCT_NAME = "$(TARGET_NAME)"; 529 | SWIFT_EMIT_LOC_STRINGS = YES; 530 | SWIFT_VERSION = 5.0; 531 | TARGETED_DEVICE_FAMILY = "1,2"; 532 | }; 533 | name = Debug; 534 | }; 535 | E832B1FD29533B76002E3462 /* Release */ = { 536 | isa = XCBuildConfiguration; 537 | buildSettings = { 538 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 539 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 540 | CODE_SIGN_STYLE = Automatic; 541 | CURRENT_PROJECT_VERSION = 1; 542 | DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; 543 | DEVELOPMENT_TEAM = NU4532QGA8; 544 | ENABLE_PREVIEWS = YES; 545 | GENERATE_INFOPLIST_FILE = YES; 546 | INFOPLIST_FILE = Example/Info.plist; 547 | INFOPLIST_KEY_CFBundleDisplayName = "Side Menu"; 548 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 549 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 550 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 551 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 552 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 553 | IPHONEOS_DEPLOYMENT_TARGET = 16.0; 554 | LD_RUNPATH_SEARCH_PATHS = ( 555 | "$(inherited)", 556 | "@executable_path/Frameworks", 557 | ); 558 | MARKETING_VERSION = 1.0; 559 | PRODUCT_BUNDLE_IDENTIFIER = com.lanars.sidemenu; 560 | PRODUCT_NAME = "$(TARGET_NAME)"; 561 | SWIFT_EMIT_LOC_STRINGS = YES; 562 | SWIFT_VERSION = 5.0; 563 | TARGETED_DEVICE_FAMILY = "1,2"; 564 | }; 565 | name = Release; 566 | }; 567 | /* End XCBuildConfiguration section */ 568 | 569 | /* Begin XCConfigurationList section */ 570 | E832B1E829533B74002E3462 /* Build configuration list for PBXProject "Example" */ = { 571 | isa = XCConfigurationList; 572 | buildConfigurations = ( 573 | E832B1F929533B76002E3462 /* Debug */, 574 | E832B1FA29533B76002E3462 /* Release */, 575 | ); 576 | defaultConfigurationIsVisible = 0; 577 | defaultConfigurationName = Release; 578 | }; 579 | E832B1FB29533B76002E3462 /* Build configuration list for PBXNativeTarget "Example" */ = { 580 | isa = XCConfigurationList; 581 | buildConfigurations = ( 582 | E832B1FC29533B76002E3462 /* Debug */, 583 | E832B1FD29533B76002E3462 /* Release */, 584 | ); 585 | defaultConfigurationIsVisible = 0; 586 | defaultConfigurationName = Release; 587 | }; 588 | /* End XCConfigurationList section */ 589 | 590 | /* Begin XCSwiftPackageProductDependency section */ 591 | E832B201295351F9002E3462 /* Drawer */ = { 592 | isa = XCSwiftPackageProductDependency; 593 | productName = Drawer; 594 | }; 595 | /* End XCSwiftPackageProductDependency section */ 596 | }; 597 | rootObject = E832B1E529533B74002E3462 /* Project object */; 598 | } 599 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/AppIcon.appiconset/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Example/Example/Assets.xcassets/AppIcon.appiconset/1.png -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "1.png", 5 | "idiom" : "universal", 6 | "platform" : "ios", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/background.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.820", 9 | "green" : "0.843", 10 | "red" : "0.824" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.102", 27 | "green" : "0.102", 28 | "red" : "0.102" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/controlBackground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "0.350", 8 | "blue" : "0.882", 9 | "green" : "0.914", 10 | "red" : "0.886" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "0.050", 26 | "blue" : "1.000", 27 | "green" : "1.000", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/controlForeground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "0.700", 8 | "blue" : "0.882", 9 | "green" : "0.914", 10 | "red" : "0.886" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "0.050", 26 | "blue" : "1.000", 27 | "green" : "1.000", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/offlineStatus.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.063", 9 | "green" : "0.106", 10 | "red" : "0.796" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/onlineStatus.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.063", 9 | "green" : "0.980", 10 | "red" : "0.631" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/selectionBackground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.882", 9 | "green" : "0.914", 10 | "red" : "0.886" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "0.200", 26 | "blue" : "0.063", 27 | "green" : "0.980", 28 | "red" : "0.631" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/selectionForeground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.161", 9 | "green" : "0.616", 10 | "red" : "0.224" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.063", 27 | "green" : "0.980", 28 | "red" : "0.631" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/color/text.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.310", 27 | "green" : "0.400", 28 | "red" : "0.325" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "srgb", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "blue" : "1.000", 45 | "green" : "1.000", 46 | "red" : "1.000" 47 | } 48 | }, 49 | "idiom" : "universal" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/archive.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "archive 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/archive.imageset/archive 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 3.000000 14.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 2.000000 5.000000 m 16 | 16.000000 5.000000 l 17 | 16.000000 7.000000 l 18 | 2.000000 7.000000 l 19 | 2.000000 5.000000 l 20 | h 21 | 16.000000 5.000000 m 22 | 16.552284 5.000000 17.000000 4.552285 17.000000 4.000000 c 23 | 19.000000 4.000000 l 24 | 19.000000 5.656854 17.656855 7.000000 16.000000 7.000000 c 25 | 16.000000 5.000000 l 26 | h 27 | 17.000000 4.000000 m 28 | 17.000000 3.447715 16.552284 3.000000 16.000000 3.000000 c 29 | 16.000000 1.000000 l 30 | 17.656855 1.000000 19.000000 2.343146 19.000000 4.000000 c 31 | 17.000000 4.000000 l 32 | h 33 | 16.000000 3.000000 m 34 | 2.000000 3.000000 l 35 | 2.000000 1.000000 l 36 | 16.000000 1.000000 l 37 | 16.000000 3.000000 l 38 | h 39 | 2.000000 3.000000 m 40 | 1.447715 3.000000 1.000000 3.447715 1.000000 4.000000 c 41 | -1.000000 4.000000 l 42 | -1.000000 2.343146 0.343146 1.000000 2.000000 1.000000 c 43 | 2.000000 3.000000 l 44 | h 45 | 1.000000 4.000000 m 46 | 1.000000 4.552285 1.447715 5.000000 2.000000 5.000000 c 47 | 2.000000 7.000000 l 48 | 0.343146 7.000000 -1.000000 5.656854 -1.000000 4.000000 c 49 | 1.000000 4.000000 l 50 | h 51 | f 52 | n 53 | Q 54 | q 55 | 1.000000 0.000000 -0.000000 1.000000 5.000000 2.000000 cm 56 | 1.000000 1.000000 1.000000 scn 57 | 1.000000 14.000000 m 58 | 1.000000 14.552285 0.552285 15.000000 0.000000 15.000000 c 59 | -0.552285 15.000000 -1.000000 14.552285 -1.000000 14.000000 c 60 | 1.000000 14.000000 l 61 | h 62 | 0.000000 4.000000 m 63 | -1.000000 4.000000 l 64 | 0.000000 4.000000 l 65 | h 66 | 15.000000 14.000000 m 67 | 15.000000 14.552285 14.552285 15.000000 14.000000 15.000000 c 68 | 13.447715 15.000000 13.000000 14.552285 13.000000 14.000000 c 69 | 15.000000 14.000000 l 70 | h 71 | -1.000000 14.000000 m 72 | -1.000000 4.000000 l 73 | 1.000000 4.000000 l 74 | 1.000000 14.000000 l 75 | -1.000000 14.000000 l 76 | h 77 | -1.000000 4.000000 m 78 | -1.000000 3.204350 -0.683930 2.441289 -0.121320 1.878680 c 79 | 1.292893 3.292893 l 80 | 1.105357 3.480430 1.000000 3.734783 1.000000 4.000000 c 81 | -1.000000 4.000000 l 82 | h 83 | -0.121320 1.878680 m 84 | 0.441288 1.316072 1.204350 1.000000 2.000000 1.000000 c 85 | 2.000000 3.000000 l 86 | 1.734784 3.000000 1.480430 3.105357 1.292893 3.292893 c 87 | -0.121320 1.878680 l 88 | h 89 | 2.000000 1.000000 m 90 | 12.000000 1.000000 l 91 | 12.000000 3.000000 l 92 | 2.000000 3.000000 l 93 | 2.000000 1.000000 l 94 | h 95 | 12.000000 1.000000 m 96 | 12.795650 1.000000 13.558711 1.316072 14.121320 1.878680 c 97 | 12.707107 3.292893 l 98 | 12.519569 3.105357 12.265216 3.000000 12.000000 3.000000 c 99 | 12.000000 1.000000 l 100 | h 101 | 14.121320 1.878680 m 102 | 14.683928 2.441289 15.000000 3.204350 15.000000 4.000000 c 103 | 13.000000 4.000000 l 104 | 13.000000 3.734784 12.894643 3.480431 12.707107 3.292893 c 105 | 14.121320 1.878680 l 106 | h 107 | 15.000000 4.000000 m 108 | 15.000000 14.000000 l 109 | 13.000000 14.000000 l 110 | 13.000000 4.000000 l 111 | 15.000000 4.000000 l 112 | h 113 | f 114 | n 115 | Q 116 | q 117 | 1.000000 0.000000 -0.000000 1.000000 10.000000 10.000000 cm 118 | 1.000000 1.000000 1.000000 scn 119 | 0.000000 3.000000 m 120 | -0.552285 3.000000 -1.000000 2.552285 -1.000000 2.000000 c 121 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 122 | 0.000000 3.000000 l 123 | h 124 | 4.000000 1.000000 m 125 | 4.552285 1.000000 5.000000 1.447715 5.000000 2.000000 c 126 | 5.000000 2.552285 4.552285 3.000000 4.000000 3.000000 c 127 | 4.000000 1.000000 l 128 | h 129 | 0.000000 1.000000 m 130 | 4.000000 1.000000 l 131 | 4.000000 3.000000 l 132 | 0.000000 3.000000 l 133 | 0.000000 1.000000 l 134 | h 135 | f 136 | n 137 | Q 138 | 139 | endstream 140 | endobj 141 | 142 | 3 0 obj 143 | 3104 144 | endobj 145 | 146 | 4 0 obj 147 | << /Annots [] 148 | /Type /Page 149 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 150 | /Resources 1 0 R 151 | /Contents 2 0 R 152 | /Parent 5 0 R 153 | >> 154 | endobj 155 | 156 | 5 0 obj 157 | << /Kids [ 4 0 R ] 158 | /Count 1 159 | /Type /Pages 160 | >> 161 | endobj 162 | 163 | 6 0 obj 164 | << /Pages 5 0 R 165 | /Type /Catalog 166 | >> 167 | endobj 168 | 169 | xref 170 | 0 7 171 | 0000000000 65535 f 172 | 0000000010 00000 n 173 | 0000000034 00000 n 174 | 0000003194 00000 n 175 | 0000003217 00000 n 176 | 0000003390 00000 n 177 | 0000003464 00000 n 178 | trailer 179 | << /ID [ (some) (id) ] 180 | /Root 6 0 R 181 | /Size 7 182 | >> 183 | startxref 184 | 3523 185 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/colorScheme/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/colorScheme/dark.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "moon 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/colorScheme/dark.imageset/moon 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 3.002197 0.879333 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 8.997831 20.120663 m 16 | 7.997831 20.120663 l 17 | 7.997831 19.568377 8.445546 19.120663 8.997831 19.120663 c 18 | 8.997831 20.120663 l 19 | h 20 | 9.390831 20.120663 m 21 | 10.071529 19.388098 l 22 | 10.372722 19.667965 10.471920 20.103664 10.321573 20.486338 c 23 | 10.171227 20.869009 9.801979 21.120663 9.390831 21.120663 c 24 | 9.390831 20.120663 l 25 | h 26 | 17.310831 7.674662 m 27 | 18.234257 7.290884 l 28 | 18.389006 7.663234 18.304985 8.092094 18.021170 8.378522 c 29 | 17.737354 8.664949 17.309280 8.752896 16.935530 8.601564 c 30 | 17.310831 7.674662 l 31 | h 32 | 8.997831 20.128662 m 33 | 9.997831 20.128662 l 34 | 9.997831 20.393921 9.892442 20.648312 9.704853 20.835854 c 35 | 9.517264 21.023397 9.262849 21.128727 8.997590 21.128662 c 36 | 8.997831 20.128662 l 37 | h 38 | 8.997831 19.120663 m 39 | 8.998089 19.120663 8.998347 19.120663 8.998605 19.120663 c 40 | 8.998862 19.120663 8.999121 19.120663 8.999378 19.120663 c 41 | 8.999636 19.120663 8.999894 19.120663 9.000152 19.120663 c 42 | 9.000409 19.120663 9.000668 19.120663 9.000925 19.120663 c 43 | 9.001183 19.120663 9.001440 19.120663 9.001698 19.120663 c 44 | 9.001956 19.120663 9.002213 19.120663 9.002472 19.120663 c 45 | 9.002729 19.120663 9.002987 19.120663 9.003244 19.120663 c 46 | 9.003503 19.120663 9.003760 19.120663 9.004018 19.120663 c 47 | 9.004276 19.120663 9.004534 19.120663 9.004791 19.120663 c 48 | 9.005049 19.120663 9.005307 19.120663 9.005565 19.120663 c 49 | 9.005822 19.120663 9.006080 19.120663 9.006338 19.120663 c 50 | 9.006596 19.120663 9.006853 19.120663 9.007111 19.120663 c 51 | 9.007369 19.120663 9.007627 19.120663 9.007884 19.120663 c 52 | 9.008142 19.120663 9.008400 19.120663 9.008657 19.120663 c 53 | 9.008915 19.120663 9.009172 19.120663 9.009430 19.120663 c 54 | 9.009688 19.120663 9.009946 19.120663 9.010203 19.120663 c 55 | 9.010461 19.120663 9.010718 19.120663 9.010977 19.120663 c 56 | 9.011234 19.120663 9.011492 19.120663 9.011749 19.120663 c 57 | 9.012007 19.120663 9.012265 19.120663 9.012523 19.120663 c 58 | 9.012780 19.120663 9.013038 19.120663 9.013295 19.120663 c 59 | 9.013554 19.120663 9.013811 19.120663 9.014069 19.120663 c 60 | 9.014326 19.120663 9.014584 19.120663 9.014841 19.120663 c 61 | 9.015100 19.120663 9.015357 19.120663 9.015615 19.120663 c 62 | 9.015872 19.120663 9.016129 19.120663 9.016387 19.120663 c 63 | 9.016644 19.120663 9.016903 19.120663 9.017160 19.120663 c 64 | 9.017418 19.120663 9.017675 19.120663 9.017933 19.120663 c 65 | 9.018190 19.120663 9.018448 19.120663 9.018705 19.120663 c 66 | 9.018964 19.120663 9.019221 19.120663 9.019479 19.120663 c 67 | 9.019736 19.120663 9.019994 19.120663 9.020251 19.120663 c 68 | 9.020509 19.120663 9.020766 19.120663 9.021024 19.120663 c 69 | 9.021282 19.120663 9.021540 19.120663 9.021797 19.120663 c 70 | 9.022055 19.120663 9.022312 19.120663 9.022570 19.120663 c 71 | 9.022827 19.120663 9.023085 19.120663 9.023342 19.120663 c 72 | 9.023600 19.120663 9.023857 19.120663 9.024115 19.120663 c 73 | 9.024372 19.120663 9.024631 19.120663 9.024888 19.120663 c 74 | 9.025146 19.120663 9.025403 19.120663 9.025661 19.120663 c 75 | 9.025918 19.120663 9.026175 19.120663 9.026433 19.120663 c 76 | 9.026690 19.120663 9.026948 19.120663 9.027205 19.120663 c 77 | 9.027463 19.120663 9.027720 19.120663 9.027978 19.120663 c 78 | 9.028235 19.120663 9.028493 19.120663 9.028750 19.120663 c 79 | 9.029008 19.120663 9.029265 19.120663 9.029523 19.120663 c 80 | 9.029780 19.120663 9.030038 19.120663 9.030295 19.120663 c 81 | 9.030553 19.120663 9.030810 19.120663 9.031068 19.120663 c 82 | 9.031325 19.120663 9.031583 19.120663 9.031840 19.120663 c 83 | 9.032098 19.120663 9.032355 19.120663 9.032613 19.120663 c 84 | 9.032870 19.120663 9.033128 19.120663 9.033385 19.120663 c 85 | 9.033643 19.120663 9.033900 19.120663 9.034158 19.120663 c 86 | 9.034415 19.120663 9.034673 19.120663 9.034930 19.120663 c 87 | 9.035188 19.120663 9.035445 19.120663 9.035703 19.120663 c 88 | 9.035960 19.120663 9.036217 19.120663 9.036474 19.120663 c 89 | 9.036732 19.120663 9.036989 19.120663 9.037247 19.120663 c 90 | 9.037504 19.120663 9.037762 19.120663 9.038019 19.120663 c 91 | 9.038277 19.120663 9.038534 19.120663 9.038792 19.120663 c 92 | 9.039049 19.120663 9.039307 19.120663 9.039563 19.120663 c 93 | 9.039821 19.120663 9.040078 19.120663 9.040336 19.120663 c 94 | 9.040593 19.120663 9.040851 19.120663 9.041108 19.120663 c 95 | 9.041366 19.120663 9.041623 19.120663 9.041880 19.120663 c 96 | 9.042137 19.120663 9.042395 19.120663 9.042652 19.120663 c 97 | 9.042910 19.120663 9.043167 19.120663 9.043425 19.120663 c 98 | 9.043682 19.120663 9.043939 19.120663 9.044196 19.120663 c 99 | 9.044454 19.120663 9.044711 19.120663 9.044969 19.120663 c 100 | 9.045226 19.120663 9.045484 19.120663 9.045740 19.120663 c 101 | 9.045998 19.120663 9.046255 19.120663 9.046513 19.120663 c 102 | 9.046770 19.120663 9.047028 19.120663 9.047284 19.120663 c 103 | 9.047542 19.120663 9.047799 19.120663 9.048057 19.120663 c 104 | 9.048314 19.120663 9.048571 19.120663 9.048828 19.120663 c 105 | 9.049086 19.120663 9.049343 19.120663 9.049601 19.120663 c 106 | 9.049857 19.120663 9.050115 19.120663 9.050372 19.120663 c 107 | 9.050630 19.120663 9.050887 19.120663 9.051144 19.120663 c 108 | 9.051401 19.120663 9.051659 19.120663 9.051916 19.120663 c 109 | 9.052174 19.120663 9.052430 19.120663 9.052688 19.120663 c 110 | 9.052945 19.120663 9.053203 19.120663 9.053459 19.120663 c 111 | 9.053717 19.120663 9.053974 19.120663 9.054232 19.120663 c 112 | 9.054488 19.120663 9.054746 19.120663 9.055003 19.120663 c 113 | 9.055261 19.120663 9.055517 19.120663 9.055775 19.120663 c 114 | 9.056032 19.120663 9.056290 19.120663 9.056546 19.120663 c 115 | 9.056804 19.120663 9.057061 19.120663 9.057318 19.120663 c 116 | 9.057575 19.120663 9.057833 19.120663 9.058090 19.120663 c 117 | 9.058347 19.120663 9.058604 19.120663 9.058862 19.120663 c 118 | 9.059118 19.120663 9.059376 19.120663 9.059633 19.120663 c 119 | 9.059891 19.120663 9.060147 19.120663 9.060405 19.120663 c 120 | 9.060662 19.120663 9.060919 19.120663 9.061176 19.120663 c 121 | 9.061434 19.120663 9.061690 19.120663 9.061948 19.120663 c 122 | 9.062205 19.120663 9.062462 19.120663 9.062719 19.120663 c 123 | 9.062977 19.120663 9.063233 19.120663 9.063491 19.120663 c 124 | 9.063748 19.120663 9.064005 19.120663 9.064262 19.120663 c 125 | 9.064520 19.120663 9.064776 19.120663 9.065034 19.120663 c 126 | 9.065290 19.120663 9.065548 19.120663 9.065805 19.120663 c 127 | 9.066062 19.120663 9.066319 19.120663 9.066577 19.120663 c 128 | 9.066833 19.120663 9.067091 19.120663 9.067348 19.120663 c 129 | 9.067605 19.120663 9.067863 19.120663 9.068119 19.120663 c 130 | 9.068377 19.120663 9.068634 19.120663 9.068891 19.120663 c 131 | 9.069148 19.120663 9.069405 19.120663 9.069662 19.120663 c 132 | 9.069920 19.120663 9.070176 19.120663 9.070434 19.120663 c 133 | 9.070690 19.120663 9.070948 19.120663 9.071204 19.120663 c 134 | 9.071462 19.120663 9.071719 19.120663 9.071976 19.120663 c 135 | 9.072233 19.120663 9.072490 19.120663 9.072747 19.120663 c 136 | 9.073004 19.120663 9.073261 19.120663 9.073519 19.120663 c 137 | 9.073775 19.120663 9.074033 19.120663 9.074289 19.120663 c 138 | 9.074547 19.120663 9.074803 19.120663 9.075061 19.120663 c 139 | 9.075317 19.120663 9.075575 19.120663 9.075831 19.120663 c 140 | 9.076089 19.120663 9.076345 19.120663 9.076603 19.120663 c 141 | 9.076859 19.120663 9.077117 19.120663 9.077374 19.120663 c 142 | 9.077631 19.120663 9.077888 19.120663 9.078145 19.120663 c 143 | 9.078403 19.120663 9.078659 19.120663 9.078917 19.120663 c 144 | 9.079173 19.120663 9.079430 19.120663 9.079687 19.120663 c 145 | 9.079944 19.120663 9.080201 19.120663 9.080458 19.120663 c 146 | 9.080715 19.120663 9.080972 19.120663 9.081229 19.120663 c 147 | 9.081486 19.120663 9.081743 19.120663 9.082000 19.120663 c 148 | 9.082257 19.120663 9.082514 19.120663 9.082771 19.120663 c 149 | 9.083028 19.120663 9.083285 19.120663 9.083542 19.120663 c 150 | 9.083798 19.120663 9.084056 19.120663 9.084312 19.120663 c 151 | 9.084570 19.120663 9.084826 19.120663 9.085084 19.120663 c 152 | 9.085340 19.120663 9.085597 19.120663 9.085855 19.120663 c 153 | 9.086111 19.120663 9.086369 19.120663 9.086625 19.120663 c 154 | 9.086883 19.120663 9.087139 19.120663 9.087396 19.120663 c 155 | 9.087653 19.120663 9.087910 19.120663 9.088167 19.120663 c 156 | 9.088424 19.120663 9.088680 19.120663 9.088938 19.120663 c 157 | 9.089194 19.120663 9.089452 19.120663 9.089708 19.120663 c 158 | 9.089965 19.120663 9.090222 19.120663 9.090479 19.120663 c 159 | 9.090735 19.120663 9.090993 19.120663 9.091249 19.120663 c 160 | 9.091507 19.120663 9.091763 19.120663 9.092020 19.120663 c 161 | 9.092278 19.120663 9.092534 19.120663 9.092791 19.120663 c 162 | 9.093048 19.120663 9.093305 19.120663 9.093561 19.120663 c 163 | 9.093819 19.120663 9.094075 19.120663 9.094332 19.120663 c 164 | 9.094589 19.120663 9.094846 19.120663 9.095102 19.120663 c 165 | 9.095360 19.120663 9.095616 19.120663 9.095873 19.120663 c 166 | 9.096130 19.120663 9.096387 19.120663 9.096643 19.120663 c 167 | 9.096901 19.120663 9.097157 19.120663 9.097414 19.120663 c 168 | 9.097672 19.120663 9.097928 19.120663 9.098185 19.120663 c 169 | 9.098441 19.120663 9.098699 19.120663 9.098955 19.120663 c 170 | 9.099212 19.120663 9.099469 19.120663 9.099726 19.120663 c 171 | 9.099982 19.120663 9.100239 19.120663 9.100496 19.120663 c 172 | 9.100753 19.120663 9.101009 19.120663 9.101267 19.120663 c 173 | 9.101523 19.120663 9.101780 19.120663 9.102036 19.120663 c 174 | 9.102294 19.120663 9.102551 19.120663 9.102807 19.120663 c 175 | 9.103064 19.120663 9.103321 19.120663 9.103578 19.120663 c 176 | 9.103834 19.120663 9.104091 19.120663 9.104348 19.120663 c 177 | 9.104605 19.120663 9.104861 19.120663 9.105118 19.120663 c 178 | 9.105374 19.120663 9.105632 19.120663 9.105888 19.120663 c 179 | 9.106145 19.120663 9.106401 19.120663 9.106658 19.120663 c 180 | 9.106915 19.120663 9.107172 19.120663 9.107429 19.120663 c 181 | 9.107685 19.120663 9.107942 19.120663 9.108199 19.120663 c 182 | 9.108456 19.120663 9.108712 19.120663 9.108969 19.120663 c 183 | 9.109225 19.120663 9.109483 19.120663 9.109739 19.120663 c 184 | 9.109996 19.120663 9.110252 19.120663 9.110509 19.120663 c 185 | 9.110765 19.120663 9.111023 19.120663 9.111279 19.120663 c 186 | 9.111536 19.120663 9.111793 19.120663 9.112049 19.120663 c 187 | 9.112306 19.120663 9.112563 19.120663 9.112820 19.120663 c 188 | 9.113076 19.120663 9.113333 19.120663 9.113589 19.120663 c 189 | 9.113846 19.120663 9.114102 19.120663 9.114360 19.120663 c 190 | 9.114616 19.120663 9.114873 19.120663 9.115129 19.120663 c 191 | 9.115386 19.120663 9.115643 19.120663 9.115899 19.120663 c 192 | 9.116156 19.120663 9.116412 19.120663 9.116670 19.120663 c 193 | 9.116926 19.120663 9.117183 19.120663 9.117439 19.120663 c 194 | 9.117696 19.120663 9.117952 19.120663 9.118209 19.120663 c 195 | 9.118465 19.120663 9.118722 19.120663 9.118979 19.120663 c 196 | 9.119235 19.120663 9.119493 19.120663 9.119749 19.120663 c 197 | 9.120006 19.120663 9.120262 19.120663 9.120519 19.120663 c 198 | 9.120775 19.120663 9.121032 19.120663 9.121288 19.120663 c 199 | 9.121545 19.120663 9.121801 19.120663 9.122058 19.120663 c 200 | 9.122314 19.120663 9.122571 19.120663 9.122828 19.120663 c 201 | 9.123084 19.120663 9.123341 19.120663 9.123597 19.120663 c 202 | 9.123854 19.120663 9.124110 19.120663 9.124367 19.120663 c 203 | 9.124623 19.120663 9.124881 19.120663 9.125137 19.120663 c 204 | 9.125394 19.120663 9.125650 19.120663 9.125907 19.120663 c 205 | 9.126163 19.120663 9.126420 19.120663 9.126677 19.120663 c 206 | 9.126933 19.120663 9.127190 19.120663 9.127446 19.120663 c 207 | 9.127703 19.120663 9.127959 19.120663 9.128216 19.120663 c 208 | 9.128472 19.120663 9.128728 19.120663 9.128984 19.120663 c 209 | 9.129241 19.120663 9.129498 19.120663 9.129754 19.120663 c 210 | 9.130011 19.120663 9.130267 19.120663 9.130524 19.120663 c 211 | 9.130780 19.120663 9.131037 19.120663 9.131293 19.120663 c 212 | 9.131550 19.120663 9.131806 19.120663 9.132063 19.120663 c 213 | 9.132319 19.120663 9.132576 19.120663 9.132833 19.120663 c 214 | 9.133089 19.120663 9.133346 19.120663 9.133602 19.120663 c 215 | 9.133859 19.120663 9.134114 19.120663 9.134371 19.120663 c 216 | 9.134627 19.120663 9.134884 19.120663 9.135140 19.120663 c 217 | 9.135397 19.120663 9.135653 19.120663 9.135910 19.120663 c 218 | 9.136167 19.120663 9.136423 19.120663 9.136680 19.120663 c 219 | 9.136935 19.120663 9.137192 19.120663 9.137448 19.120663 c 220 | 9.137705 19.120663 9.137961 19.120663 9.138218 19.120663 c 221 | 9.138474 19.120663 9.138731 19.120663 9.138987 19.120663 c 222 | 9.139243 19.120663 9.139500 19.120663 9.139756 19.120663 c 223 | 9.140013 19.120663 9.140269 19.120663 9.140526 19.120663 c 224 | 9.140782 19.120663 9.141038 19.120663 9.141294 19.120663 c 225 | 9.141551 19.120663 9.141808 19.120663 9.142064 19.120663 c 226 | 9.142321 19.120663 9.142576 19.120663 9.142833 19.120663 c 227 | 9.143089 19.120663 9.143346 19.120663 9.143602 19.120663 c 228 | 9.143859 19.120663 9.144114 19.120663 9.144371 19.120663 c 229 | 9.144628 19.120663 9.144884 19.120663 9.145141 19.120663 c 230 | 9.145396 19.120663 9.145653 19.120663 9.145909 19.120663 c 231 | 9.146166 19.120663 9.146422 19.120663 9.146678 19.120663 c 232 | 9.146935 19.120663 9.147191 19.120663 9.147448 19.120663 c 233 | 9.147704 19.120663 9.147960 19.120663 9.148216 19.120663 c 234 | 9.148473 19.120663 9.148729 19.120663 9.148985 19.120663 c 235 | 9.149241 19.120663 9.149498 19.120663 9.149755 19.120663 c 236 | 9.150011 19.120663 9.150267 19.120663 9.150523 19.120663 c 237 | 9.150780 19.120663 9.151036 19.120663 9.151292 19.120663 c 238 | 9.151548 19.120663 9.151805 19.120663 9.152061 19.120663 c 239 | 9.152317 19.120663 9.152574 19.120663 9.152830 19.120663 c 240 | 9.153086 19.120663 9.153342 19.120663 9.153599 19.120663 c 241 | 9.153855 19.120663 9.154111 19.120663 9.154367 19.120663 c 242 | 9.154624 19.120663 9.154880 19.120663 9.155136 19.120663 c 243 | 9.155393 19.120663 9.155649 19.120663 9.155905 19.120663 c 244 | 9.156161 19.120663 9.156418 19.120663 9.156673 19.120663 c 245 | 9.156930 19.120663 9.157187 19.120663 9.157442 19.120663 c 246 | 9.157699 19.120663 9.157955 19.120663 9.158211 19.120663 c 247 | 9.158467 19.120663 9.158724 19.120663 9.158979 19.120663 c 248 | 9.159236 19.120663 9.159492 19.120663 9.159748 19.120663 c 249 | 9.160005 19.120663 9.160261 19.120663 9.160517 19.120663 c 250 | 9.160773 19.120663 9.161030 19.120663 9.161285 19.120663 c 251 | 9.161542 19.120663 9.161798 19.120663 9.162054 19.120663 c 252 | 9.162311 19.120663 9.162566 19.120663 9.162823 19.120663 c 253 | 9.163079 19.120663 9.163335 19.120663 9.163591 19.120663 c 254 | 9.163847 19.120663 9.164104 19.120663 9.164360 19.120663 c 255 | 9.164616 19.120663 9.164872 19.120663 9.165129 19.120663 c 256 | 9.165384 19.120663 9.165641 19.120663 9.165896 19.120663 c 257 | 9.166153 19.120663 9.166409 19.120663 9.166665 19.120663 c 258 | 9.166922 19.120663 9.167177 19.120663 9.167434 19.120663 c 259 | 9.167689 19.120663 9.167946 19.120663 9.168202 19.120663 c 260 | 9.168458 19.120663 9.168715 19.120663 9.168970 19.120663 c 261 | 9.169227 19.120663 9.169482 19.120663 9.169739 19.120663 c 262 | 9.169994 19.120663 9.170251 19.120663 9.170507 19.120663 c 263 | 9.170763 19.120663 9.171020 19.120663 9.171275 19.120663 c 264 | 9.171532 19.120663 9.171787 19.120663 9.172044 19.120663 c 265 | 9.172299 19.120663 9.172556 19.120663 9.172812 19.120663 c 266 | 9.173068 19.120663 9.173324 19.120663 9.173580 19.120663 c 267 | 9.173836 19.120663 9.174092 19.120663 9.174348 19.120663 c 268 | 9.174604 19.120663 9.174860 19.120663 9.175117 19.120663 c 269 | 9.175372 19.120663 9.175629 19.120663 9.175884 19.120663 c 270 | 9.176141 19.120663 9.176396 19.120663 9.176653 19.120663 c 271 | 9.176908 19.120663 9.177165 19.120663 9.177421 19.120663 c 272 | 9.177677 19.120663 9.177933 19.120663 9.178189 19.120663 c 273 | 9.178445 19.120663 9.178701 19.120663 9.178957 19.120663 c 274 | 9.179213 19.120663 9.179469 19.120663 9.179725 19.120663 c 275 | 9.179981 19.120663 9.180237 19.120663 9.180493 19.120663 c 276 | 9.180749 19.120663 9.181005 19.120663 9.181261 19.120663 c 277 | 9.181517 19.120663 9.181773 19.120663 9.182029 19.120663 c 278 | 9.182285 19.120663 9.182541 19.120663 9.182797 19.120663 c 279 | 9.183053 19.120663 9.183309 19.120663 9.183565 19.120663 c 280 | 9.183821 19.120663 9.184077 19.120663 9.184333 19.120663 c 281 | 9.184588 19.120663 9.184845 19.120663 9.185101 19.120663 c 282 | 9.185357 19.120663 9.185613 19.120663 9.185868 19.120663 c 283 | 9.186125 19.120663 9.186380 19.120663 9.186636 19.120663 c 284 | 9.186893 19.120663 9.187148 19.120663 9.187405 19.120663 c 285 | 9.187660 19.120663 9.187916 19.120663 9.188172 19.120663 c 286 | 9.188428 19.120663 9.188684 19.120663 9.188940 19.120663 c 287 | 9.189196 19.120663 9.189451 19.120663 9.189708 19.120663 c 288 | 9.189963 19.120663 9.190219 19.120663 9.190475 19.120663 c 289 | 9.190731 19.120663 9.190987 19.120663 9.191243 19.120663 c 290 | 9.191499 19.120663 9.191754 19.120663 9.192011 19.120663 c 291 | 9.192266 19.120663 9.192522 19.120663 9.192779 19.120663 c 292 | 9.193034 19.120663 9.193290 19.120663 9.193546 19.120663 c 293 | 9.193802 19.120663 9.194057 19.120663 9.194314 19.120663 c 294 | 9.194570 19.120663 9.194825 19.120663 9.195081 19.120663 c 295 | 9.195337 19.120663 9.195593 19.120663 9.195848 19.120663 c 296 | 9.196105 19.120663 9.196361 19.120663 9.196616 19.120663 c 297 | 9.196872 19.120663 9.197128 19.120663 9.197384 19.120663 c 298 | 9.197639 19.120663 9.197895 19.120663 9.198152 19.120663 c 299 | 9.198407 19.120663 9.198663 19.120663 9.198918 19.120663 c 300 | 9.199175 19.120663 9.199430 19.120663 9.199686 19.120663 c 301 | 9.199942 19.120663 9.200198 19.120663 9.200454 19.120663 c 302 | 9.200709 19.120663 9.200965 19.120663 9.201221 19.120663 c 303 | 9.201477 19.120663 9.201733 19.120663 9.201988 19.120663 c 304 | 9.202244 19.120663 9.202500 19.120663 9.202756 19.120663 c 305 | 9.203012 19.120663 9.203267 19.120663 9.203523 19.120663 c 306 | 9.203779 19.120663 9.204035 19.120663 9.204290 19.120663 c 307 | 9.204546 19.120663 9.204802 19.120663 9.205058 19.120663 c 308 | 9.205314 19.120663 9.205569 19.120663 9.205825 19.120663 c 309 | 9.206080 19.120663 9.206337 19.120663 9.206593 19.120663 c 310 | 9.206848 19.120663 9.207104 19.120663 9.207359 19.120663 c 311 | 9.207615 19.120663 9.207870 19.120663 9.208127 19.120663 c 312 | 9.208383 19.120663 9.208638 19.120663 9.208894 19.120663 c 313 | 9.209149 19.120663 9.209405 19.120663 9.209661 19.120663 c 314 | 9.209917 19.120663 9.210173 19.120663 9.210428 19.120663 c 315 | 9.210684 19.120663 9.210939 19.120663 9.211195 19.120663 c 316 | 9.211451 19.120663 9.211706 19.120663 9.211963 19.120663 c 317 | 9.212218 19.120663 9.212474 19.120663 9.212729 19.120663 c 318 | 9.212985 19.120663 9.213241 19.120663 9.213496 19.120663 c 319 | 9.213752 19.120663 9.214007 19.120663 9.214264 19.120663 c 320 | 9.214520 19.120663 9.214775 19.120663 9.215031 19.120663 c 321 | 9.215286 19.120663 9.215542 19.120663 9.215797 19.120663 c 322 | 9.216053 19.120663 9.216309 19.120663 9.216564 19.120663 c 323 | 9.216820 19.120663 9.217075 19.120663 9.217331 19.120663 c 324 | 9.217587 19.120663 9.217842 19.120663 9.218099 19.120663 c 325 | 9.218354 19.120663 9.218610 19.120663 9.218865 19.120663 c 326 | 9.219121 19.120663 9.219377 19.120663 9.219632 19.120663 c 327 | 9.219888 19.120663 9.220143 19.120663 9.220399 19.120663 c 328 | 9.220654 19.120663 9.220910 19.120663 9.221166 19.120663 c 329 | 9.221421 19.120663 9.221677 19.120663 9.221932 19.120663 c 330 | 9.222188 19.120663 9.222444 19.120663 9.222699 19.120663 c 331 | 9.222955 19.120663 9.223210 19.120663 9.223466 19.120663 c 332 | 9.223722 19.120663 9.223977 19.120663 9.224233 19.120663 c 333 | 9.224488 19.120663 9.224744 19.120663 9.224999 19.120663 c 334 | 9.225255 19.120663 9.225511 19.120663 9.225766 19.120663 c 335 | 9.226022 19.120663 9.226277 19.120663 9.226533 19.120663 c 336 | 9.226789 19.120663 9.227044 19.120663 9.227300 19.120663 c 337 | 9.227554 19.120663 9.227810 19.120663 9.228065 19.120663 c 338 | 9.228321 19.120663 9.228577 19.120663 9.228832 19.120663 c 339 | 9.229088 19.120663 9.229343 19.120663 9.229599 19.120663 c 340 | 9.229855 19.120663 9.230110 19.120663 9.230366 19.120663 c 341 | 9.230621 19.120663 9.230877 19.120663 9.231132 19.120663 c 342 | 9.231387 19.120663 9.231643 19.120663 9.231898 19.120663 c 343 | 9.232154 19.120663 9.232409 19.120663 9.232665 19.120663 c 344 | 9.232921 19.120663 9.233176 19.120663 9.233432 19.120663 c 345 | 9.233686 19.120663 9.233942 19.120663 9.234198 19.120663 c 346 | 9.234453 19.120663 9.234709 19.120663 9.234964 19.120663 c 347 | 9.235220 19.120663 9.235476 19.120663 9.235730 19.120663 c 348 | 9.235986 19.120663 9.236241 19.120663 9.236497 19.120663 c 349 | 9.236753 19.120663 9.237008 19.120663 9.237264 19.120663 c 350 | 9.237518 19.120663 9.237774 19.120663 9.238029 19.120663 c 351 | 9.238285 19.120663 9.238541 19.120663 9.238796 19.120663 c 352 | 9.239051 19.120663 9.239306 19.120663 9.239562 19.120663 c 353 | 9.239818 19.120663 9.240073 19.120663 9.240329 19.120663 c 354 | 9.240583 19.120663 9.240839 19.120663 9.241095 19.120663 c 355 | 9.241350 19.120663 9.241606 19.120663 9.241860 19.120663 c 356 | 9.242116 19.120663 9.242372 19.120663 9.242627 19.120663 c 357 | 9.242883 19.120663 9.243137 19.120663 9.243393 19.120663 c 358 | 9.243649 19.120663 9.243904 19.120663 9.244160 19.120663 c 359 | 9.244414 19.120663 9.244670 19.120663 9.244925 19.120663 c 360 | 9.245181 19.120663 9.245436 19.120663 9.245691 19.120663 c 361 | 9.245947 19.120663 9.246202 19.120663 9.246457 19.120663 c 362 | 9.246713 19.120663 9.246968 19.120663 9.247224 19.120663 c 363 | 9.247478 19.120663 9.247734 19.120663 9.247990 19.120663 c 364 | 9.248245 19.120663 9.248500 19.120663 9.248755 19.120663 c 365 | 9.249011 19.120663 9.249266 19.120663 9.249521 19.120663 c 366 | 9.249777 19.120663 9.250032 19.120663 9.250287 19.120663 c 367 | 9.250543 19.120663 9.250798 19.120663 9.251053 19.120663 c 368 | 9.251308 19.120663 9.251564 19.120663 9.251820 19.120663 c 369 | 9.252074 19.120663 9.252330 19.120663 9.252585 19.120663 c 370 | 9.252840 19.120663 9.253096 19.120663 9.253351 19.120663 c 371 | 9.253606 19.120663 9.253861 19.120663 9.254117 19.120663 c 372 | 9.254372 19.120663 9.254627 19.120663 9.254883 19.120663 c 373 | 9.255137 19.120663 9.255393 19.120663 9.255649 19.120663 c 374 | 9.255903 19.120663 9.256159 19.120663 9.256414 19.120663 c 375 | 9.256669 19.120663 9.256925 19.120663 9.257180 19.120663 c 376 | 9.257435 19.120663 9.257690 19.120663 9.257946 19.120663 c 377 | 9.258201 19.120663 9.258456 19.120663 9.258711 19.120663 c 378 | 9.258966 19.120663 9.259222 19.120663 9.259477 19.120663 c 379 | 9.259732 19.120663 9.259987 19.120663 9.260242 19.120663 c 380 | 9.260498 19.120663 9.260753 19.120663 9.261008 19.120663 c 381 | 9.261263 19.120663 9.261518 19.120663 9.261774 19.120663 c 382 | 9.262029 19.120663 9.262284 19.120663 9.262539 19.120663 c 383 | 9.262794 19.120663 9.263050 19.120663 9.263305 19.120663 c 384 | 9.263560 19.120663 9.263815 19.120663 9.264071 19.120663 c 385 | 9.264325 19.120663 9.264581 19.120663 9.264836 19.120663 c 386 | 9.265091 19.120663 9.265347 19.120663 9.265601 19.120663 c 387 | 9.265857 19.120663 9.266111 19.120663 9.266367 19.120663 c 388 | 9.266622 19.120663 9.266877 19.120663 9.267133 19.120663 c 389 | 9.267387 19.120663 9.267643 19.120663 9.267898 19.120663 c 390 | 9.268153 19.120663 9.268408 19.120663 9.268663 19.120663 c 391 | 9.268918 19.120663 9.269174 19.120663 9.269428 19.120663 c 392 | 9.269684 19.120663 9.269938 19.120663 9.270194 19.120663 c 393 | 9.270449 19.120663 9.270704 19.120663 9.270959 19.120663 c 394 | 9.271214 19.120663 9.271469 19.120663 9.271725 19.120663 c 395 | 9.271979 19.120663 9.272235 19.120663 9.272490 19.120663 c 396 | 9.272745 19.120663 9.273000 19.120663 9.273255 19.120663 c 397 | 9.273510 19.120663 9.273766 19.120663 9.274020 19.120663 c 398 | 9.274275 19.120663 9.274530 19.120663 9.274785 19.120663 c 399 | 9.275041 19.120663 9.275295 19.120663 9.275551 19.120663 c 400 | 9.275805 19.120663 9.276061 19.120663 9.276316 19.120663 c 401 | 9.276571 19.120663 9.276826 19.120663 9.277081 19.120663 c 402 | 9.277336 19.120663 9.277591 19.120663 9.277846 19.120663 c 403 | 9.278101 19.120663 9.278357 19.120663 9.278611 19.120663 c 404 | 9.278866 19.120663 9.279121 19.120663 9.279376 19.120663 c 405 | 9.279632 19.120663 9.279886 19.120663 9.280141 19.120663 c 406 | 9.280396 19.120663 9.280651 19.120663 9.280907 19.120663 c 407 | 9.281161 19.120663 9.281416 19.120663 9.281672 19.120663 c 408 | 9.281926 19.120663 9.282181 19.120663 9.282436 19.120663 c 409 | 9.282691 19.120663 9.282947 19.120663 9.283201 19.120663 c 410 | 9.283456 19.120663 9.283711 19.120663 9.283966 19.120663 c 411 | 9.284221 19.120663 9.284476 19.120663 9.284731 19.120663 c 412 | 9.284986 19.120663 9.285241 19.120663 9.285496 19.120663 c 413 | 9.285751 19.120663 9.286006 19.120663 9.286261 19.120663 c 414 | 9.286516 19.120663 9.286771 19.120663 9.287025 19.120663 c 415 | 9.287281 19.120663 9.287536 19.120663 9.287790 19.120663 c 416 | 9.288045 19.120663 9.288301 19.120663 9.288555 19.120663 c 417 | 9.288810 19.120663 9.289065 19.120663 9.289320 19.120663 c 418 | 9.289575 19.120663 9.289830 19.120663 9.290085 19.120663 c 419 | 9.290339 19.120663 9.290595 19.120663 9.290850 19.120663 c 420 | 9.291104 19.120663 9.291359 19.120663 9.291615 19.120663 c 421 | 9.291869 19.120663 9.292124 19.120663 9.292378 19.120663 c 422 | 9.292634 19.120663 9.292889 19.120663 9.293143 19.120663 c 423 | 9.293399 19.120663 9.293653 19.120663 9.293908 19.120663 c 424 | 9.294163 19.120663 9.294418 19.120663 9.294673 19.120663 c 425 | 9.294928 19.120663 9.295182 19.120663 9.295438 19.120663 c 426 | 9.295692 19.120663 9.295947 19.120663 9.296202 19.120663 c 427 | 9.296456 19.120663 9.296712 19.120663 9.296967 19.120663 c 428 | 9.297221 19.120663 9.297476 19.120663 9.297731 19.120663 c 429 | 9.297986 19.120663 9.298241 19.120663 9.298495 19.120663 c 430 | 9.298750 19.120663 9.299006 19.120663 9.299260 19.120663 c 431 | 9.299515 19.120663 9.299769 19.120663 9.300024 19.120663 c 432 | 9.300280 19.120663 9.300534 19.120663 9.300789 19.120663 c 433 | 9.301044 19.120663 9.301298 19.120663 9.301554 19.120663 c 434 | 9.301808 19.120663 9.302063 19.120663 9.302318 19.120663 c 435 | 9.302572 19.120663 9.302827 19.120663 9.303082 19.120663 c 436 | 9.303337 19.120663 9.303592 19.120663 9.303846 19.120663 c 437 | 9.304101 19.120663 9.304356 19.120663 9.304610 19.120663 c 438 | 9.304866 19.120663 9.305120 19.120663 9.305375 19.120663 c 439 | 9.305630 19.120663 9.305884 19.120663 9.306139 19.120663 c 440 | 9.306394 19.120663 9.306649 19.120663 9.306904 19.120663 c 441 | 9.307158 19.120663 9.307413 19.120663 9.307668 19.120663 c 442 | 9.307922 19.120663 9.308177 19.120663 9.308432 19.120663 c 443 | 9.308686 19.120663 9.308942 19.120663 9.309196 19.120663 c 444 | 9.309451 19.120663 9.309706 19.120663 9.309960 19.120663 c 445 | 9.310215 19.120663 9.310470 19.120663 9.310724 19.120663 c 446 | 9.310979 19.120663 9.311234 19.120663 9.311488 19.120663 c 447 | 9.311743 19.120663 9.311998 19.120663 9.312253 19.120663 c 448 | 9.312508 19.120663 9.312762 19.120663 9.313017 19.120663 c 449 | 9.313272 19.120663 9.313526 19.120663 9.313781 19.120663 c 450 | 9.314035 19.120663 9.314290 19.120663 9.314545 19.120663 c 451 | 9.314799 19.120663 9.315054 19.120663 9.315309 19.120663 c 452 | 9.315563 19.120663 9.315818 19.120663 9.316072 19.120663 c 453 | 9.316327 19.120663 9.316582 19.120663 9.316836 19.120663 c 454 | 9.317091 19.120663 9.317346 19.120663 9.317600 19.120663 c 455 | 9.317855 19.120663 9.318110 19.120663 9.318364 19.120663 c 456 | 9.318619 19.120663 9.318873 19.120663 9.319128 19.120663 c 457 | 9.319383 19.120663 9.319637 19.120663 9.319892 19.120663 c 458 | 9.320147 19.120663 9.320401 19.120663 9.320656 19.120663 c 459 | 9.320910 19.120663 9.321165 19.120663 9.321420 19.120663 c 460 | 9.321674 19.120663 9.321929 19.120663 9.322184 19.120663 c 461 | 9.322438 19.120663 9.322693 19.120663 9.322948 19.120663 c 462 | 9.323202 19.120663 9.323457 19.120663 9.323711 19.120663 c 463 | 9.323966 19.120663 9.324221 19.120663 9.324475 19.120663 c 464 | 9.324729 19.120663 9.324984 19.120663 9.325238 19.120663 c 465 | 9.325493 19.120663 9.325747 19.120663 9.326002 19.120663 c 466 | 9.326257 19.120663 9.326511 19.120663 9.326766 19.120663 c 467 | 9.327021 19.120663 9.327275 19.120663 9.327530 19.120663 c 468 | 9.327785 19.120663 9.328038 19.120663 9.328293 19.120663 c 469 | 9.328547 19.120663 9.328802 19.120663 9.329057 19.120663 c 470 | 9.329311 19.120663 9.329566 19.120663 9.329821 19.120663 c 471 | 9.330075 19.120663 9.330329 19.120663 9.330584 19.120663 c 472 | 9.330838 19.120663 9.331093 19.120663 9.331347 19.120663 c 473 | 9.331602 19.120663 9.331857 19.120663 9.332110 19.120663 c 474 | 9.332365 19.120663 9.332620 19.120663 9.332874 19.120663 c 475 | 9.333129 19.120663 9.333384 19.120663 9.333638 19.120663 c 476 | 9.333892 19.120663 9.334146 19.120663 9.334401 19.120663 c 477 | 9.334656 19.120663 9.334910 19.120663 9.335165 19.120663 c 478 | 9.335419 19.120663 9.335673 19.120663 9.335928 19.120663 c 479 | 9.336183 19.120663 9.336437 19.120663 9.336691 19.120663 c 480 | 9.336946 19.120663 9.337200 19.120663 9.337455 19.120663 c 481 | 9.337709 19.120663 9.337963 19.120663 9.338218 19.120663 c 482 | 9.338472 19.120663 9.338727 19.120663 9.338982 19.120663 c 483 | 9.339235 19.120663 9.339490 19.120663 9.339745 19.120663 c 484 | 9.339999 19.120663 9.340253 19.120663 9.340508 19.120663 c 485 | 9.340762 19.120663 9.341017 19.120663 9.341271 19.120663 c 486 | 9.341525 19.120663 9.341780 19.120663 9.342034 19.120663 c 487 | 9.342289 19.120663 9.342543 19.120663 9.342797 19.120663 c 488 | 9.343052 19.120663 9.343307 19.120663 9.343560 19.120663 c 489 | 9.343815 19.120663 9.344069 19.120663 9.344323 19.120663 c 490 | 9.344578 19.120663 9.344832 19.120663 9.345087 19.120663 c 491 | 9.345341 19.120663 9.345595 19.120663 9.345850 19.120663 c 492 | 9.346104 19.120663 9.346358 19.120663 9.346613 19.120663 c 493 | 9.346868 19.120663 9.347121 19.120663 9.347376 19.120663 c 494 | 9.347631 19.120663 9.347884 19.120663 9.348139 19.120663 c 495 | 9.348393 19.120663 9.348647 19.120663 9.348902 19.120663 c 496 | 9.349156 19.120663 9.349410 19.120663 9.349665 19.120663 c 497 | 9.349919 19.120663 9.350173 19.120663 9.350428 19.120663 c 498 | 9.350682 19.120663 9.350936 19.120663 9.351191 19.120663 c 499 | 9.351445 19.120663 9.351699 19.120663 9.351954 19.120663 c 500 | 9.352208 19.120663 9.352462 19.120663 9.352716 19.120663 c 501 | 9.352971 19.120663 9.353225 19.120663 9.353479 19.120663 c 502 | 9.353734 19.120663 9.353988 19.120663 9.354242 19.120663 c 503 | 9.354496 19.120663 9.354751 19.120663 9.355005 19.120663 c 504 | 9.355259 19.120663 9.355514 19.120663 9.355767 19.120663 c 505 | 9.356022 19.120663 9.356277 19.120663 9.356530 19.120663 c 506 | 9.356785 19.120663 9.357039 19.120663 9.357293 19.120663 c 507 | 9.357548 19.120663 9.357801 19.120663 9.358056 19.120663 c 508 | 9.358310 19.120663 9.358564 19.120663 9.358819 19.120663 c 509 | 9.359073 19.120663 9.359327 19.120663 9.359581 19.120663 c 510 | 9.359836 19.120663 9.360089 19.120663 9.360344 19.120663 c 511 | 9.360599 19.120663 9.360852 19.120663 9.361107 19.120663 c 512 | 9.361361 19.120663 9.361615 19.120663 9.361869 19.120663 c 513 | 9.362123 19.120663 9.362377 19.120663 9.362632 19.120663 c 514 | 9.362885 19.120663 9.363140 19.120663 9.363395 19.120663 c 515 | 9.363648 19.120663 9.363903 19.120663 9.364157 19.120663 c 516 | 9.364411 19.120663 9.364665 19.120663 9.364920 19.120663 c 517 | 9.365173 19.120663 9.365428 19.120663 9.365682 19.120663 c 518 | 9.365936 19.120663 9.366190 19.120663 9.366445 19.120663 c 519 | 9.366698 19.120663 9.366953 19.120663 9.367207 19.120663 c 520 | 9.367461 19.120663 9.367715 19.120663 9.367970 19.120663 c 521 | 9.368223 19.120663 9.368478 19.120663 9.368731 19.120663 c 522 | 9.368986 19.120663 9.369240 19.120663 9.369493 19.120663 c 523 | 9.369748 19.120663 9.370002 19.120663 9.370256 19.120663 c 524 | 9.370510 19.120663 9.370765 19.120663 9.371018 19.120663 c 525 | 9.371273 19.120663 9.371527 19.120663 9.371781 19.120663 c 526 | 9.372035 19.120663 9.372289 19.120663 9.372543 19.120663 c 527 | 9.372797 19.120663 9.373052 19.120663 9.373305 19.120663 c 528 | 9.373560 19.120663 9.373814 19.120663 9.374067 19.120663 c 529 | 9.374322 19.120663 9.374576 19.120663 9.374830 19.120663 c 530 | 9.375084 19.120663 9.375338 19.120663 9.375592 19.120663 c 531 | 9.375846 19.120663 9.376101 19.120663 9.376354 19.120663 c 532 | 9.376608 19.120663 9.376863 19.120663 9.377116 19.120663 c 533 | 9.377371 19.120663 9.377625 19.120663 9.377878 19.120663 c 534 | 9.378133 19.120663 9.378386 19.120663 9.378640 19.120663 c 535 | 9.378895 19.120663 9.379148 19.120663 9.379403 19.120663 c 536 | 9.379657 19.120663 9.379910 19.120663 9.380165 19.120663 c 537 | 9.380419 19.120663 9.380672 19.120663 9.380927 19.120663 c 538 | 9.381181 19.120663 9.381434 19.120663 9.381689 19.120663 c 539 | 9.381943 19.120663 9.382196 19.120663 9.382451 19.120663 c 540 | 9.382705 19.120663 9.382958 19.120663 9.383213 19.120663 c 541 | 9.383467 19.120663 9.383720 19.120663 9.383975 19.120663 c 542 | 9.384229 19.120663 9.384482 19.120663 9.384736 19.120663 c 543 | 9.384991 19.120663 9.385244 19.120663 9.385498 19.120663 c 544 | 9.385753 19.120663 9.386006 19.120663 9.386260 19.120663 c 545 | 9.386515 19.120663 9.386768 19.120663 9.387022 19.120663 c 546 | 9.387276 19.120663 9.387530 19.120663 9.387784 19.120663 c 547 | 9.388038 19.120663 9.388291 19.120663 9.388546 19.120663 c 548 | 9.388800 19.120663 9.389053 19.120663 9.389308 19.120663 c 549 | 9.389562 19.120663 9.389815 19.120663 9.390069 19.120663 c 550 | 9.390324 19.120663 9.390577 19.120663 9.390831 19.120663 c 551 | 9.390831 21.120663 l 552 | 9.390577 21.120663 9.390324 21.120663 9.390069 21.120663 c 553 | 9.389815 21.120663 9.389562 21.120663 9.389308 21.120663 c 554 | 9.389053 21.120663 9.388800 21.120663 9.388546 21.120663 c 555 | 9.388291 21.120663 9.388038 21.120663 9.387784 21.120663 c 556 | 9.387530 21.120663 9.387276 21.120663 9.387022 21.120663 c 557 | 9.386768 21.120663 9.386515 21.120663 9.386260 21.120663 c 558 | 9.386006 21.120663 9.385753 21.120663 9.385498 21.120663 c 559 | 9.385244 21.120663 9.384991 21.120663 9.384736 21.120663 c 560 | 9.384482 21.120663 9.384229 21.120663 9.383975 21.120663 c 561 | 9.383720 21.120663 9.383467 21.120663 9.383213 21.120663 c 562 | 9.382958 21.120663 9.382705 21.120663 9.382451 21.120663 c 563 | 9.382196 21.120663 9.381943 21.120663 9.381689 21.120663 c 564 | 9.381434 21.120663 9.381181 21.120663 9.380927 21.120663 c 565 | 9.380672 21.120663 9.380419 21.120663 9.380165 21.120663 c 566 | 9.379910 21.120663 9.379657 21.120663 9.379403 21.120663 c 567 | 9.379148 21.120663 9.378895 21.120663 9.378640 21.120663 c 568 | 9.378386 21.120663 9.378133 21.120663 9.377878 21.120663 c 569 | 9.377625 21.120663 9.377371 21.120663 9.377116 21.120663 c 570 | 9.376863 21.120663 9.376608 21.120663 9.376354 21.120663 c 571 | 9.376101 21.120663 9.375846 21.120663 9.375592 21.120663 c 572 | 9.375338 21.120663 9.375084 21.120663 9.374830 21.120663 c 573 | 9.374576 21.120663 9.374322 21.120663 9.374067 21.120663 c 574 | 9.373814 21.120663 9.373560 21.120663 9.373305 21.120663 c 575 | 9.373052 21.120663 9.372797 21.120663 9.372543 21.120663 c 576 | 9.372289 21.120663 9.372035 21.120663 9.371781 21.120663 c 577 | 9.371527 21.120663 9.371273 21.120663 9.371018 21.120663 c 578 | 9.370765 21.120663 9.370510 21.120663 9.370256 21.120663 c 579 | 9.370002 21.120663 9.369748 21.120663 9.369493 21.120663 c 580 | 9.369240 21.120663 9.368986 21.120663 9.368731 21.120663 c 581 | 9.368478 21.120663 9.368223 21.120663 9.367970 21.120663 c 582 | 9.367715 21.120663 9.367461 21.120663 9.367207 21.120663 c 583 | 9.366953 21.120663 9.366698 21.120663 9.366445 21.120663 c 584 | 9.366190 21.120663 9.365936 21.120663 9.365682 21.120663 c 585 | 9.365428 21.120663 9.365173 21.120663 9.364920 21.120663 c 586 | 9.364665 21.120663 9.364411 21.120663 9.364157 21.120663 c 587 | 9.363903 21.120663 9.363648 21.120663 9.363395 21.120663 c 588 | 9.363140 21.120663 9.362885 21.120663 9.362632 21.120663 c 589 | 9.362377 21.120663 9.362123 21.120663 9.361869 21.120663 c 590 | 9.361615 21.120663 9.361361 21.120663 9.361107 21.120663 c 591 | 9.360852 21.120663 9.360599 21.120663 9.360344 21.120663 c 592 | 9.360089 21.120663 9.359836 21.120663 9.359581 21.120663 c 593 | 9.359327 21.120663 9.359073 21.120663 9.358819 21.120663 c 594 | 9.358564 21.120663 9.358310 21.120663 9.358056 21.120663 c 595 | 9.357801 21.120663 9.357548 21.120663 9.357293 21.120663 c 596 | 9.357039 21.120663 9.356785 21.120663 9.356530 21.120663 c 597 | 9.356277 21.120663 9.356022 21.120663 9.355767 21.120663 c 598 | 9.355514 21.120663 9.355259 21.120663 9.355005 21.120663 c 599 | 9.354751 21.120663 9.354496 21.120663 9.354242 21.120663 c 600 | 9.353988 21.120663 9.353734 21.120663 9.353479 21.120663 c 601 | 9.353225 21.120663 9.352971 21.120663 9.352716 21.120663 c 602 | 9.352462 21.120663 9.352208 21.120663 9.351954 21.120663 c 603 | 9.351699 21.120663 9.351445 21.120663 9.351191 21.120663 c 604 | 9.350936 21.120663 9.350682 21.120663 9.350428 21.120663 c 605 | 9.350173 21.120663 9.349919 21.120663 9.349665 21.120663 c 606 | 9.349410 21.120663 9.349156 21.120663 9.348902 21.120663 c 607 | 9.348647 21.120663 9.348393 21.120663 9.348139 21.120663 c 608 | 9.347884 21.120663 9.347631 21.120663 9.347376 21.120663 c 609 | 9.347121 21.120663 9.346868 21.120663 9.346613 21.120663 c 610 | 9.346358 21.120663 9.346104 21.120663 9.345850 21.120663 c 611 | 9.345595 21.120663 9.345341 21.120663 9.345087 21.120663 c 612 | 9.344832 21.120663 9.344578 21.120663 9.344323 21.120663 c 613 | 9.344069 21.120663 9.343815 21.120663 9.343560 21.120663 c 614 | 9.343307 21.120663 9.343052 21.120663 9.342797 21.120663 c 615 | 9.342543 21.120663 9.342289 21.120663 9.342034 21.120663 c 616 | 9.341780 21.120663 9.341525 21.120663 9.341271 21.120663 c 617 | 9.341017 21.120663 9.340762 21.120663 9.340508 21.120663 c 618 | 9.340253 21.120663 9.339999 21.120663 9.339745 21.120663 c 619 | 9.339490 21.120663 9.339235 21.120663 9.338982 21.120663 c 620 | 9.338727 21.120663 9.338472 21.120663 9.338218 21.120663 c 621 | 9.337963 21.120663 9.337709 21.120663 9.337455 21.120663 c 622 | 9.337200 21.120663 9.336946 21.120663 9.336691 21.120663 c 623 | 9.336437 21.120663 9.336183 21.120663 9.335928 21.120663 c 624 | 9.335673 21.120663 9.335419 21.120663 9.335165 21.120663 c 625 | 9.334910 21.120663 9.334656 21.120663 9.334401 21.120663 c 626 | 9.334146 21.120663 9.333892 21.120663 9.333638 21.120663 c 627 | 9.333384 21.120663 9.333129 21.120663 9.332874 21.120663 c 628 | 9.332620 21.120663 9.332365 21.120663 9.332110 21.120663 c 629 | 9.331857 21.120663 9.331602 21.120663 9.331347 21.120663 c 630 | 9.331093 21.120663 9.330838 21.120663 9.330584 21.120663 c 631 | 9.330329 21.120663 9.330075 21.120663 9.329821 21.120663 c 632 | 9.329566 21.120663 9.329311 21.120663 9.329057 21.120663 c 633 | 9.328802 21.120663 9.328547 21.120663 9.328293 21.120663 c 634 | 9.328038 21.120663 9.327785 21.120663 9.327530 21.120663 c 635 | 9.327275 21.120663 9.327021 21.120663 9.326766 21.120663 c 636 | 9.326511 21.120663 9.326257 21.120663 9.326002 21.120663 c 637 | 9.325747 21.120663 9.325493 21.120663 9.325238 21.120663 c 638 | 9.324984 21.120663 9.324729 21.120663 9.324475 21.120663 c 639 | 9.324221 21.120663 9.323966 21.120663 9.323711 21.120663 c 640 | 9.323457 21.120663 9.323202 21.120663 9.322948 21.120663 c 641 | 9.322693 21.120663 9.322438 21.120663 9.322184 21.120663 c 642 | 9.321929 21.120663 9.321674 21.120663 9.321420 21.120663 c 643 | 9.321165 21.120663 9.320910 21.120663 9.320656 21.120663 c 644 | 9.320401 21.120663 9.320147 21.120663 9.319892 21.120663 c 645 | 9.319637 21.120663 9.319383 21.120663 9.319128 21.120663 c 646 | 9.318873 21.120663 9.318619 21.120663 9.318364 21.120663 c 647 | 9.318110 21.120663 9.317855 21.120663 9.317600 21.120663 c 648 | 9.317346 21.120663 9.317091 21.120663 9.316836 21.120663 c 649 | 9.316582 21.120663 9.316327 21.120663 9.316072 21.120663 c 650 | 9.315818 21.120663 9.315563 21.120663 9.315309 21.120663 c 651 | 9.315054 21.120663 9.314799 21.120663 9.314545 21.120663 c 652 | 9.314290 21.120663 9.314035 21.120663 9.313781 21.120663 c 653 | 9.313526 21.120663 9.313272 21.120663 9.313017 21.120663 c 654 | 9.312762 21.120663 9.312508 21.120663 9.312253 21.120663 c 655 | 9.311998 21.120663 9.311743 21.120663 9.311488 21.120663 c 656 | 9.311234 21.120663 9.310979 21.120663 9.310724 21.120663 c 657 | 9.310470 21.120663 9.310215 21.120663 9.309960 21.120663 c 658 | 9.309706 21.120663 9.309451 21.120663 9.309196 21.120663 c 659 | 9.308942 21.120663 9.308686 21.120663 9.308432 21.120663 c 660 | 9.308177 21.120663 9.307922 21.120663 9.307668 21.120663 c 661 | 9.307413 21.120663 9.307158 21.120663 9.306904 21.120663 c 662 | 9.306649 21.120663 9.306394 21.120663 9.306139 21.120663 c 663 | 9.305884 21.120663 9.305630 21.120663 9.305375 21.120663 c 664 | 9.305120 21.120663 9.304866 21.120663 9.304610 21.120663 c 665 | 9.304356 21.120663 9.304101 21.120663 9.303846 21.120663 c 666 | 9.303592 21.120663 9.303337 21.120663 9.303082 21.120663 c 667 | 9.302827 21.120663 9.302572 21.120663 9.302318 21.120663 c 668 | 9.302063 21.120663 9.301808 21.120663 9.301554 21.120663 c 669 | 9.301298 21.120663 9.301044 21.120663 9.300789 21.120663 c 670 | 9.300534 21.120663 9.300280 21.120663 9.300024 21.120663 c 671 | 9.299769 21.120663 9.299515 21.120663 9.299260 21.120663 c 672 | 9.299006 21.120663 9.298750 21.120663 9.298495 21.120663 c 673 | 9.298241 21.120663 9.297986 21.120663 9.297731 21.120663 c 674 | 9.297476 21.120663 9.297221 21.120663 9.296967 21.120663 c 675 | 9.296712 21.120663 9.296456 21.120663 9.296202 21.120663 c 676 | 9.295947 21.120663 9.295692 21.120663 9.295438 21.120663 c 677 | 9.295182 21.120663 9.294928 21.120663 9.294673 21.120663 c 678 | 9.294418 21.120663 9.294163 21.120663 9.293908 21.120663 c 679 | 9.293653 21.120663 9.293399 21.120663 9.293143 21.120663 c 680 | 9.292889 21.120663 9.292634 21.120663 9.292378 21.120663 c 681 | 9.292124 21.120663 9.291869 21.120663 9.291615 21.120663 c 682 | 9.291359 21.120663 9.291104 21.120663 9.290850 21.120663 c 683 | 9.290595 21.120663 9.290339 21.120663 9.290085 21.120663 c 684 | 9.289830 21.120663 9.289575 21.120663 9.289320 21.120663 c 685 | 9.289065 21.120663 9.288810 21.120663 9.288555 21.120663 c 686 | 9.288301 21.120663 9.288045 21.120663 9.287790 21.120663 c 687 | 9.287536 21.120663 9.287281 21.120663 9.287025 21.120663 c 688 | 9.286771 21.120663 9.286516 21.120663 9.286261 21.120663 c 689 | 9.286006 21.120663 9.285751 21.120663 9.285496 21.120663 c 690 | 9.285241 21.120663 9.284986 21.120663 9.284731 21.120663 c 691 | 9.284476 21.120663 9.284221 21.120663 9.283966 21.120663 c 692 | 9.283711 21.120663 9.283456 21.120663 9.283201 21.120663 c 693 | 9.282947 21.120663 9.282691 21.120663 9.282436 21.120663 c 694 | 9.282181 21.120663 9.281926 21.120663 9.281672 21.120663 c 695 | 9.281416 21.120663 9.281161 21.120663 9.280907 21.120663 c 696 | 9.280651 21.120663 9.280396 21.120663 9.280141 21.120663 c 697 | 9.279886 21.120663 9.279632 21.120663 9.279376 21.120663 c 698 | 9.279121 21.120663 9.278866 21.120663 9.278611 21.120663 c 699 | 9.278357 21.120663 9.278101 21.120663 9.277846 21.120663 c 700 | 9.277591 21.120663 9.277336 21.120663 9.277081 21.120663 c 701 | 9.276826 21.120663 9.276571 21.120663 9.276316 21.120663 c 702 | 9.276061 21.120663 9.275805 21.120663 9.275551 21.120663 c 703 | 9.275295 21.120663 9.275041 21.120663 9.274785 21.120663 c 704 | 9.274530 21.120663 9.274275 21.120663 9.274020 21.120663 c 705 | 9.273766 21.120663 9.273510 21.120663 9.273255 21.120663 c 706 | 9.273000 21.120663 9.272745 21.120663 9.272490 21.120663 c 707 | 9.272235 21.120663 9.271979 21.120663 9.271725 21.120663 c 708 | 9.271469 21.120663 9.271214 21.120663 9.270959 21.120663 c 709 | 9.270704 21.120663 9.270449 21.120663 9.270194 21.120663 c 710 | 9.269938 21.120663 9.269684 21.120663 9.269428 21.120663 c 711 | 9.269174 21.120663 9.268918 21.120663 9.268663 21.120663 c 712 | 9.268408 21.120663 9.268153 21.120663 9.267898 21.120663 c 713 | 9.267643 21.120663 9.267387 21.120663 9.267133 21.120663 c 714 | 9.266877 21.120663 9.266622 21.120663 9.266367 21.120663 c 715 | 9.266111 21.120663 9.265857 21.120663 9.265601 21.120663 c 716 | 9.265347 21.120663 9.265091 21.120663 9.264836 21.120663 c 717 | 9.264581 21.120663 9.264325 21.120663 9.264071 21.120663 c 718 | 9.263815 21.120663 9.263560 21.120663 9.263305 21.120663 c 719 | 9.263050 21.120663 9.262794 21.120663 9.262539 21.120663 c 720 | 9.262284 21.120663 9.262029 21.120663 9.261774 21.120663 c 721 | 9.261518 21.120663 9.261263 21.120663 9.261008 21.120663 c 722 | 9.260753 21.120663 9.260498 21.120663 9.260242 21.120663 c 723 | 9.259987 21.120663 9.259732 21.120663 9.259477 21.120663 c 724 | 9.259222 21.120663 9.258966 21.120663 9.258711 21.120663 c 725 | 9.258456 21.120663 9.258201 21.120663 9.257946 21.120663 c 726 | 9.257690 21.120663 9.257435 21.120663 9.257180 21.120663 c 727 | 9.256925 21.120663 9.256669 21.120663 9.256414 21.120663 c 728 | 9.256159 21.120663 9.255903 21.120663 9.255649 21.120663 c 729 | 9.255393 21.120663 9.255137 21.120663 9.254883 21.120663 c 730 | 9.254627 21.120663 9.254372 21.120663 9.254117 21.120663 c 731 | 9.253861 21.120663 9.253606 21.120663 9.253351 21.120663 c 732 | 9.253096 21.120663 9.252840 21.120663 9.252585 21.120663 c 733 | 9.252330 21.120663 9.252074 21.120663 9.251820 21.120663 c 734 | 9.251564 21.120663 9.251308 21.120663 9.251053 21.120663 c 735 | 9.250798 21.120663 9.250543 21.120663 9.250287 21.120663 c 736 | 9.250032 21.120663 9.249777 21.120663 9.249521 21.120663 c 737 | 9.249266 21.120663 9.249011 21.120663 9.248755 21.120663 c 738 | 9.248500 21.120663 9.248245 21.120663 9.247990 21.120663 c 739 | 9.247734 21.120663 9.247478 21.120663 9.247224 21.120663 c 740 | 9.246968 21.120663 9.246713 21.120663 9.246457 21.120663 c 741 | 9.246202 21.120663 9.245947 21.120663 9.245691 21.120663 c 742 | 9.245436 21.120663 9.245181 21.120663 9.244925 21.120663 c 743 | 9.244670 21.120663 9.244414 21.120663 9.244160 21.120663 c 744 | 9.243904 21.120663 9.243649 21.120663 9.243393 21.120663 c 745 | 9.243137 21.120663 9.242883 21.120663 9.242627 21.120663 c 746 | 9.242372 21.120663 9.242116 21.120663 9.241860 21.120663 c 747 | 9.241606 21.120663 9.241350 21.120663 9.241095 21.120663 c 748 | 9.240839 21.120663 9.240583 21.120663 9.240329 21.120663 c 749 | 9.240073 21.120663 9.239818 21.120663 9.239562 21.120663 c 750 | 9.239306 21.120663 9.239051 21.120663 9.238796 21.120663 c 751 | 9.238541 21.120663 9.238285 21.120663 9.238029 21.120663 c 752 | 9.237774 21.120663 9.237518 21.120663 9.237264 21.120663 c 753 | 9.237008 21.120663 9.236753 21.120663 9.236497 21.120663 c 754 | 9.236241 21.120663 9.235986 21.120663 9.235730 21.120663 c 755 | 9.235476 21.120663 9.235220 21.120663 9.234964 21.120663 c 756 | 9.234709 21.120663 9.234453 21.120663 9.234198 21.120663 c 757 | 9.233942 21.120663 9.233686 21.120663 9.233432 21.120663 c 758 | 9.233176 21.120663 9.232921 21.120663 9.232665 21.120663 c 759 | 9.232409 21.120663 9.232154 21.120663 9.231898 21.120663 c 760 | 9.231643 21.120663 9.231387 21.120663 9.231132 21.120663 c 761 | 9.230877 21.120663 9.230621 21.120663 9.230366 21.120663 c 762 | 9.230110 21.120663 9.229855 21.120663 9.229599 21.120663 c 763 | 9.229343 21.120663 9.229088 21.120663 9.228832 21.120663 c 764 | 9.228577 21.120663 9.228321 21.120663 9.228065 21.120663 c 765 | 9.227810 21.120663 9.227554 21.120663 9.227300 21.120663 c 766 | 9.227044 21.120663 9.226789 21.120663 9.226533 21.120663 c 767 | 9.226277 21.120663 9.226022 21.120663 9.225766 21.120663 c 768 | 9.225511 21.120663 9.225255 21.120663 9.224999 21.120663 c 769 | 9.224744 21.120663 9.224488 21.120663 9.224233 21.120663 c 770 | 9.223977 21.120663 9.223722 21.120663 9.223466 21.120663 c 771 | 9.223210 21.120663 9.222955 21.120663 9.222699 21.120663 c 772 | 9.222444 21.120663 9.222188 21.120663 9.221932 21.120663 c 773 | 9.221677 21.120663 9.221421 21.120663 9.221166 21.120663 c 774 | 9.220910 21.120663 9.220654 21.120663 9.220399 21.120663 c 775 | 9.220143 21.120663 9.219888 21.120663 9.219632 21.120663 c 776 | 9.219377 21.120663 9.219121 21.120663 9.218865 21.120663 c 777 | 9.218610 21.120663 9.218354 21.120663 9.218099 21.120663 c 778 | 9.217842 21.120663 9.217587 21.120663 9.217331 21.120663 c 779 | 9.217075 21.120663 9.216820 21.120663 9.216564 21.120663 c 780 | 9.216309 21.120663 9.216053 21.120663 9.215797 21.120663 c 781 | 9.215542 21.120663 9.215286 21.120663 9.215031 21.120663 c 782 | 9.214775 21.120663 9.214520 21.120663 9.214264 21.120663 c 783 | 9.214007 21.120663 9.213752 21.120663 9.213496 21.120663 c 784 | 9.213241 21.120663 9.212985 21.120663 9.212729 21.120663 c 785 | 9.212474 21.120663 9.212218 21.120663 9.211963 21.120663 c 786 | 9.211706 21.120663 9.211451 21.120663 9.211195 21.120663 c 787 | 9.210939 21.120663 9.210684 21.120663 9.210428 21.120663 c 788 | 9.210173 21.120663 9.209917 21.120663 9.209661 21.120663 c 789 | 9.209405 21.120663 9.209149 21.120663 9.208894 21.120663 c 790 | 9.208638 21.120663 9.208383 21.120663 9.208127 21.120663 c 791 | 9.207870 21.120663 9.207615 21.120663 9.207359 21.120663 c 792 | 9.207104 21.120663 9.206848 21.120663 9.206593 21.120663 c 793 | 9.206337 21.120663 9.206080 21.120663 9.205825 21.120663 c 794 | 9.205569 21.120663 9.205314 21.120663 9.205058 21.120663 c 795 | 9.204802 21.120663 9.204546 21.120663 9.204290 21.120663 c 796 | 9.204035 21.120663 9.203779 21.120663 9.203523 21.120663 c 797 | 9.203267 21.120663 9.203012 21.120663 9.202756 21.120663 c 798 | 9.202500 21.120663 9.202244 21.120663 9.201988 21.120663 c 799 | 9.201733 21.120663 9.201477 21.120663 9.201221 21.120663 c 800 | 9.200965 21.120663 9.200709 21.120663 9.200454 21.120663 c 801 | 9.200198 21.120663 9.199942 21.120663 9.199686 21.120663 c 802 | 9.199430 21.120663 9.199175 21.120663 9.198918 21.120663 c 803 | 9.198663 21.120663 9.198407 21.120663 9.198152 21.120663 c 804 | 9.197895 21.120663 9.197639 21.120663 9.197384 21.120663 c 805 | 9.197128 21.120663 9.196872 21.120663 9.196616 21.120663 c 806 | 9.196361 21.120663 9.196105 21.120663 9.195848 21.120663 c 807 | 9.195593 21.120663 9.195337 21.120663 9.195081 21.120663 c 808 | 9.194825 21.120663 9.194570 21.120663 9.194314 21.120663 c 809 | 9.194057 21.120663 9.193802 21.120663 9.193546 21.120663 c 810 | 9.193290 21.120663 9.193034 21.120663 9.192779 21.120663 c 811 | 9.192522 21.120663 9.192266 21.120663 9.192011 21.120663 c 812 | 9.191754 21.120663 9.191499 21.120663 9.191243 21.120663 c 813 | 9.190987 21.120663 9.190731 21.120663 9.190475 21.120663 c 814 | 9.190219 21.120663 9.189963 21.120663 9.189708 21.120663 c 815 | 9.189451 21.120663 9.189196 21.120663 9.188940 21.120663 c 816 | 9.188684 21.120663 9.188428 21.120663 9.188172 21.120663 c 817 | 9.187916 21.120663 9.187660 21.120663 9.187405 21.120663 c 818 | 9.187148 21.120663 9.186893 21.120663 9.186636 21.120663 c 819 | 9.186380 21.120663 9.186125 21.120663 9.185868 21.120663 c 820 | 9.185613 21.120663 9.185357 21.120663 9.185101 21.120663 c 821 | 9.184845 21.120663 9.184588 21.120663 9.184333 21.120663 c 822 | 9.184077 21.120663 9.183821 21.120663 9.183565 21.120663 c 823 | 9.183309 21.120663 9.183053 21.120663 9.182797 21.120663 c 824 | 9.182541 21.120663 9.182285 21.120663 9.182029 21.120663 c 825 | 9.181773 21.120663 9.181517 21.120663 9.181261 21.120663 c 826 | 9.181005 21.120663 9.180749 21.120663 9.180493 21.120663 c 827 | 9.180237 21.120663 9.179981 21.120663 9.179725 21.120663 c 828 | 9.179469 21.120663 9.179213 21.120663 9.178957 21.120663 c 829 | 9.178701 21.120663 9.178445 21.120663 9.178189 21.120663 c 830 | 9.177933 21.120663 9.177677 21.120663 9.177421 21.120663 c 831 | 9.177165 21.120663 9.176908 21.120663 9.176653 21.120663 c 832 | 9.176396 21.120663 9.176141 21.120663 9.175884 21.120663 c 833 | 9.175629 21.120663 9.175372 21.120663 9.175117 21.120663 c 834 | 9.174860 21.120663 9.174604 21.120663 9.174348 21.120663 c 835 | 9.174092 21.120663 9.173836 21.120663 9.173580 21.120663 c 836 | 9.173324 21.120663 9.173068 21.120663 9.172812 21.120663 c 837 | 9.172556 21.120663 9.172299 21.120663 9.172044 21.120663 c 838 | 9.171787 21.120663 9.171532 21.120663 9.171275 21.120663 c 839 | 9.171020 21.120663 9.170763 21.120663 9.170507 21.120663 c 840 | 9.170251 21.120663 9.169994 21.120663 9.169739 21.120663 c 841 | 9.169482 21.120663 9.169227 21.120663 9.168970 21.120663 c 842 | 9.168715 21.120663 9.168458 21.120663 9.168202 21.120663 c 843 | 9.167946 21.120663 9.167689 21.120663 9.167434 21.120663 c 844 | 9.167177 21.120663 9.166922 21.120663 9.166665 21.120663 c 845 | 9.166409 21.120663 9.166153 21.120663 9.165896 21.120663 c 846 | 9.165641 21.120663 9.165384 21.120663 9.165129 21.120663 c 847 | 9.164872 21.120663 9.164616 21.120663 9.164360 21.120663 c 848 | 9.164104 21.120663 9.163847 21.120663 9.163591 21.120663 c 849 | 9.163335 21.120663 9.163079 21.120663 9.162823 21.120663 c 850 | 9.162566 21.120663 9.162311 21.120663 9.162054 21.120663 c 851 | 9.161798 21.120663 9.161542 21.120663 9.161285 21.120663 c 852 | 9.161030 21.120663 9.160773 21.120663 9.160517 21.120663 c 853 | 9.160261 21.120663 9.160005 21.120663 9.159748 21.120663 c 854 | 9.159492 21.120663 9.159236 21.120663 9.158979 21.120663 c 855 | 9.158724 21.120663 9.158467 21.120663 9.158211 21.120663 c 856 | 9.157955 21.120663 9.157699 21.120663 9.157442 21.120663 c 857 | 9.157187 21.120663 9.156930 21.120663 9.156673 21.120663 c 858 | 9.156418 21.120663 9.156161 21.120663 9.155905 21.120663 c 859 | 9.155649 21.120663 9.155393 21.120663 9.155136 21.120663 c 860 | 9.154880 21.120663 9.154624 21.120663 9.154367 21.120663 c 861 | 9.154111 21.120663 9.153855 21.120663 9.153599 21.120663 c 862 | 9.153342 21.120663 9.153086 21.120663 9.152830 21.120663 c 863 | 9.152574 21.120663 9.152317 21.120663 9.152061 21.120663 c 864 | 9.151805 21.120663 9.151548 21.120663 9.151292 21.120663 c 865 | 9.151036 21.120663 9.150780 21.120663 9.150523 21.120663 c 866 | 9.150267 21.120663 9.150011 21.120663 9.149755 21.120663 c 867 | 9.149498 21.120663 9.149241 21.120663 9.148985 21.120663 c 868 | 9.148729 21.120663 9.148473 21.120663 9.148216 21.120663 c 869 | 9.147960 21.120663 9.147704 21.120663 9.147448 21.120663 c 870 | 9.147191 21.120663 9.146935 21.120663 9.146678 21.120663 c 871 | 9.146422 21.120663 9.146166 21.120663 9.145909 21.120663 c 872 | 9.145653 21.120663 9.145396 21.120663 9.145141 21.120663 c 873 | 9.144884 21.120663 9.144628 21.120663 9.144371 21.120663 c 874 | 9.144114 21.120663 9.143859 21.120663 9.143602 21.120663 c 875 | 9.143346 21.120663 9.143089 21.120663 9.142833 21.120663 c 876 | 9.142576 21.120663 9.142321 21.120663 9.142064 21.120663 c 877 | 9.141808 21.120663 9.141551 21.120663 9.141294 21.120663 c 878 | 9.141038 21.120663 9.140782 21.120663 9.140526 21.120663 c 879 | 9.140269 21.120663 9.140013 21.120663 9.139756 21.120663 c 880 | 9.139500 21.120663 9.139243 21.120663 9.138987 21.120663 c 881 | 9.138731 21.120663 9.138474 21.120663 9.138218 21.120663 c 882 | 9.137961 21.120663 9.137705 21.120663 9.137448 21.120663 c 883 | 9.137192 21.120663 9.136935 21.120663 9.136680 21.120663 c 884 | 9.136423 21.120663 9.136167 21.120663 9.135910 21.120663 c 885 | 9.135653 21.120663 9.135397 21.120663 9.135140 21.120663 c 886 | 9.134884 21.120663 9.134627 21.120663 9.134371 21.120663 c 887 | 9.134114 21.120663 9.133859 21.120663 9.133602 21.120663 c 888 | 9.133346 21.120663 9.133089 21.120663 9.132833 21.120663 c 889 | 9.132576 21.120663 9.132319 21.120663 9.132063 21.120663 c 890 | 9.131806 21.120663 9.131550 21.120663 9.131293 21.120663 c 891 | 9.131037 21.120663 9.130780 21.120663 9.130524 21.120663 c 892 | 9.130267 21.120663 9.130011 21.120663 9.129754 21.120663 c 893 | 9.129498 21.120663 9.129241 21.120663 9.128984 21.120663 c 894 | 9.128728 21.120663 9.128472 21.120663 9.128216 21.120663 c 895 | 9.127959 21.120663 9.127703 21.120663 9.127446 21.120663 c 896 | 9.127190 21.120663 9.126933 21.120663 9.126677 21.120663 c 897 | 9.126420 21.120663 9.126163 21.120663 9.125907 21.120663 c 898 | 9.125650 21.120663 9.125394 21.120663 9.125137 21.120663 c 899 | 9.124881 21.120663 9.124623 21.120663 9.124367 21.120663 c 900 | 9.124110 21.120663 9.123854 21.120663 9.123597 21.120663 c 901 | 9.123341 21.120663 9.123084 21.120663 9.122828 21.120663 c 902 | 9.122571 21.120663 9.122314 21.120663 9.122058 21.120663 c 903 | 9.121801 21.120663 9.121545 21.120663 9.121288 21.120663 c 904 | 9.121032 21.120663 9.120775 21.120663 9.120519 21.120663 c 905 | 9.120262 21.120663 9.120006 21.120663 9.119749 21.120663 c 906 | 9.119493 21.120663 9.119235 21.120663 9.118979 21.120663 c 907 | 9.118722 21.120663 9.118465 21.120663 9.118209 21.120663 c 908 | 9.117952 21.120663 9.117696 21.120663 9.117439 21.120663 c 909 | 9.117183 21.120663 9.116926 21.120663 9.116670 21.120663 c 910 | 9.116412 21.120663 9.116156 21.120663 9.115899 21.120663 c 911 | 9.115643 21.120663 9.115386 21.120663 9.115129 21.120663 c 912 | 9.114873 21.120663 9.114616 21.120663 9.114360 21.120663 c 913 | 9.114102 21.120663 9.113846 21.120663 9.113589 21.120663 c 914 | 9.113333 21.120663 9.113076 21.120663 9.112820 21.120663 c 915 | 9.112563 21.120663 9.112306 21.120663 9.112049 21.120663 c 916 | 9.111793 21.120663 9.111536 21.120663 9.111279 21.120663 c 917 | 9.111023 21.120663 9.110765 21.120663 9.110509 21.120663 c 918 | 9.110252 21.120663 9.109996 21.120663 9.109739 21.120663 c 919 | 9.109483 21.120663 9.109225 21.120663 9.108969 21.120663 c 920 | 9.108712 21.120663 9.108456 21.120663 9.108199 21.120663 c 921 | 9.107942 21.120663 9.107685 21.120663 9.107429 21.120663 c 922 | 9.107172 21.120663 9.106915 21.120663 9.106658 21.120663 c 923 | 9.106401 21.120663 9.106145 21.120663 9.105888 21.120663 c 924 | 9.105632 21.120663 9.105374 21.120663 9.105118 21.120663 c 925 | 9.104861 21.120663 9.104605 21.120663 9.104348 21.120663 c 926 | 9.104091 21.120663 9.103834 21.120663 9.103578 21.120663 c 927 | 9.103321 21.120663 9.103064 21.120663 9.102807 21.120663 c 928 | 9.102551 21.120663 9.102294 21.120663 9.102036 21.120663 c 929 | 9.101780 21.120663 9.101523 21.120663 9.101267 21.120663 c 930 | 9.101009 21.120663 9.100753 21.120663 9.100496 21.120663 c 931 | 9.100239 21.120663 9.099982 21.120663 9.099726 21.120663 c 932 | 9.099469 21.120663 9.099212 21.120663 9.098955 21.120663 c 933 | 9.098699 21.120663 9.098441 21.120663 9.098185 21.120663 c 934 | 9.097928 21.120663 9.097672 21.120663 9.097414 21.120663 c 935 | 9.097157 21.120663 9.096901 21.120663 9.096643 21.120663 c 936 | 9.096387 21.120663 9.096130 21.120663 9.095873 21.120663 c 937 | 9.095616 21.120663 9.095360 21.120663 9.095102 21.120663 c 938 | 9.094846 21.120663 9.094589 21.120663 9.094332 21.120663 c 939 | 9.094075 21.120663 9.093819 21.120663 9.093561 21.120663 c 940 | 9.093305 21.120663 9.093048 21.120663 9.092791 21.120663 c 941 | 9.092534 21.120663 9.092278 21.120663 9.092020 21.120663 c 942 | 9.091763 21.120663 9.091507 21.120663 9.091249 21.120663 c 943 | 9.090993 21.120663 9.090735 21.120663 9.090479 21.120663 c 944 | 9.090222 21.120663 9.089965 21.120663 9.089708 21.120663 c 945 | 9.089452 21.120663 9.089194 21.120663 9.088938 21.120663 c 946 | 9.088680 21.120663 9.088424 21.120663 9.088167 21.120663 c 947 | 9.087910 21.120663 9.087653 21.120663 9.087396 21.120663 c 948 | 9.087139 21.120663 9.086883 21.120663 9.086625 21.120663 c 949 | 9.086369 21.120663 9.086111 21.120663 9.085855 21.120663 c 950 | 9.085597 21.120663 9.085340 21.120663 9.085084 21.120663 c 951 | 9.084826 21.120663 9.084570 21.120663 9.084312 21.120663 c 952 | 9.084056 21.120663 9.083798 21.120663 9.083542 21.120663 c 953 | 9.083285 21.120663 9.083028 21.120663 9.082771 21.120663 c 954 | 9.082514 21.120663 9.082257 21.120663 9.082000 21.120663 c 955 | 9.081743 21.120663 9.081486 21.120663 9.081229 21.120663 c 956 | 9.080972 21.120663 9.080715 21.120663 9.080458 21.120663 c 957 | 9.080201 21.120663 9.079944 21.120663 9.079687 21.120663 c 958 | 9.079430 21.120663 9.079173 21.120663 9.078917 21.120663 c 959 | 9.078659 21.120663 9.078403 21.120663 9.078145 21.120663 c 960 | 9.077888 21.120663 9.077631 21.120663 9.077374 21.120663 c 961 | 9.077117 21.120663 9.076859 21.120663 9.076603 21.120663 c 962 | 9.076345 21.120663 9.076089 21.120663 9.075831 21.120663 c 963 | 9.075575 21.120663 9.075317 21.120663 9.075061 21.120663 c 964 | 9.074803 21.120663 9.074547 21.120663 9.074289 21.120663 c 965 | 9.074033 21.120663 9.073775 21.120663 9.073519 21.120663 c 966 | 9.073261 21.120663 9.073004 21.120663 9.072747 21.120663 c 967 | 9.072490 21.120663 9.072233 21.120663 9.071976 21.120663 c 968 | 9.071719 21.120663 9.071462 21.120663 9.071204 21.120663 c 969 | 9.070948 21.120663 9.070690 21.120663 9.070434 21.120663 c 970 | 9.070176 21.120663 9.069920 21.120663 9.069662 21.120663 c 971 | 9.069405 21.120663 9.069148 21.120663 9.068891 21.120663 c 972 | 9.068634 21.120663 9.068377 21.120663 9.068119 21.120663 c 973 | 9.067863 21.120663 9.067605 21.120663 9.067348 21.120663 c 974 | 9.067091 21.120663 9.066833 21.120663 9.066577 21.120663 c 975 | 9.066319 21.120663 9.066062 21.120663 9.065805 21.120663 c 976 | 9.065548 21.120663 9.065290 21.120663 9.065034 21.120663 c 977 | 9.064776 21.120663 9.064520 21.120663 9.064262 21.120663 c 978 | 9.064005 21.120663 9.063748 21.120663 9.063491 21.120663 c 979 | 9.063233 21.120663 9.062977 21.120663 9.062719 21.120663 c 980 | 9.062462 21.120663 9.062205 21.120663 9.061948 21.120663 c 981 | 9.061690 21.120663 9.061434 21.120663 9.061176 21.120663 c 982 | 9.060919 21.120663 9.060662 21.120663 9.060405 21.120663 c 983 | 9.060147 21.120663 9.059891 21.120663 9.059633 21.120663 c 984 | 9.059376 21.120663 9.059118 21.120663 9.058862 21.120663 c 985 | 9.058604 21.120663 9.058347 21.120663 9.058090 21.120663 c 986 | 9.057833 21.120663 9.057575 21.120663 9.057318 21.120663 c 987 | 9.057061 21.120663 9.056804 21.120663 9.056546 21.120663 c 988 | 9.056290 21.120663 9.056032 21.120663 9.055775 21.120663 c 989 | 9.055517 21.120663 9.055261 21.120663 9.055003 21.120663 c 990 | 9.054746 21.120663 9.054488 21.120663 9.054232 21.120663 c 991 | 9.053974 21.120663 9.053717 21.120663 9.053459 21.120663 c 992 | 9.053203 21.120663 9.052945 21.120663 9.052688 21.120663 c 993 | 9.052430 21.120663 9.052174 21.120663 9.051916 21.120663 c 994 | 9.051659 21.120663 9.051401 21.120663 9.051144 21.120663 c 995 | 9.050887 21.120663 9.050630 21.120663 9.050372 21.120663 c 996 | 9.050115 21.120663 9.049857 21.120663 9.049601 21.120663 c 997 | 9.049343 21.120663 9.049086 21.120663 9.048828 21.120663 c 998 | 9.048571 21.120663 9.048314 21.120663 9.048057 21.120663 c 999 | 9.047799 21.120663 9.047542 21.120663 9.047284 21.120663 c 1000 | 9.047028 21.120663 9.046770 21.120663 9.046513 21.120663 c 1001 | 9.046255 21.120663 9.045998 21.120663 9.045740 21.120663 c 1002 | 9.045484 21.120663 9.045226 21.120663 9.044969 21.120663 c 1003 | 9.044711 21.120663 9.044454 21.120663 9.044196 21.120663 c 1004 | 9.043939 21.120663 9.043682 21.120663 9.043425 21.120663 c 1005 | 9.043167 21.120663 9.042910 21.120663 9.042652 21.120663 c 1006 | 9.042395 21.120663 9.042137 21.120663 9.041880 21.120663 c 1007 | 9.041623 21.120663 9.041366 21.120663 9.041108 21.120663 c 1008 | 9.040851 21.120663 9.040593 21.120663 9.040336 21.120663 c 1009 | 9.040078 21.120663 9.039821 21.120663 9.039563 21.120663 c 1010 | 9.039307 21.120663 9.039049 21.120663 9.038792 21.120663 c 1011 | 9.038534 21.120663 9.038277 21.120663 9.038019 21.120663 c 1012 | 9.037762 21.120663 9.037504 21.120663 9.037247 21.120663 c 1013 | 9.036989 21.120663 9.036732 21.120663 9.036474 21.120663 c 1014 | 9.036217 21.120663 9.035960 21.120663 9.035703 21.120663 c 1015 | 9.035445 21.120663 9.035188 21.120663 9.034930 21.120663 c 1016 | 9.034673 21.120663 9.034415 21.120663 9.034158 21.120663 c 1017 | 9.033900 21.120663 9.033643 21.120663 9.033385 21.120663 c 1018 | 9.033128 21.120663 9.032870 21.120663 9.032613 21.120663 c 1019 | 9.032355 21.120663 9.032098 21.120663 9.031840 21.120663 c 1020 | 9.031583 21.120663 9.031325 21.120663 9.031068 21.120663 c 1021 | 9.030810 21.120663 9.030553 21.120663 9.030295 21.120663 c 1022 | 9.030038 21.120663 9.029780 21.120663 9.029523 21.120663 c 1023 | 9.029265 21.120663 9.029008 21.120663 9.028750 21.120663 c 1024 | 9.028493 21.120663 9.028235 21.120663 9.027978 21.120663 c 1025 | 9.027720 21.120663 9.027463 21.120663 9.027205 21.120663 c 1026 | 9.026948 21.120663 9.026690 21.120663 9.026433 21.120663 c 1027 | 9.026175 21.120663 9.025918 21.120663 9.025661 21.120663 c 1028 | 9.025403 21.120663 9.025146 21.120663 9.024888 21.120663 c 1029 | 9.024631 21.120663 9.024372 21.120663 9.024115 21.120663 c 1030 | 9.023857 21.120663 9.023600 21.120663 9.023342 21.120663 c 1031 | 9.023085 21.120663 9.022827 21.120663 9.022570 21.120663 c 1032 | 9.022312 21.120663 9.022055 21.120663 9.021797 21.120663 c 1033 | 9.021540 21.120663 9.021282 21.120663 9.021024 21.120663 c 1034 | 9.020766 21.120663 9.020509 21.120663 9.020251 21.120663 c 1035 | 9.019994 21.120663 9.019736 21.120663 9.019479 21.120663 c 1036 | 9.019221 21.120663 9.018964 21.120663 9.018705 21.120663 c 1037 | 9.018448 21.120663 9.018190 21.120663 9.017933 21.120663 c 1038 | 9.017675 21.120663 9.017418 21.120663 9.017160 21.120663 c 1039 | 9.016903 21.120663 9.016644 21.120663 9.016387 21.120663 c 1040 | 9.016129 21.120663 9.015872 21.120663 9.015615 21.120663 c 1041 | 9.015357 21.120663 9.015100 21.120663 9.014841 21.120663 c 1042 | 9.014584 21.120663 9.014326 21.120663 9.014069 21.120663 c 1043 | 9.013811 21.120663 9.013554 21.120663 9.013295 21.120663 c 1044 | 9.013038 21.120663 9.012780 21.120663 9.012523 21.120663 c 1045 | 9.012265 21.120663 9.012007 21.120663 9.011749 21.120663 c 1046 | 9.011492 21.120663 9.011234 21.120663 9.010977 21.120663 c 1047 | 9.010718 21.120663 9.010461 21.120663 9.010203 21.120663 c 1048 | 9.009946 21.120663 9.009688 21.120663 9.009430 21.120663 c 1049 | 9.009172 21.120663 9.008915 21.120663 9.008657 21.120663 c 1050 | 9.008400 21.120663 9.008142 21.120663 9.007884 21.120663 c 1051 | 9.007627 21.120663 9.007369 21.120663 9.007111 21.120663 c 1052 | 9.006853 21.120663 9.006596 21.120663 9.006338 21.120663 c 1053 | 9.006080 21.120663 9.005822 21.120663 9.005565 21.120663 c 1054 | 9.005307 21.120663 9.005049 21.120663 9.004791 21.120663 c 1055 | 9.004534 21.120663 9.004276 21.120663 9.004018 21.120663 c 1056 | 9.003760 21.120663 9.003503 21.120663 9.003244 21.120663 c 1057 | 9.002987 21.120663 9.002729 21.120663 9.002472 21.120663 c 1058 | 9.002213 21.120663 9.001956 21.120663 9.001698 21.120663 c 1059 | 9.001440 21.120663 9.001183 21.120663 9.000925 21.120663 c 1060 | 9.000668 21.120663 9.000409 21.120663 9.000152 21.120663 c 1061 | 8.999894 21.120663 8.999636 21.120663 8.999378 21.120663 c 1062 | 8.999121 21.120663 8.998862 21.120663 8.998605 21.120663 c 1063 | 8.998347 21.120663 8.998089 21.120663 8.997831 21.120663 c 1064 | 8.997831 19.120663 l 1065 | h 1066 | 8.710133 20.853226 m 1067 | 7.254182 19.500359 6.318332 17.680069 6.065259 15.708776 c 1068 | 8.048978 15.454106 l 1069 | 8.242505 16.961567 8.958155 18.353552 10.071529 19.388098 c 1070 | 8.710133 20.853226 l 1071 | h 1072 | 6.065259 15.708776 m 1073 | 5.812185 13.737481 6.257890 11.739830 7.324898 10.063065 c 1074 | 9.012232 11.136799 l 1075 | 8.196284 12.419031 7.855451 13.946647 8.048978 15.454106 c 1076 | 6.065259 15.708776 l 1077 | h 1078 | 7.324898 10.063065 m 1079 | 8.391906 8.386300 10.012748 7.136446 11.905680 6.530761 c 1080 | 12.515182 8.435624 l 1081 | 11.067647 8.898795 9.828179 9.854567 9.012232 11.136799 c 1082 | 7.324898 10.063065 l 1083 | h 1084 | 11.905680 6.530761 m 1085 | 13.798612 5.925076 15.843940 6.001857 17.686132 6.747759 c 1086 | 16.935530 8.601564 l 1087 | 15.526793 8.031169 13.962719 7.972453 12.515182 8.435624 c 1088 | 11.905680 6.530761 l 1089 | h 1090 | 16.387405 8.058439 m 1091 | 15.831610 6.721113 14.923218 5.559742 13.759127 4.698208 c 1092 | 14.948908 3.090595 l 1093 | 16.404022 4.167513 17.539513 5.619226 18.234257 7.290884 c 1094 | 16.387405 8.058439 l 1095 | h 1096 | 13.759127 4.698208 m 1097 | 12.595036 3.836674 11.218910 3.307295 9.777544 3.166538 c 1098 | 9.971930 1.176006 l 1099 | 11.773638 1.351954 13.493793 2.013678 14.948908 3.090595 c 1100 | 13.759127 4.698208 l 1101 | h 1102 | 9.777544 3.166538 m 1103 | 8.336178 3.025782 6.883636 3.278927 5.574861 3.898973 c 1104 | 4.718575 2.091551 l 1105 | 6.354544 1.316494 8.170221 1.000061 9.971930 1.176006 c 1106 | 9.777544 3.166538 l 1107 | h 1108 | 5.574861 3.898973 m 1109 | 4.266086 4.519019 3.150170 5.482708 2.346148 6.687241 c 1110 | 0.682685 5.576885 l 1111 | 1.687712 4.071218 3.082606 2.866608 4.718575 2.091551 c 1112 | 5.574861 3.898973 l 1113 | h 1114 | 2.346148 6.687241 m 1115 | 1.542127 7.891774 1.080160 9.291967 1.009523 10.738466 c 1116 | -0.988096 10.640917 l 1117 | -0.899801 8.832793 -0.322341 7.082551 0.682685 5.576885 c 1118 | 2.346148 6.687241 l 1119 | h 1120 | 1.009523 10.738466 m 1121 | 0.938887 12.184965 1.262232 13.623510 1.945067 14.900650 c 1122 | 0.181333 15.843647 l 1123 | -0.672211 14.247222 -1.076392 12.449041 -0.988096 10.640917 c 1124 | 1.009523 10.738466 l 1125 | h 1126 | 1.945067 14.900650 m 1127 | 2.627901 16.177790 3.644613 17.245619 4.886748 17.990232 c 1128 | 3.858435 19.705626 l 1129 | 2.305766 18.774858 1.034876 17.440071 0.181333 15.843647 c 1130 | 1.945067 14.900650 l 1131 | h 1132 | 4.886748 17.990232 m 1133 | 6.128884 18.734846 7.549850 19.128313 8.998073 19.128662 c 1134 | 8.997590 21.128662 l 1135 | 7.187312 21.128225 5.411104 20.636393 3.858435 19.705626 c 1136 | 4.886748 17.990232 l 1137 | h 1138 | 7.997831 20.128662 m 1139 | 7.997831 20.120663 l 1140 | 9.997831 20.120663 l 1141 | 9.997831 20.128662 l 1142 | 7.997831 20.128662 l 1143 | h 1144 | f 1145 | n 1146 | Q 1147 | 1148 | endstream 1149 | endobj 1150 | 1151 | 3 0 obj 1152 | 63565 1153 | endobj 1154 | 1155 | 4 0 obj 1156 | << /Annots [] 1157 | /Type /Page 1158 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 1159 | /Resources 1 0 R 1160 | /Contents 2 0 R 1161 | /Parent 5 0 R 1162 | >> 1163 | endobj 1164 | 1165 | 5 0 obj 1166 | << /Kids [ 4 0 R ] 1167 | /Count 1 1168 | /Type /Pages 1169 | >> 1170 | endobj 1171 | 1172 | 6 0 obj 1173 | << /Pages 5 0 R 1174 | /Type /Catalog 1175 | >> 1176 | endobj 1177 | 1178 | xref 1179 | 0 7 1180 | 0000000000 65535 f 1181 | 0000000010 00000 n 1182 | 0000000034 00000 n 1183 | 0000063655 00000 n 1184 | 0000063679 00000 n 1185 | 0000063852 00000 n 1186 | 0000063926 00000 n 1187 | trailer 1188 | << /ID [ (some) (id) ] 1189 | /Root 6 0 R 1190 | /Size 7 1191 | >> 1192 | startxref 1193 | 63985 1194 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/colorScheme/light.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "sun (1) 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/colorScheme/light.imageset/sun (1) 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 8.000000 6.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 7.000000 6.000000 m 16 | 7.000000 4.343146 5.656854 3.000000 4.000000 3.000000 c 17 | 4.000000 1.000000 l 18 | 6.761424 1.000000 9.000000 3.238576 9.000000 6.000000 c 19 | 7.000000 6.000000 l 20 | h 21 | 4.000000 3.000000 m 22 | 2.343146 3.000000 1.000000 4.343146 1.000000 6.000000 c 23 | -1.000000 6.000000 l 24 | -1.000000 3.238576 1.238576 1.000000 4.000000 1.000000 c 25 | 4.000000 3.000000 l 26 | h 27 | 1.000000 6.000000 m 28 | 1.000000 7.656855 2.343146 9.000000 4.000000 9.000000 c 29 | 4.000000 11.000000 l 30 | 1.238576 11.000000 -1.000000 8.761424 -1.000000 6.000000 c 31 | 1.000000 6.000000 l 32 | h 33 | 4.000000 9.000000 m 34 | 5.656854 9.000000 7.000000 7.656855 7.000000 6.000000 c 35 | 9.000000 6.000000 l 36 | 9.000000 8.761424 6.761424 11.000000 4.000000 11.000000 c 37 | 4.000000 9.000000 l 38 | h 39 | f 40 | n 41 | Q 42 | q 43 | 1.000000 0.000000 -0.000000 1.000000 3.000000 1.000000 cm 44 | 1.000000 1.000000 1.000000 scn 45 | 0.000000 12.000000 m 46 | -0.552285 12.000000 -1.000000 11.552285 -1.000000 11.000000 c 47 | -1.000000 10.447715 -0.552285 10.000000 0.000000 10.000000 c 48 | 0.000000 12.000000 l 49 | h 50 | 1.000000 10.000000 m 51 | 1.552285 10.000000 2.000000 10.447715 2.000000 11.000000 c 52 | 2.000000 11.552285 1.552285 12.000000 1.000000 12.000000 c 53 | 1.000000 10.000000 l 54 | h 55 | 10.000000 20.000000 m 56 | 10.000000 20.552284 9.552285 21.000000 9.000000 21.000000 c 57 | 8.447715 21.000000 8.000000 20.552284 8.000000 20.000000 c 58 | 10.000000 20.000000 l 59 | h 60 | 8.000000 19.000000 m 61 | 8.000000 18.447716 8.447715 18.000000 9.000000 18.000000 c 62 | 9.552285 18.000000 10.000000 18.447716 10.000000 19.000000 c 63 | 8.000000 19.000000 l 64 | h 65 | 17.000000 12.000000 m 66 | 16.447716 12.000000 16.000000 11.552285 16.000000 11.000000 c 67 | 16.000000 10.447715 16.447716 10.000000 17.000000 10.000000 c 68 | 17.000000 12.000000 l 69 | h 70 | 18.000000 10.000000 m 71 | 18.552284 10.000000 19.000000 10.447715 19.000000 11.000000 c 72 | 19.000000 11.552285 18.552284 12.000000 18.000000 12.000000 c 73 | 18.000000 10.000000 l 74 | h 75 | 10.000000 3.000000 m 76 | 10.000000 3.552284 9.552285 4.000000 9.000000 4.000000 c 77 | 8.447715 4.000000 8.000000 3.552284 8.000000 3.000000 c 78 | 10.000000 3.000000 l 79 | h 80 | 8.000000 2.000000 m 81 | 8.000000 1.447716 8.447715 1.000000 9.000000 1.000000 c 82 | 9.552285 1.000000 10.000000 1.447716 10.000000 2.000000 c 83 | 8.000000 2.000000 l 84 | h 85 | 3.307107 18.107107 m 86 | 2.916582 18.497631 2.283417 18.497631 1.892893 18.107107 c 87 | 1.502369 17.716583 1.502369 17.083418 1.892893 16.692894 c 88 | 3.307107 18.107107 l 89 | h 90 | 2.592893 15.992893 m 91 | 2.983418 15.602369 3.616583 15.602369 4.007107 15.992893 c 92 | 4.397631 16.383417 4.397631 17.016582 4.007107 17.407106 c 93 | 2.592893 15.992893 l 94 | h 95 | 16.107107 16.692894 m 96 | 16.497631 17.083420 16.497631 17.716583 16.107105 18.107107 c 97 | 15.716581 18.497631 15.083416 18.497631 14.692892 18.107105 c 98 | 16.107107 16.692894 l 99 | h 100 | 13.992893 17.407106 m 101 | 13.602369 17.016581 13.602370 16.383415 13.992895 15.992892 c 102 | 14.383419 15.602368 15.016584 15.602369 15.407108 15.992893 c 103 | 13.992893 17.407106 l 104 | h 105 | 15.407107 6.007106 m 106 | 15.016583 6.397631 14.383418 6.397631 13.992894 6.007106 c 107 | 13.602369 5.616582 13.602369 4.983417 13.992894 4.592893 c 108 | 15.407107 6.007106 l 109 | h 110 | 14.692893 3.892893 m 111 | 15.083417 3.502369 15.716582 3.502369 16.107107 3.892893 c 112 | 16.497631 4.283418 16.497631 4.916583 16.107107 5.307107 c 113 | 14.692893 3.892893 l 114 | h 115 | 4.007106 4.592892 m 116 | 4.397631 4.983416 4.397632 5.616581 4.007108 6.007105 c 117 | 3.616584 6.397630 2.983419 6.397631 2.592894 6.007107 c 118 | 4.007106 4.592892 l 119 | h 120 | 1.892894 5.307108 m 121 | 1.502369 4.916584 1.502368 4.283419 1.892892 3.892895 c 122 | 2.283416 3.502369 2.916581 3.502369 3.307106 3.892893 c 123 | 1.892894 5.307108 l 124 | h 125 | 0.000000 10.000000 m 126 | 1.000000 10.000000 l 127 | 1.000000 12.000000 l 128 | 0.000000 12.000000 l 129 | 0.000000 10.000000 l 130 | h 131 | 8.000000 20.000000 m 132 | 8.000000 19.000000 l 133 | 10.000000 19.000000 l 134 | 10.000000 20.000000 l 135 | 8.000000 20.000000 l 136 | h 137 | 17.000000 10.000000 m 138 | 18.000000 10.000000 l 139 | 18.000000 12.000000 l 140 | 17.000000 12.000000 l 141 | 17.000000 10.000000 l 142 | h 143 | 8.000000 3.000000 m 144 | 8.000000 2.000000 l 145 | 10.000000 2.000000 l 146 | 10.000000 3.000000 l 147 | 8.000000 3.000000 l 148 | h 149 | 1.892893 16.692894 m 150 | 2.592893 15.992893 l 151 | 4.007107 17.407106 l 152 | 3.307107 18.107107 l 153 | 1.892893 16.692894 l 154 | h 155 | 14.692892 18.107105 m 156 | 13.992893 17.407106 l 157 | 15.407108 15.992893 l 158 | 16.107107 16.692894 l 159 | 14.692892 18.107105 l 160 | h 161 | 13.992894 4.592893 m 162 | 14.692893 3.892893 l 163 | 16.107107 5.307107 l 164 | 15.407107 6.007106 l 165 | 13.992894 4.592893 l 166 | h 167 | 2.592894 6.007107 m 168 | 1.892894 5.307108 l 169 | 3.307106 3.892893 l 170 | 4.007106 4.592892 l 171 | 2.592894 6.007107 l 172 | h 173 | f 174 | n 175 | Q 176 | 177 | endstream 178 | endobj 179 | 180 | 3 0 obj 181 | 4393 182 | endobj 183 | 184 | 4 0 obj 185 | << /Annots [] 186 | /Type /Page 187 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 188 | /Resources 1 0 R 189 | /Contents 2 0 R 190 | /Parent 5 0 R 191 | >> 192 | endobj 193 | 194 | 5 0 obj 195 | << /Kids [ 4 0 R ] 196 | /Count 1 197 | /Type /Pages 198 | >> 199 | endobj 200 | 201 | 6 0 obj 202 | << /Pages 5 0 R 203 | /Type /Catalog 204 | >> 205 | endobj 206 | 207 | xref 208 | 0 7 209 | 0000000000 65535 f 210 | 0000000010 00000 n 211 | 0000000034 00000 n 212 | 0000004483 00000 n 213 | 0000004506 00000 n 214 | 0000004679 00000 n 215 | 0000004753 00000 n 216 | trailer 217 | << /ID [ (some) (id) ] 218 | /Root 6 0 R 219 | /Size 7 220 | >> 221 | startxref 222 | 4812 223 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/dashboard.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "layout-dashboard 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/dashboard.imageset/layout-dashboard 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 4.000000 10.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 0.000000 10.000000 m 16 | 0.000000 11.000000 l 17 | -0.552285 11.000000 -1.000000 10.552285 -1.000000 10.000000 c 18 | 0.000000 10.000000 l 19 | h 20 | 6.000000 10.000000 m 21 | 7.000000 10.000000 l 22 | 7.000000 10.552285 6.552285 11.000000 6.000000 11.000000 c 23 | 6.000000 10.000000 l 24 | h 25 | 6.000000 2.000000 m 26 | 6.000000 1.000000 l 27 | 6.552285 1.000000 7.000000 1.447715 7.000000 2.000000 c 28 | 6.000000 2.000000 l 29 | h 30 | 0.000000 2.000000 m 31 | -1.000000 2.000000 l 32 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 33 | 0.000000 2.000000 l 34 | h 35 | 0.000000 9.000000 m 36 | 6.000000 9.000000 l 37 | 6.000000 11.000000 l 38 | 0.000000 11.000000 l 39 | 0.000000 9.000000 l 40 | h 41 | 5.000000 10.000000 m 42 | 5.000000 2.000000 l 43 | 7.000000 2.000000 l 44 | 7.000000 10.000000 l 45 | 5.000000 10.000000 l 46 | h 47 | 6.000000 3.000000 m 48 | 0.000000 3.000000 l 49 | 0.000000 1.000000 l 50 | 6.000000 1.000000 l 51 | 6.000000 3.000000 l 52 | h 53 | 1.000000 2.000000 m 54 | 1.000000 10.000000 l 55 | -1.000000 10.000000 l 56 | -1.000000 2.000000 l 57 | 1.000000 2.000000 l 58 | h 59 | f 60 | n 61 | Q 62 | q 63 | 1.000000 0.000000 -0.000000 1.000000 4.000000 2.000000 cm 64 | 1.000000 1.000000 1.000000 scn 65 | 0.000000 6.000000 m 66 | 0.000000 7.000000 l 67 | -0.552285 7.000000 -1.000000 6.552285 -1.000000 6.000000 c 68 | 0.000000 6.000000 l 69 | h 70 | 6.000000 6.000000 m 71 | 7.000000 6.000000 l 72 | 7.000000 6.552285 6.552285 7.000000 6.000000 7.000000 c 73 | 6.000000 6.000000 l 74 | h 75 | 6.000000 2.000000 m 76 | 6.000000 1.000000 l 77 | 6.552285 1.000000 7.000000 1.447715 7.000000 2.000000 c 78 | 6.000000 2.000000 l 79 | h 80 | 0.000000 2.000000 m 81 | -1.000000 2.000000 l 82 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 83 | 0.000000 2.000000 l 84 | h 85 | 0.000000 5.000000 m 86 | 6.000000 5.000000 l 87 | 6.000000 7.000000 l 88 | 0.000000 7.000000 l 89 | 0.000000 5.000000 l 90 | h 91 | 5.000000 6.000000 m 92 | 5.000000 2.000000 l 93 | 7.000000 2.000000 l 94 | 7.000000 6.000000 l 95 | 5.000000 6.000000 l 96 | h 97 | 6.000000 3.000000 m 98 | 0.000000 3.000000 l 99 | 0.000000 1.000000 l 100 | 6.000000 1.000000 l 101 | 6.000000 3.000000 l 102 | h 103 | 1.000000 2.000000 m 104 | 1.000000 6.000000 l 105 | -1.000000 6.000000 l 106 | -1.000000 2.000000 l 107 | 1.000000 2.000000 l 108 | h 109 | f 110 | n 111 | Q 112 | q 113 | 1.000000 0.000000 -0.000000 1.000000 14.000000 2.000000 cm 114 | 1.000000 1.000000 1.000000 scn 115 | 0.000000 10.000000 m 116 | 0.000000 11.000000 l 117 | -0.552285 11.000000 -1.000000 10.552285 -1.000000 10.000000 c 118 | 0.000000 10.000000 l 119 | h 120 | 6.000000 10.000000 m 121 | 7.000000 10.000000 l 122 | 7.000000 10.552285 6.552285 11.000000 6.000000 11.000000 c 123 | 6.000000 10.000000 l 124 | h 125 | 6.000000 2.000000 m 126 | 6.000000 1.000000 l 127 | 6.552285 1.000000 7.000000 1.447715 7.000000 2.000000 c 128 | 6.000000 2.000000 l 129 | h 130 | 0.000000 2.000000 m 131 | -1.000000 2.000000 l 132 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 133 | 0.000000 2.000000 l 134 | h 135 | 0.000000 9.000000 m 136 | 6.000000 9.000000 l 137 | 6.000000 11.000000 l 138 | 0.000000 11.000000 l 139 | 0.000000 9.000000 l 140 | h 141 | 5.000000 10.000000 m 142 | 5.000000 2.000000 l 143 | 7.000000 2.000000 l 144 | 7.000000 10.000000 l 145 | 5.000000 10.000000 l 146 | h 147 | 6.000000 3.000000 m 148 | 0.000000 3.000000 l 149 | 0.000000 1.000000 l 150 | 6.000000 1.000000 l 151 | 6.000000 3.000000 l 152 | h 153 | 1.000000 2.000000 m 154 | 1.000000 10.000000 l 155 | -1.000000 10.000000 l 156 | -1.000000 2.000000 l 157 | 1.000000 2.000000 l 158 | h 159 | f 160 | n 161 | Q 162 | q 163 | 1.000000 0.000000 -0.000000 1.000000 14.000000 14.000000 cm 164 | 1.000000 1.000000 1.000000 scn 165 | 0.000000 6.000000 m 166 | 0.000000 7.000000 l 167 | -0.552285 7.000000 -1.000000 6.552285 -1.000000 6.000000 c 168 | 0.000000 6.000000 l 169 | h 170 | 6.000000 6.000000 m 171 | 7.000000 6.000000 l 172 | 7.000000 6.552285 6.552285 7.000000 6.000000 7.000000 c 173 | 6.000000 6.000000 l 174 | h 175 | 6.000000 2.000000 m 176 | 6.000000 1.000000 l 177 | 6.552285 1.000000 7.000000 1.447715 7.000000 2.000000 c 178 | 6.000000 2.000000 l 179 | h 180 | 0.000000 2.000000 m 181 | -1.000000 2.000000 l 182 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 183 | 0.000000 2.000000 l 184 | h 185 | 0.000000 5.000000 m 186 | 6.000000 5.000000 l 187 | 6.000000 7.000000 l 188 | 0.000000 7.000000 l 189 | 0.000000 5.000000 l 190 | h 191 | 5.000000 6.000000 m 192 | 5.000000 2.000000 l 193 | 7.000000 2.000000 l 194 | 7.000000 6.000000 l 195 | 5.000000 6.000000 l 196 | h 197 | 6.000000 3.000000 m 198 | 0.000000 3.000000 l 199 | 0.000000 1.000000 l 200 | 6.000000 1.000000 l 201 | 6.000000 3.000000 l 202 | h 203 | 1.000000 2.000000 m 204 | 1.000000 6.000000 l 205 | -1.000000 6.000000 l 206 | -1.000000 2.000000 l 207 | 1.000000 2.000000 l 208 | h 209 | f 210 | n 211 | Q 212 | 213 | endstream 214 | endobj 215 | 216 | 3 0 obj 217 | 4010 218 | endobj 219 | 220 | 4 0 obj 221 | << /Annots [] 222 | /Type /Page 223 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 224 | /Resources 1 0 R 225 | /Contents 2 0 R 226 | /Parent 5 0 R 227 | >> 228 | endobj 229 | 230 | 5 0 obj 231 | << /Kids [ 4 0 R ] 232 | /Count 1 233 | /Type /Pages 234 | >> 235 | endobj 236 | 237 | 6 0 obj 238 | << /Pages 5 0 R 239 | /Type /Catalog 240 | >> 241 | endobj 242 | 243 | xref 244 | 0 7 245 | 0000000000 65535 f 246 | 0000000010 00000 n 247 | 0000000034 00000 n 248 | 0000004100 00000 n 249 | 0000004123 00000 n 250 | 0000004296 00000 n 251 | 0000004370 00000 n 252 | trailer 253 | << /ID [ (some) (id) ] 254 | /Root 6 0 R 255 | /Size 7 256 | >> 257 | startxref 258 | 4429 259 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/departments.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "brand-asana 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/departments.imageset/brand-asana 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 9.000000 12.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 5.000000 5.000000 m 16 | 5.000000 3.895431 4.104569 3.000000 3.000000 3.000000 c 17 | 3.000000 1.000000 l 18 | 5.209139 1.000000 7.000000 2.790861 7.000000 5.000000 c 19 | 5.000000 5.000000 l 20 | h 21 | 3.000000 3.000000 m 22 | 1.895430 3.000000 1.000000 3.895431 1.000000 5.000000 c 23 | -1.000000 5.000000 l 24 | -1.000000 2.790861 0.790861 1.000000 3.000000 1.000000 c 25 | 3.000000 3.000000 l 26 | h 27 | 1.000000 5.000000 m 28 | 1.000000 6.104569 1.895430 7.000000 3.000000 7.000000 c 29 | 3.000000 9.000000 l 30 | 0.790861 9.000000 -1.000000 7.209139 -1.000000 5.000000 c 31 | 1.000000 5.000000 l 32 | h 33 | 3.000000 7.000000 m 34 | 4.104569 7.000000 5.000000 6.104569 5.000000 5.000000 c 35 | 7.000000 5.000000 l 36 | 7.000000 7.209139 5.209139 9.000000 3.000000 9.000000 c 37 | 3.000000 7.000000 l 38 | h 39 | f 40 | n 41 | Q 42 | q 43 | 1.000000 0.000000 -0.000000 1.000000 14.000000 3.000000 cm 44 | 1.000000 1.000000 1.000000 scn 45 | 5.000000 5.000000 m 46 | 5.000000 3.895431 4.104569 3.000000 3.000000 3.000000 c 47 | 3.000000 1.000000 l 48 | 5.209139 1.000000 7.000000 2.790861 7.000000 5.000000 c 49 | 5.000000 5.000000 l 50 | h 51 | 3.000000 3.000000 m 52 | 1.895430 3.000000 1.000000 3.895431 1.000000 5.000000 c 53 | -1.000000 5.000000 l 54 | -1.000000 2.790861 0.790861 1.000000 3.000000 1.000000 c 55 | 3.000000 3.000000 l 56 | h 57 | 1.000000 5.000000 m 58 | 1.000000 6.104569 1.895430 7.000000 3.000000 7.000000 c 59 | 3.000000 9.000000 l 60 | 0.790861 9.000000 -1.000000 7.209139 -1.000000 5.000000 c 61 | 1.000000 5.000000 l 62 | h 63 | 3.000000 7.000000 m 64 | 4.104569 7.000000 5.000000 6.104569 5.000000 5.000000 c 65 | 7.000000 5.000000 l 66 | 7.000000 7.209139 5.209139 9.000000 3.000000 9.000000 c 67 | 3.000000 7.000000 l 68 | h 69 | f 70 | n 71 | Q 72 | q 73 | 1.000000 0.000000 -0.000000 1.000000 4.000000 3.000000 cm 74 | 1.000000 1.000000 1.000000 scn 75 | 5.000000 5.000000 m 76 | 5.000000 3.895431 4.104569 3.000000 3.000000 3.000000 c 77 | 3.000000 1.000000 l 78 | 5.209139 1.000000 7.000000 2.790861 7.000000 5.000000 c 79 | 5.000000 5.000000 l 80 | h 81 | 3.000000 3.000000 m 82 | 1.895430 3.000000 1.000000 3.895431 1.000000 5.000000 c 83 | -1.000000 5.000000 l 84 | -1.000000 2.790861 0.790861 1.000000 3.000000 1.000000 c 85 | 3.000000 3.000000 l 86 | h 87 | 1.000000 5.000000 m 88 | 1.000000 6.104569 1.895430 7.000000 3.000000 7.000000 c 89 | 3.000000 9.000000 l 90 | 0.790861 9.000000 -1.000000 7.209139 -1.000000 5.000000 c 91 | 1.000000 5.000000 l 92 | h 93 | 3.000000 7.000000 m 94 | 4.104569 7.000000 5.000000 6.104569 5.000000 5.000000 c 95 | 7.000000 5.000000 l 96 | 7.000000 7.209139 5.209139 9.000000 3.000000 9.000000 c 97 | 3.000000 7.000000 l 98 | h 99 | f 100 | n 101 | Q 102 | 103 | endstream 104 | endobj 105 | 106 | 3 0 obj 107 | 2421 108 | endobj 109 | 110 | 4 0 obj 111 | << /Annots [] 112 | /Type /Page 113 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 114 | /Resources 1 0 R 115 | /Contents 2 0 R 116 | /Parent 5 0 R 117 | >> 118 | endobj 119 | 120 | 5 0 obj 121 | << /Kids [ 4 0 R ] 122 | /Count 1 123 | /Type /Pages 124 | >> 125 | endobj 126 | 127 | 6 0 obj 128 | << /Pages 5 0 R 129 | /Type /Catalog 130 | >> 131 | endobj 132 | 133 | xref 134 | 0 7 135 | 0000000000 65535 f 136 | 0000000010 00000 n 137 | 0000000034 00000 n 138 | 0000002511 00000 n 139 | 0000002534 00000 n 140 | 0000002707 00000 n 141 | 0000002781 00000 n 142 | trailer 143 | << /ID [ (some) (id) ] 144 | /Root 6 0 R 145 | /Size 7 146 | >> 147 | startxref 148 | 2840 149 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/employees.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "users 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/employees.imageset/users 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 5.000000 11.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 7.000000 6.000000 m 16 | 7.000000 4.343146 5.656854 3.000000 4.000000 3.000000 c 17 | 4.000000 1.000000 l 18 | 6.761424 1.000000 9.000000 3.238576 9.000000 6.000000 c 19 | 7.000000 6.000000 l 20 | h 21 | 4.000000 3.000000 m 22 | 2.343146 3.000000 1.000000 4.343146 1.000000 6.000000 c 23 | -1.000000 6.000000 l 24 | -1.000000 3.238576 1.238576 1.000000 4.000000 1.000000 c 25 | 4.000000 3.000000 l 26 | h 27 | 1.000000 6.000000 m 28 | 1.000000 7.656855 2.343146 9.000000 4.000000 9.000000 c 29 | 4.000000 11.000000 l 30 | 1.238576 11.000000 -1.000000 8.761424 -1.000000 6.000000 c 31 | 1.000000 6.000000 l 32 | h 33 | 4.000000 9.000000 m 34 | 5.656854 9.000000 7.000000 7.656855 7.000000 6.000000 c 35 | 9.000000 6.000000 l 36 | 9.000000 8.761424 6.761424 11.000000 4.000000 11.000000 c 37 | 4.000000 9.000000 l 38 | h 39 | f 40 | n 41 | Q 42 | q 43 | 1.000000 0.000000 -0.000000 1.000000 3.000000 1.000000 cm 44 | 1.000000 1.000000 1.000000 scn 45 | -1.000000 2.000000 m 46 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 47 | 0.552285 1.000000 1.000000 1.447715 1.000000 2.000000 c 48 | -1.000000 2.000000 l 49 | h 50 | 4.000000 8.000000 m 51 | 4.000000 9.000000 l 52 | 4.000000 8.000000 l 53 | h 54 | 8.000000 8.000000 m 55 | 8.000000 9.000000 l 56 | 8.000000 8.000000 l 57 | h 58 | 12.000000 4.000000 m 59 | 13.000000 4.000000 l 60 | 12.000000 4.000000 l 61 | h 62 | 11.000000 2.000000 m 63 | 11.000000 1.447715 11.447715 1.000000 12.000000 1.000000 c 64 | 12.552285 1.000000 13.000000 1.447715 13.000000 2.000000 c 65 | 11.000000 2.000000 l 66 | h 67 | 1.000000 2.000000 m 68 | 1.000000 4.000000 l 69 | -1.000000 4.000000 l 70 | -1.000000 2.000000 l 71 | 1.000000 2.000000 l 72 | h 73 | 1.000000 4.000000 m 74 | 1.000000 4.795650 1.316070 5.558710 1.878680 6.121320 c 75 | 0.464466 7.535533 l 76 | -0.473216 6.597851 -1.000000 5.326082 -1.000000 4.000000 c 77 | 1.000000 4.000000 l 78 | h 79 | 1.878680 6.121320 m 80 | 2.441289 6.683929 3.204351 7.000000 4.000000 7.000000 c 81 | 4.000000 9.000000 l 82 | 2.673917 9.000000 1.402147 8.473215 0.464466 7.535533 c 83 | 1.878680 6.121320 l 84 | h 85 | 4.000000 7.000000 m 86 | 8.000000 7.000000 l 87 | 8.000000 9.000000 l 88 | 4.000000 9.000000 l 89 | 4.000000 7.000000 l 90 | h 91 | 8.000000 7.000000 m 92 | 8.795650 7.000000 9.558711 6.683929 10.121321 6.121320 c 93 | 11.535534 7.535533 l 94 | 10.597853 8.473215 9.326083 9.000000 8.000000 9.000000 c 95 | 8.000000 7.000000 l 96 | h 97 | 10.121321 6.121320 m 98 | 10.683929 5.558710 11.000000 4.795650 11.000000 4.000000 c 99 | 13.000000 4.000000 l 100 | 13.000000 5.326082 12.473216 6.597851 11.535534 7.535533 c 101 | 10.121321 6.121320 l 102 | h 103 | 11.000000 4.000000 m 104 | 11.000000 2.000000 l 105 | 13.000000 2.000000 l 106 | 13.000000 4.000000 l 107 | 11.000000 4.000000 l 108 | h 109 | f 110 | n 111 | Q 112 | q 113 | 1.000000 0.000000 -0.000000 1.000000 16.000000 10.908531 cm 114 | 1.000000 1.000000 1.000000 scn 115 | 0.248039 10.930222 m 116 | -0.286987 11.067210 -0.831762 10.744536 -0.968750 10.209511 c 117 | -1.105738 9.674485 -0.783065 9.129710 -0.248039 8.992722 c 118 | 0.248039 10.930222 l 119 | h 120 | 3.007843 6.086472 m 121 | 4.007843 6.086472 l 122 | 3.007843 6.086472 l 123 | h 124 | -0.248039 3.180222 m 125 | -0.783065 3.043233 -1.105738 2.498458 -0.968750 1.963432 c 126 | -0.831762 1.428407 -0.286987 1.105733 0.248039 1.242722 c 127 | -0.248039 3.180222 l 128 | h 129 | -0.248039 8.992722 m 130 | 0.397272 8.827496 0.969238 8.452196 1.377690 7.925989 c 131 | 2.957588 9.152333 l 132 | 2.276836 10.029345 1.323558 10.654845 0.248039 10.930222 c 133 | -0.248039 8.992722 l 134 | h 135 | 1.377690 7.925989 m 136 | 1.786141 7.399781 2.007843 6.752599 2.007843 6.086472 c 137 | 4.007843 6.086472 l 138 | 4.007843 7.196685 3.638340 8.275322 2.957588 9.152333 c 139 | 1.377690 7.925989 l 140 | h 141 | 2.007843 6.086472 m 142 | 2.007843 5.420344 1.786141 4.773162 1.377690 4.246955 c 143 | 2.957588 3.020610 l 144 | 3.638340 3.897621 4.007843 4.976258 4.007843 6.086472 c 145 | 2.007843 6.086472 l 146 | h 147 | 1.377690 4.246955 m 148 | 0.969238 3.720747 0.397271 3.345447 -0.248039 3.180222 c 149 | 0.248039 1.242722 l 150 | 1.323559 1.518098 2.276836 2.143599 2.957588 3.020610 c 151 | 1.377690 4.246955 l 152 | h 153 | f 154 | n 155 | Q 156 | q 157 | 1.000000 0.000000 -0.000000 1.000000 18.000000 0.893684 cm 158 | 1.000000 1.000000 1.000000 scn 159 | 2.000000 2.106314 m 160 | 2.000000 1.554029 2.447715 1.106314 3.000000 1.106314 c 161 | 3.552285 1.106314 4.000000 1.554029 4.000000 2.106314 c 162 | 2.000000 2.106314 l 163 | h 164 | 3.000000 4.106314 m 165 | 4.000017 4.106314 l 166 | 3.999984 4.112064 l 167 | 3.000000 4.106314 l 168 | h 169 | 0.249983 8.924564 m 170 | -0.284766 9.062626 -0.830188 8.741047 -0.968250 8.206298 c 171 | -1.106312 7.671548 -0.784733 7.126126 -0.249983 6.988064 c 172 | 0.249983 8.924564 l 173 | h 174 | 4.000000 2.106314 m 175 | 4.000000 4.106314 l 176 | 2.000000 4.106314 l 177 | 2.000000 2.106314 l 178 | 4.000000 2.106314 l 179 | h 180 | 3.999984 4.112064 m 181 | 3.993638 5.215615 3.622377 6.286065 2.944068 7.156562 c 182 | 1.366467 5.927262 l 183 | 1.773452 5.404965 1.996209 4.762695 2.000016 4.100564 c 184 | 3.999984 4.112064 l 185 | h 186 | 2.944068 7.156562 m 187 | 2.265759 8.027059 1.318515 8.648690 0.249983 8.924564 c 188 | -0.249983 6.988064 l 189 | 0.391136 6.822539 0.959482 6.449560 1.366467 5.927262 c 190 | 2.944068 7.156562 l 191 | h 192 | f 193 | n 194 | Q 195 | 196 | endstream 197 | endobj 198 | 199 | 3 0 obj 200 | 4594 201 | endobj 202 | 203 | 4 0 obj 204 | << /Annots [] 205 | /Type /Page 206 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 207 | /Resources 1 0 R 208 | /Contents 2 0 R 209 | /Parent 5 0 R 210 | >> 211 | endobj 212 | 213 | 5 0 obj 214 | << /Kids [ 4 0 R ] 215 | /Count 1 216 | /Type /Pages 217 | >> 218 | endobj 219 | 220 | 6 0 obj 221 | << /Pages 5 0 R 222 | /Type /Catalog 223 | >> 224 | endobj 225 | 226 | xref 227 | 0 7 228 | 0000000000 65535 f 229 | 0000000010 00000 n 230 | 0000000034 00000 n 231 | 0000004684 00000 n 232 | 0000004707 00000 n 233 | 0000004880 00000 n 234 | 0000004954 00000 n 235 | trailer 236 | << /ID [ (some) (id) ] 237 | /Root 6 0 R 238 | /Size 7 239 | >> 240 | startxref 241 | 5013 242 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/home.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "home 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/home.imageset/home 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 3.000000 9.902367 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 2.000000 1.097633 m 16 | 2.552285 1.097633 3.000000 1.545348 3.000000 2.097633 c 17 | 3.000000 2.649919 2.552285 3.097633 2.000000 3.097633 c 18 | 2.000000 1.097633 l 19 | h 20 | 0.000000 2.097633 m 21 | -0.707107 2.804740 l 22 | -0.993105 2.518743 -1.078660 2.088624 -0.923880 1.714950 c 23 | -0.769099 1.341275 -0.404462 1.097633 0.000000 1.097633 c 24 | 0.000000 2.097633 l 25 | h 26 | 9.000000 11.097633 m 27 | 9.707107 11.804740 l 28 | 9.316583 12.195265 8.683417 12.195265 8.292893 11.804740 c 29 | 9.000000 11.097633 l 30 | h 31 | 18.000000 2.097633 m 32 | 18.000000 1.097633 l 33 | 18.404463 1.097633 18.769098 1.341275 18.923880 1.714950 c 34 | 19.078661 2.088624 18.993105 2.518743 18.707108 2.804740 c 35 | 18.000000 2.097633 l 36 | h 37 | 16.000000 3.097633 m 38 | 15.447715 3.097633 15.000000 2.649919 15.000000 2.097633 c 39 | 15.000000 1.545348 15.447715 1.097633 16.000000 1.097633 c 40 | 16.000000 3.097633 l 41 | h 42 | 2.000000 3.097633 m 43 | 0.000000 3.097633 l 44 | 0.000000 1.097633 l 45 | 2.000000 1.097633 l 46 | 2.000000 3.097633 l 47 | h 48 | 0.707107 1.390527 m 49 | 9.707107 10.390527 l 50 | 8.292893 11.804740 l 51 | -0.707107 2.804740 l 52 | 0.707107 1.390527 l 53 | h 54 | 8.292893 10.390527 m 55 | 17.292892 1.390527 l 56 | 18.707108 2.804740 l 57 | 9.707107 11.804740 l 58 | 8.292893 10.390527 l 59 | h 60 | 18.000000 3.097633 m 61 | 16.000000 3.097633 l 62 | 16.000000 1.097633 l 63 | 18.000000 1.097633 l 64 | 18.000000 3.097633 l 65 | h 66 | f 67 | n 68 | Q 69 | q 70 | 1.000000 0.000000 -0.000000 1.000000 5.000000 1.000000 cm 71 | 1.000000 1.000000 1.000000 scn 72 | 1.000000 11.000000 m 73 | 1.000000 11.552285 0.552285 12.000000 0.000000 12.000000 c 74 | -0.552285 12.000000 -1.000000 11.552285 -1.000000 11.000000 c 75 | 1.000000 11.000000 l 76 | h 77 | 0.000000 4.000000 m 78 | -1.000000 4.000000 l 79 | 0.000000 4.000000 l 80 | h 81 | 15.000000 11.000000 m 82 | 15.000000 11.552285 14.552285 12.000000 14.000000 12.000000 c 83 | 13.447715 12.000000 13.000000 11.552285 13.000000 11.000000 c 84 | 15.000000 11.000000 l 85 | h 86 | -1.000000 11.000000 m 87 | -1.000000 4.000000 l 88 | 1.000000 4.000000 l 89 | 1.000000 11.000000 l 90 | -1.000000 11.000000 l 91 | h 92 | -1.000000 4.000000 m 93 | -1.000000 3.204350 -0.683930 2.441289 -0.121320 1.878680 c 94 | 1.292893 3.292893 l 95 | 1.105357 3.480430 1.000000 3.734784 1.000000 4.000000 c 96 | -1.000000 4.000000 l 97 | h 98 | -0.121320 1.878680 m 99 | 0.441288 1.316072 1.204350 1.000000 2.000000 1.000000 c 100 | 2.000000 3.000000 l 101 | 1.734784 3.000000 1.480430 3.105357 1.292893 3.292893 c 102 | -0.121320 1.878680 l 103 | h 104 | 2.000000 1.000000 m 105 | 12.000000 1.000000 l 106 | 12.000000 3.000000 l 107 | 2.000000 3.000000 l 108 | 2.000000 1.000000 l 109 | h 110 | 12.000000 1.000000 m 111 | 12.795650 1.000000 13.558711 1.316072 14.121320 1.878680 c 112 | 12.707107 3.292893 l 113 | 12.519569 3.105357 12.265216 3.000000 12.000000 3.000000 c 114 | 12.000000 1.000000 l 115 | h 116 | 14.121320 1.878680 m 117 | 14.683928 2.441289 15.000000 3.204350 15.000000 4.000000 c 118 | 13.000000 4.000000 l 119 | 13.000000 3.734784 12.894643 3.480431 12.707107 3.292893 c 120 | 14.121320 1.878680 l 121 | h 122 | 15.000000 4.000000 m 123 | 15.000000 11.000000 l 124 | 13.000000 11.000000 l 125 | 13.000000 4.000000 l 126 | 15.000000 4.000000 l 127 | h 128 | f 129 | n 130 | Q 131 | q 132 | 1.000000 0.000000 -0.000000 1.000000 9.000000 1.000000 cm 133 | 1.000000 1.000000 1.000000 scn 134 | -1.000000 2.000000 m 135 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 136 | 0.552285 1.000000 1.000000 1.447715 1.000000 2.000000 c 137 | -1.000000 2.000000 l 138 | h 139 | 2.000000 10.000000 m 140 | 2.000000 9.000000 l 141 | 2.000000 10.000000 l 142 | h 143 | 5.000000 2.000000 m 144 | 5.000000 1.447715 5.447715 1.000000 6.000000 1.000000 c 145 | 6.552285 1.000000 7.000000 1.447715 7.000000 2.000000 c 146 | 5.000000 2.000000 l 147 | h 148 | 1.000000 2.000000 m 149 | 1.000000 8.000000 l 150 | -1.000000 8.000000 l 151 | -1.000000 2.000000 l 152 | 1.000000 2.000000 l 153 | h 154 | 1.000000 8.000000 m 155 | 1.000000 8.265216 1.105357 8.519569 1.292894 8.707107 c 156 | -0.121320 10.121320 l 157 | -0.683929 9.558711 -1.000000 8.795650 -1.000000 8.000000 c 158 | 1.000000 8.000000 l 159 | h 160 | 1.292894 8.707107 m 161 | 1.480430 8.894644 1.734784 9.000000 2.000000 9.000000 c 162 | 2.000000 11.000000 l 163 | 1.204350 11.000000 0.441289 10.683928 -0.121320 10.121320 c 164 | 1.292894 8.707107 l 165 | h 166 | 2.000000 9.000000 m 167 | 4.000000 9.000000 l 168 | 4.000000 11.000000 l 169 | 2.000000 11.000000 l 170 | 2.000000 9.000000 l 171 | h 172 | 4.000000 9.000000 m 173 | 4.265216 9.000000 4.519569 8.894644 4.707107 8.707107 c 174 | 6.121320 10.121320 l 175 | 5.558712 10.683928 4.795650 11.000000 4.000000 11.000000 c 176 | 4.000000 9.000000 l 177 | h 178 | 4.707107 8.707107 m 179 | 4.894643 8.519569 5.000000 8.265216 5.000000 8.000000 c 180 | 7.000000 8.000000 l 181 | 7.000000 8.795650 6.683928 9.558711 6.121320 10.121320 c 182 | 4.707107 8.707107 l 183 | h 184 | 5.000000 8.000000 m 185 | 5.000000 2.000000 l 186 | 7.000000 2.000000 l 187 | 7.000000 8.000000 l 188 | 5.000000 8.000000 l 189 | h 190 | f 191 | n 192 | Q 193 | 194 | endstream 195 | endobj 196 | 197 | 3 0 obj 198 | 4380 199 | endobj 200 | 201 | 4 0 obj 202 | << /Annots [] 203 | /Type /Page 204 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 205 | /Resources 1 0 R 206 | /Contents 2 0 R 207 | /Parent 5 0 R 208 | >> 209 | endobj 210 | 211 | 5 0 obj 212 | << /Kids [ 4 0 R ] 213 | /Count 1 214 | /Type /Pages 215 | >> 216 | endobj 217 | 218 | 6 0 obj 219 | << /Pages 5 0 R 220 | /Type /Catalog 221 | >> 222 | endobj 223 | 224 | xref 225 | 0 7 226 | 0000000000 65535 f 227 | 0000000010 00000 n 228 | 0000000034 00000 n 229 | 0000004470 00000 n 230 | 0000004493 00000 n 231 | 0000004666 00000 n 232 | 0000004740 00000 n 233 | trailer 234 | << /ID [ (some) (id) ] 235 | /Root 6 0 R 236 | /Size 7 237 | >> 238 | startxref 239 | 4799 240 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/logout.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "logout (1) 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/logout.imageset/logout (1) 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 3.000000 2.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 10.000000 14.000000 m 16 | 10.000000 13.447716 10.447715 13.000000 11.000000 13.000000 c 17 | 11.552285 13.000000 12.000000 13.447716 12.000000 14.000000 c 18 | 10.000000 14.000000 l 19 | h 20 | 9.000000 18.000000 m 21 | 9.000000 19.000000 l 22 | 9.000000 18.000000 l 23 | h 24 | 2.000000 18.000000 m 25 | 2.000000 19.000000 l 26 | 2.000000 18.000000 l 27 | h 28 | 0.000000 16.000000 m 29 | -1.000000 16.000000 l 30 | 0.000000 16.000000 l 31 | h 32 | 0.000000 4.000000 m 33 | -1.000000 4.000000 l 34 | 0.000000 4.000000 l 35 | h 36 | 12.000000 6.000000 m 37 | 12.000000 6.552285 11.552285 7.000000 11.000000 7.000000 c 38 | 10.447715 7.000000 10.000000 6.552285 10.000000 6.000000 c 39 | 12.000000 6.000000 l 40 | h 41 | 12.000000 14.000000 m 42 | 12.000000 16.000000 l 43 | 10.000000 16.000000 l 44 | 10.000000 14.000000 l 45 | 12.000000 14.000000 l 46 | h 47 | 12.000000 16.000000 m 48 | 12.000000 16.795650 11.683928 17.558712 11.121320 18.121321 c 49 | 9.707107 16.707108 l 50 | 9.894643 16.519569 10.000000 16.265217 10.000000 16.000000 c 51 | 12.000000 16.000000 l 52 | h 53 | 11.121320 18.121321 m 54 | 10.558711 18.683929 9.795650 19.000000 9.000000 19.000000 c 55 | 9.000000 17.000000 l 56 | 9.265217 17.000000 9.519570 16.894644 9.707107 16.707108 c 57 | 11.121320 18.121321 l 58 | h 59 | 9.000000 19.000000 m 60 | 2.000000 19.000000 l 61 | 2.000000 17.000000 l 62 | 9.000000 17.000000 l 63 | 9.000000 19.000000 l 64 | h 65 | 2.000000 19.000000 m 66 | 1.204351 19.000000 0.441289 18.683929 -0.121320 18.121321 c 67 | 1.292893 16.707108 l 68 | 1.480429 16.894644 1.734783 17.000000 2.000000 17.000000 c 69 | 2.000000 19.000000 l 70 | h 71 | -0.121320 18.121321 m 72 | -0.683930 17.558712 -1.000000 16.795649 -1.000000 16.000000 c 73 | 1.000000 16.000000 l 74 | 1.000000 16.265217 1.105357 16.519571 1.292893 16.707108 c 75 | -0.121320 18.121321 l 76 | h 77 | -1.000000 16.000000 m 78 | -1.000000 4.000000 l 79 | 1.000000 4.000000 l 80 | 1.000000 16.000000 l 81 | -1.000000 16.000000 l 82 | h 83 | -1.000000 4.000000 m 84 | -1.000000 3.204350 -0.683930 2.441289 -0.121320 1.878679 c 85 | 1.292893 3.292893 l 86 | 1.105357 3.480430 1.000000 3.734783 1.000000 4.000000 c 87 | -1.000000 4.000000 l 88 | h 89 | -0.121320 1.878679 m 90 | 0.441288 1.316071 1.204350 1.000000 2.000000 1.000000 c 91 | 2.000000 3.000000 l 92 | 1.734784 3.000000 1.480430 3.105357 1.292893 3.292893 c 93 | -0.121320 1.878679 l 94 | h 95 | 2.000000 1.000000 m 96 | 9.000000 1.000000 l 97 | 9.000000 3.000000 l 98 | 2.000000 3.000000 l 99 | 2.000000 1.000000 l 100 | h 101 | 9.000000 1.000000 m 102 | 9.795650 1.000000 10.558711 1.316071 11.121320 1.878679 c 103 | 9.707107 3.292893 l 104 | 9.519569 3.105357 9.265216 3.000000 9.000000 3.000000 c 105 | 9.000000 1.000000 l 106 | h 107 | 11.121320 1.878679 m 108 | 11.683928 2.441289 12.000000 3.204350 12.000000 4.000000 c 109 | 10.000000 4.000000 l 110 | 10.000000 3.734784 9.894643 3.480431 9.707107 3.292893 c 111 | 11.121320 1.878679 l 112 | h 113 | 12.000000 4.000000 m 114 | 12.000000 6.000000 l 115 | 10.000000 6.000000 l 116 | 10.000000 4.000000 l 117 | 12.000000 4.000000 l 118 | h 119 | f 120 | n 121 | Q 122 | q 123 | 1.000000 0.000000 -0.000000 1.000000 7.000000 6.804749 cm 124 | 1.000000 1.000000 1.000000 scn 125 | 0.000000 6.195251 m 126 | -0.552285 6.195251 -1.000000 5.747536 -1.000000 5.195251 c 127 | -1.000000 4.642967 -0.552285 4.195251 0.000000 4.195251 c 128 | 0.000000 6.195251 l 129 | h 130 | 14.000000 5.195251 m 131 | 14.000000 4.195251 l 132 | 14.404462 4.195251 14.769098 4.438893 14.923880 4.812568 c 133 | 15.078661 5.186242 14.993105 5.616360 14.707107 5.902358 c 134 | 14.000000 5.195251 l 135 | h 136 | 11.707107 8.902358 m 137 | 11.316583 9.292883 10.683417 9.292883 10.292893 8.902358 c 138 | 9.902369 8.511834 9.902369 7.878669 10.292893 7.488145 c 139 | 11.707107 8.902358 l 140 | h 141 | 10.292893 2.902358 m 142 | 9.902369 2.511834 9.902369 1.878669 10.292893 1.488145 c 143 | 10.683417 1.097620 11.316583 1.097620 11.707107 1.488145 c 144 | 10.292893 2.902358 l 145 | h 146 | 14.707107 4.488145 m 147 | 15.097631 4.878669 15.097631 5.511834 14.707107 5.902358 c 148 | 14.316583 6.292882 13.683417 6.292882 13.292893 5.902358 c 149 | 14.707107 4.488145 l 150 | h 151 | 0.000000 4.195251 m 152 | 14.000000 4.195251 l 153 | 14.000000 6.195251 l 154 | 0.000000 6.195251 l 155 | 0.000000 4.195251 l 156 | h 157 | 14.707107 5.902358 m 158 | 11.707107 8.902358 l 159 | 10.292893 7.488145 l 160 | 13.292893 4.488145 l 161 | 14.707107 5.902358 l 162 | h 163 | 11.707107 1.488145 m 164 | 14.707107 4.488145 l 165 | 13.292893 5.902358 l 166 | 10.292893 2.902358 l 167 | 11.707107 1.488145 l 168 | h 169 | f 170 | n 171 | Q 172 | 173 | endstream 174 | endobj 175 | 176 | 3 0 obj 177 | 3951 178 | endobj 179 | 180 | 4 0 obj 181 | << /Annots [] 182 | /Type /Page 183 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 184 | /Resources 1 0 R 185 | /Contents 2 0 R 186 | /Parent 5 0 R 187 | >> 188 | endobj 189 | 190 | 5 0 obj 191 | << /Kids [ 4 0 R ] 192 | /Count 1 193 | /Type /Pages 194 | >> 195 | endobj 196 | 197 | 6 0 obj 198 | << /Pages 5 0 R 199 | /Type /Catalog 200 | >> 201 | endobj 202 | 203 | xref 204 | 0 7 205 | 0000000000 65535 f 206 | 0000000010 00000 n 207 | 0000000034 00000 n 208 | 0000004041 00000 n 209 | 0000004064 00000 n 210 | 0000004237 00000 n 211 | 0000004311 00000 n 212 | trailer 213 | << /ID [ (some) (id) ] 214 | /Root 6 0 R 215 | /Size 7 216 | >> 217 | startxref 218 | 4370 219 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/notifications.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "bell 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/notifications.imageset/bell 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 4.000000 5.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 5.000000 14.000000 m 16 | 5.000000 13.447716 5.447715 13.000000 6.000000 13.000000 c 17 | 6.552285 13.000000 7.000000 13.447716 7.000000 14.000000 c 18 | 5.000000 14.000000 l 19 | h 20 | 8.000000 16.000000 m 21 | 8.000000 17.000000 l 22 | 8.000000 16.000000 l 23 | h 24 | 10.000000 14.000000 m 25 | 9.000000 14.000000 l 26 | 9.000000 13.613307 9.222947 13.261271 9.572528 13.095971 c 27 | 10.000000 14.000000 l 28 | h 29 | 14.000000 8.000000 m 30 | 15.000000 8.000000 l 31 | 15.000000 8.015635 14.999634 8.031268 14.998900 8.046886 c 32 | 14.000000 8.000000 l 33 | h 34 | 14.000000 5.000000 m 35 | 13.000000 5.000000 l 36 | 13.000000 4.959834 13.002419 4.919705 13.007247 4.879831 c 37 | 14.000000 5.000000 l 38 | h 39 | 16.000000 2.000000 m 40 | 16.000000 1.000000 l 41 | 16.454157 1.000000 16.851284 1.306046 16.966997 1.745214 c 42 | 17.082710 2.184384 16.887947 2.646381 16.492754 2.870169 c 43 | 16.000000 2.000000 l 44 | h 45 | 0.000000 2.000000 m 46 | -0.492753 2.870169 l 47 | -0.887947 2.646381 -1.082710 2.184384 -0.966998 1.745214 c 48 | -0.851285 1.306046 -0.454158 1.000000 0.000000 1.000000 c 49 | 0.000000 2.000000 l 50 | h 51 | 2.000000 5.000000 m 52 | 2.992754 4.879831 l 53 | 2.997580 4.919705 3.000000 4.959834 3.000000 5.000000 c 54 | 2.000000 5.000000 l 55 | h 56 | 2.000000 8.000000 m 57 | 1.001100 8.046886 l 58 | 1.000367 8.031268 1.000000 8.015635 1.000000 8.000000 c 59 | 2.000000 8.000000 l 60 | h 61 | 6.427472 13.095971 m 62 | 6.926753 13.332057 7.140115 13.928190 6.904029 14.427471 c 63 | 6.667943 14.926753 6.071810 15.140115 5.572528 14.904029 c 64 | 6.427472 13.095971 l 65 | h 66 | 7.000000 14.000000 m 67 | 7.000000 14.265216 7.105357 14.519570 7.292893 14.707107 c 68 | 5.878680 16.121321 l 69 | 5.316071 15.558712 5.000000 14.795650 5.000000 14.000000 c 70 | 7.000000 14.000000 l 71 | h 72 | 7.292893 14.707107 m 73 | 7.480430 14.894644 7.734784 15.000000 8.000000 15.000000 c 74 | 8.000000 17.000000 l 75 | 7.204350 17.000000 6.441289 16.683929 5.878680 16.121321 c 76 | 7.292893 14.707107 l 77 | h 78 | 8.000000 15.000000 m 79 | 8.265217 15.000000 8.519570 14.894644 8.707107 14.707107 c 80 | 10.121320 16.121321 l 81 | 9.558711 16.683929 8.795650 17.000000 8.000000 17.000000 c 82 | 8.000000 15.000000 l 83 | h 84 | 8.707107 14.707107 m 85 | 8.894643 14.519570 9.000000 14.265216 9.000000 14.000000 c 86 | 11.000000 14.000000 l 87 | 11.000000 14.795650 10.683928 15.558712 10.121320 16.121321 c 88 | 8.707107 14.707107 l 89 | h 90 | 9.572528 13.095971 m 91 | 10.556879 12.630519 11.396015 11.905977 12.000000 11.000000 c 92 | 13.664101 12.109401 l 93 | 12.858788 13.317369 11.739939 14.283426 10.427472 14.904029 c 94 | 9.572528 13.095971 l 95 | h 96 | 12.000000 11.000000 m 97 | 12.603985 10.094023 12.950048 9.040766 13.001100 7.953115 c 98 | 14.998900 8.046886 l 99 | 14.930831 9.497087 14.469414 10.901431 13.664101 12.109401 c 100 | 12.000000 11.000000 l 101 | h 102 | 13.000000 8.000000 m 103 | 13.000000 5.000000 l 104 | 15.000000 5.000000 l 105 | 15.000000 8.000000 l 106 | 13.000000 8.000000 l 107 | h 108 | 13.007247 4.879831 m 109 | 13.101315 4.102697 13.376540 3.358509 13.810762 2.707175 c 110 | 15.474863 3.816575 l 111 | 15.214330 4.207376 15.049195 4.653890 14.992753 5.120169 c 112 | 13.007247 4.879831 l 113 | h 114 | 13.810762 2.707175 m 115 | 14.244985 2.055841 14.826073 1.515561 15.507247 1.129831 c 116 | 16.492754 2.870169 l 117 | 16.084049 3.101607 15.735396 3.425775 15.474863 3.816575 c 118 | 13.810762 2.707175 l 119 | h 120 | 16.000000 3.000000 m 121 | 0.000000 3.000000 l 122 | 0.000000 1.000000 l 123 | 16.000000 1.000000 l 124 | 16.000000 3.000000 l 125 | h 126 | 0.492753 1.129831 m 127 | 1.173927 1.515561 1.755015 2.055841 2.189238 2.707175 c 128 | 0.525137 3.816575 l 129 | 0.264603 3.425775 -0.084050 3.101607 -0.492753 2.870169 c 130 | 0.492753 1.129831 l 131 | h 132 | 2.189238 2.707175 m 133 | 2.623460 3.358509 2.898685 4.102697 2.992754 4.879831 c 134 | 1.007246 5.120169 l 135 | 0.950805 4.653890 0.785671 4.207376 0.525137 3.816575 c 136 | 2.189238 2.707175 l 137 | h 138 | 3.000000 5.000000 m 139 | 3.000000 8.000000 l 140 | 1.000000 8.000000 l 141 | 1.000000 5.000000 l 142 | 3.000000 5.000000 l 143 | h 144 | 2.998900 7.953115 m 145 | 3.049952 9.040766 3.396015 10.094023 4.000000 11.000000 c 146 | 2.335899 12.109401 l 147 | 1.530586 10.901431 1.069169 9.497087 1.001100 8.046886 c 148 | 2.998900 7.953115 l 149 | h 150 | 4.000000 11.000000 m 151 | 4.603985 11.905977 5.443121 12.630519 6.427472 13.095971 c 152 | 5.572528 14.904029 l 153 | 4.260061 14.283426 3.141212 13.317369 2.335899 12.109401 c 154 | 4.000000 11.000000 l 155 | h 156 | f 157 | n 158 | Q 159 | q 160 | 1.000000 0.000000 -0.000000 1.000000 9.000000 1.000000 cm 161 | 1.000000 1.000000 1.000000 scn 162 | 1.000000 6.000000 m 163 | 1.000000 6.552285 0.552285 7.000000 0.000000 7.000000 c 164 | -0.552285 7.000000 -1.000000 6.552285 -1.000000 6.000000 c 165 | 1.000000 6.000000 l 166 | h 167 | 3.000000 2.000000 m 168 | 3.000000 1.000000 l 169 | 3.000000 2.000000 l 170 | h 171 | 7.000000 6.000000 m 172 | 7.000000 6.552285 6.552285 7.000000 6.000000 7.000000 c 173 | 5.447715 7.000000 5.000000 6.552285 5.000000 6.000000 c 174 | 7.000000 6.000000 l 175 | h 176 | -1.000000 6.000000 m 177 | -1.000000 5.000000 l 178 | 1.000000 5.000000 l 179 | 1.000000 6.000000 l 180 | -1.000000 6.000000 l 181 | h 182 | -1.000000 5.000000 m 183 | -1.000000 3.939135 -0.578573 2.921718 0.171572 2.171572 c 184 | 1.585786 3.585786 l 185 | 1.210714 3.960859 1.000000 4.469566 1.000000 5.000000 c 186 | -1.000000 5.000000 l 187 | h 188 | 0.171572 2.171572 m 189 | 0.921718 1.421427 1.939134 1.000000 3.000000 1.000000 c 190 | 3.000000 3.000000 l 191 | 2.469567 3.000000 1.960858 3.210714 1.585786 3.585786 c 192 | 0.171572 2.171572 l 193 | h 194 | 3.000000 1.000000 m 195 | 4.060865 1.000000 5.078282 1.421427 5.828427 2.171572 c 196 | 4.414214 3.585786 l 197 | 4.039142 3.210714 3.530433 3.000000 3.000000 3.000000 c 198 | 3.000000 1.000000 l 199 | h 200 | 5.828427 2.171572 m 201 | 6.578573 2.921718 7.000000 3.939135 7.000000 5.000000 c 202 | 5.000000 5.000000 l 203 | 5.000000 4.469566 4.789287 3.960859 4.414214 3.585786 c 204 | 5.828427 2.171572 l 205 | h 206 | 7.000000 5.000000 m 207 | 7.000000 6.000000 l 208 | 5.000000 6.000000 l 209 | 5.000000 5.000000 l 210 | 7.000000 5.000000 l 211 | h 212 | f 213 | n 214 | Q 215 | 216 | endstream 217 | endobj 218 | 219 | 3 0 obj 220 | 5370 221 | endobj 222 | 223 | 4 0 obj 224 | << /Annots [] 225 | /Type /Page 226 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 227 | /Resources 1 0 R 228 | /Contents 2 0 R 229 | /Parent 5 0 R 230 | >> 231 | endobj 232 | 233 | 5 0 obj 234 | << /Kids [ 4 0 R ] 235 | /Count 1 236 | /Type /Pages 237 | >> 238 | endobj 239 | 240 | 6 0 obj 241 | << /Pages 5 0 R 242 | /Type /Catalog 243 | >> 244 | endobj 245 | 246 | xref 247 | 0 7 248 | 0000000000 65535 f 249 | 0000000010 00000 n 250 | 0000000034 00000 n 251 | 0000005460 00000 n 252 | 0000005483 00000 n 253 | 0000005656 00000 n 254 | 0000005730 00000 n 255 | trailer 256 | << /ID [ (some) (id) ] 257 | /Root 6 0 R 258 | /Size 7 259 | >> 260 | startxref 261 | 5789 262 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/performanceReview.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "chart-dots-3 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/performanceReview.imageset/chart-dots-3 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 3.000000 13.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 3.000000 4.000000 m 16 | 3.000000 3.447715 2.552285 3.000000 2.000000 3.000000 c 17 | 2.000000 1.000000 l 18 | 3.656854 1.000000 5.000000 2.343146 5.000000 4.000000 c 19 | 3.000000 4.000000 l 20 | h 21 | 2.000000 3.000000 m 22 | 1.447715 3.000000 1.000000 3.447715 1.000000 4.000000 c 23 | -1.000000 4.000000 l 24 | -1.000000 2.343146 0.343146 1.000000 2.000000 1.000000 c 25 | 2.000000 3.000000 l 26 | h 27 | 1.000000 4.000000 m 28 | 1.000000 4.552285 1.447715 5.000000 2.000000 5.000000 c 29 | 2.000000 7.000000 l 30 | 0.343146 7.000000 -1.000000 5.656854 -1.000000 4.000000 c 31 | 1.000000 4.000000 l 32 | h 33 | 2.000000 5.000000 m 34 | 2.552285 5.000000 3.000000 4.552285 3.000000 4.000000 c 35 | 5.000000 4.000000 l 36 | 5.000000 5.656854 3.656854 7.000000 2.000000 7.000000 c 37 | 2.000000 5.000000 l 38 | h 39 | f 40 | n 41 | Q 42 | q 43 | 1.000000 0.000000 -0.000000 1.000000 14.000000 5.000000 cm 44 | 1.000000 1.000000 1.000000 scn 45 | 3.000000 4.000000 m 46 | 3.000000 3.447715 2.552285 3.000000 2.000000 3.000000 c 47 | 2.000000 1.000000 l 48 | 3.656854 1.000000 5.000000 2.343146 5.000000 4.000000 c 49 | 3.000000 4.000000 l 50 | h 51 | 2.000000 3.000000 m 52 | 1.447715 3.000000 1.000000 3.447715 1.000000 4.000000 c 53 | -1.000000 4.000000 l 54 | -1.000000 2.343146 0.343146 1.000000 2.000000 1.000000 c 55 | 2.000000 3.000000 l 56 | h 57 | 1.000000 4.000000 m 58 | 1.000000 4.552285 1.447715 5.000000 2.000000 5.000000 c 59 | 2.000000 7.000000 l 60 | 0.343146 7.000000 -1.000000 5.656854 -1.000000 4.000000 c 61 | 1.000000 4.000000 l 62 | h 63 | 2.000000 5.000000 m 64 | 2.552285 5.000000 3.000000 4.552285 3.000000 4.000000 c 65 | 5.000000 4.000000 l 66 | 5.000000 5.656854 3.656854 7.000000 2.000000 7.000000 c 67 | 2.000000 5.000000 l 68 | h 69 | f 70 | n 71 | Q 72 | q 73 | 1.000000 0.000000 -0.000000 1.000000 15.000000 13.000000 cm 74 | 1.000000 1.000000 1.000000 scn 75 | 5.000000 5.000000 m 76 | 5.000000 3.895431 4.104569 3.000000 3.000000 3.000000 c 77 | 3.000000 1.000000 l 78 | 5.209139 1.000000 7.000000 2.790861 7.000000 5.000000 c 79 | 5.000000 5.000000 l 80 | h 81 | 3.000000 3.000000 m 82 | 1.895430 3.000000 1.000000 3.895431 1.000000 5.000000 c 83 | -1.000000 5.000000 l 84 | -1.000000 2.790861 0.790861 1.000000 3.000000 1.000000 c 85 | 3.000000 3.000000 l 86 | h 87 | 1.000000 5.000000 m 88 | 1.000000 6.104569 1.895430 7.000000 3.000000 7.000000 c 89 | 3.000000 9.000000 l 90 | 0.790861 9.000000 -1.000000 7.209139 -1.000000 5.000000 c 91 | 1.000000 5.000000 l 92 | h 93 | 3.000000 7.000000 m 94 | 4.104569 7.000000 5.000000 6.104569 5.000000 5.000000 c 95 | 7.000000 5.000000 l 96 | 7.000000 7.209139 5.209139 9.000000 3.000000 9.000000 c 97 | 3.000000 7.000000 l 98 | h 99 | f 100 | n 101 | Q 102 | q 103 | 1.000000 0.000000 -0.000000 1.000000 3.000000 1.000000 cm 104 | 1.000000 1.000000 1.000000 scn 105 | 5.000000 5.000000 m 106 | 5.000000 3.895431 4.104569 3.000000 3.000000 3.000000 c 107 | 3.000000 1.000000 l 108 | 5.209139 1.000000 7.000000 2.790861 7.000000 5.000000 c 109 | 5.000000 5.000000 l 110 | h 111 | 3.000000 3.000000 m 112 | 1.895430 3.000000 1.000000 3.895431 1.000000 5.000000 c 113 | -1.000000 5.000000 l 114 | -1.000000 2.790861 0.790861 1.000000 3.000000 1.000000 c 115 | 3.000000 3.000000 l 116 | h 117 | 1.000000 5.000000 m 118 | 1.000000 6.104569 1.895430 7.000000 3.000000 7.000000 c 119 | 3.000000 9.000000 l 120 | 0.790861 9.000000 -1.000000 7.209139 -1.000000 5.000000 c 121 | 1.000000 5.000000 l 122 | h 123 | 3.000000 7.000000 m 124 | 4.104569 7.000000 5.000000 6.104569 5.000000 5.000000 c 125 | 7.000000 5.000000 l 126 | 7.000000 7.209139 5.209139 9.000000 3.000000 9.000000 c 127 | 3.000000 7.000000 l 128 | h 129 | f 130 | n 131 | Q 132 | q 133 | 1.000000 0.000000 -0.000000 1.000000 9.000000 4.766937 cm 134 | 1.000000 1.000000 1.000000 scn 135 | -0.287348 3.190889 m 136 | -0.816341 3.032191 -1.116524 2.474708 -0.957826 1.945715 c 137 | -0.799128 1.416722 -0.241645 1.116539 0.287348 1.275236 c 138 | -0.287348 3.190889 l 139 | h 140 | 5.287348 2.775237 m 141 | 5.816341 2.933934 6.116524 3.491418 5.957826 4.020411 c 142 | 5.799129 4.549404 5.241645 4.849587 4.712652 4.690889 c 143 | 5.287348 2.775237 l 144 | h 145 | 0.287348 1.275236 m 146 | 5.287348 2.775237 l 147 | 4.712652 4.690889 l 148 | -0.287348 3.190889 l 149 | 0.287348 1.275236 l 150 | h 151 | f 152 | n 153 | Q 154 | q 155 | 1.000000 0.000000 -0.000000 1.000000 6.500000 7.856155 cm 156 | 1.000000 1.000000 1.000000 scn 157 | 0.566574 8.467855 m 158 | 0.111485 8.780766 -0.511101 8.665507 -0.824011 8.210418 c 159 | -1.136921 7.755330 -1.021662 7.132743 -0.566574 6.819833 c 160 | 0.566574 8.467855 l 161 | h 162 | 7.243427 1.449833 m 163 | 7.698515 1.136924 8.321101 1.252182 8.634011 1.707271 c 164 | 8.946921 2.162360 8.831663 2.784946 8.376574 3.097856 c 165 | 7.243427 1.449833 l 166 | h 167 | -0.566574 6.819833 m 168 | 7.243427 1.449833 l 169 | 8.376574 3.097856 l 170 | 0.566574 8.467855 l 171 | -0.566574 6.819833 l 172 | h 173 | f 174 | n 175 | Q 176 | q 177 | 1.000000 0.000000 -0.000000 1.000000 7.000000 14.878448 cm 178 | 1.000000 1.000000 1.000000 scn 179 | -0.124035 3.113829 m 180 | -0.672055 3.045327 -1.060780 2.545537 -0.992278 1.997517 c 181 | -0.923775 1.449497 -0.423985 1.060771 0.124035 1.129274 c 182 | -0.124035 3.113829 l 183 | h 184 | 8.124035 2.129274 m 185 | 8.672054 2.197776 9.060781 2.697566 8.992278 3.245586 c 186 | 8.923776 3.793606 8.423985 4.182332 7.875965 4.113830 c 187 | 8.124035 2.129274 l 188 | h 189 | 0.124035 1.129274 m 190 | 8.124035 2.129274 l 191 | 7.875965 4.113830 l 192 | -0.124035 3.113829 l 193 | 0.124035 1.129274 l 194 | h 195 | f 196 | n 197 | Q 198 | 199 | endstream 200 | endobj 201 | 202 | 3 0 obj 203 | 4765 204 | endobj 205 | 206 | 4 0 obj 207 | << /Annots [] 208 | /Type /Page 209 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 210 | /Resources 1 0 R 211 | /Contents 2 0 R 212 | /Parent 5 0 R 213 | >> 214 | endobj 215 | 216 | 5 0 obj 217 | << /Kids [ 4 0 R ] 218 | /Count 1 219 | /Type /Pages 220 | >> 221 | endobj 222 | 223 | 6 0 obj 224 | << /Pages 5 0 R 225 | /Type /Catalog 226 | >> 227 | endobj 228 | 229 | xref 230 | 0 7 231 | 0000000000 65535 f 232 | 0000000010 00000 n 233 | 0000000034 00000 n 234 | 0000004855 00000 n 235 | 0000004878 00000 n 236 | 0000005051 00000 n 237 | 0000005125 00000 n 238 | trailer 239 | << /ID [ (some) (id) ] 240 | /Root 6 0 R 241 | /Size 7 242 | >> 243 | startxref 244 | 5184 245 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/projects.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "folders 1.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/icon/projects.imageset/folders 1.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 7.000000 5.000000 cm 14 | 1.000000 1.000000 1.000000 scn 15 | 2.000000 15.000000 m 16 | 2.000000 16.000000 l 17 | 2.000000 15.000000 l 18 | h 19 | 5.000000 15.000000 m 20 | 5.707107 15.707107 l 21 | 5.519570 15.894643 5.265216 16.000000 5.000000 16.000000 c 22 | 5.000000 15.000000 l 23 | h 24 | 7.000000 13.000000 m 25 | 6.292893 12.292893 l 26 | 6.480430 12.105357 6.734784 12.000000 7.000000 12.000000 c 27 | 7.000000 13.000000 l 28 | h 29 | 12.000000 13.000000 m 30 | 12.000000 14.000000 l 31 | 12.000000 13.000000 l 32 | h 33 | 0.000000 4.000000 m 34 | -1.000000 4.000000 l 35 | 0.000000 4.000000 l 36 | h 37 | 2.000000 14.000000 m 38 | 5.000000 14.000000 l 39 | 5.000000 16.000000 l 40 | 2.000000 16.000000 l 41 | 2.000000 14.000000 l 42 | h 43 | 4.292893 14.292893 m 44 | 6.292893 12.292893 l 45 | 7.707107 13.707107 l 46 | 5.707107 15.707107 l 47 | 4.292893 14.292893 l 48 | h 49 | 7.000000 12.000000 m 50 | 12.000000 12.000000 l 51 | 12.000000 14.000000 l 52 | 7.000000 14.000000 l 53 | 7.000000 12.000000 l 54 | h 55 | 12.000000 12.000000 m 56 | 12.265217 12.000000 12.519570 11.894644 12.707107 11.707107 c 57 | 14.121320 13.121321 l 58 | 13.558711 13.683929 12.795650 14.000000 12.000000 14.000000 c 59 | 12.000000 12.000000 l 60 | h 61 | 12.707107 11.707107 m 62 | 12.894643 11.519570 13.000000 11.265216 13.000000 11.000000 c 63 | 15.000000 11.000000 l 64 | 15.000000 11.795650 14.683928 12.558712 14.121320 13.121321 c 65 | 12.707107 11.707107 l 66 | h 67 | 13.000000 11.000000 m 68 | 13.000000 4.000000 l 69 | 15.000000 4.000000 l 70 | 15.000000 11.000000 l 71 | 13.000000 11.000000 l 72 | h 73 | 13.000000 4.000000 m 74 | 13.000000 3.734784 12.894643 3.480431 12.707107 3.292893 c 75 | 14.121320 1.878680 l 76 | 14.683928 2.441289 15.000000 3.204350 15.000000 4.000000 c 77 | 13.000000 4.000000 l 78 | h 79 | 12.707107 3.292893 m 80 | 12.519569 3.105357 12.265216 3.000000 12.000000 3.000000 c 81 | 12.000000 1.000000 l 82 | 12.795650 1.000000 13.558711 1.316072 14.121320 1.878680 c 83 | 12.707107 3.292893 l 84 | h 85 | 12.000000 3.000000 m 86 | 2.000000 3.000000 l 87 | 2.000000 1.000000 l 88 | 12.000000 1.000000 l 89 | 12.000000 3.000000 l 90 | h 91 | 2.000000 3.000000 m 92 | 1.734784 3.000000 1.480430 3.105357 1.292893 3.292893 c 93 | -0.121320 1.878680 l 94 | 0.441288 1.316072 1.204350 1.000000 2.000000 1.000000 c 95 | 2.000000 3.000000 l 96 | h 97 | 1.292893 3.292893 m 98 | 1.105357 3.480430 1.000000 3.734783 1.000000 4.000000 c 99 | -1.000000 4.000000 l 100 | -1.000000 3.204350 -0.683930 2.441289 -0.121320 1.878680 c 101 | 1.292893 3.292893 l 102 | h 103 | 1.000000 4.000000 m 104 | 1.000000 13.000000 l 105 | -1.000000 13.000000 l 106 | -1.000000 4.000000 l 107 | 1.000000 4.000000 l 108 | h 109 | 1.000000 13.000000 m 110 | 1.000000 13.265217 1.105357 13.519570 1.292893 13.707107 c 111 | -0.121320 15.121321 l 112 | -0.683930 14.558711 -1.000000 13.795650 -1.000000 13.000000 c 113 | 1.000000 13.000000 l 114 | h 115 | 1.292893 13.707107 m 116 | 1.480429 13.894643 1.734783 14.000000 2.000000 14.000000 c 117 | 2.000000 16.000000 l 118 | 1.204351 16.000000 0.441289 15.683929 -0.121320 15.121321 c 119 | 1.292893 13.707107 l 120 | h 121 | f 122 | n 123 | Q 124 | q 125 | 1.000000 0.000000 -0.000000 1.000000 3.000000 1.000000 cm 126 | 1.000000 1.000000 1.000000 scn 127 | 15.000000 6.000000 m 128 | 15.000000 6.552285 14.552285 7.000000 14.000000 7.000000 c 129 | 13.447715 7.000000 13.000000 6.552285 13.000000 6.000000 c 130 | 15.000000 6.000000 l 131 | h 132 | 0.000000 4.000000 m 133 | -1.000000 4.000000 l 134 | 0.000000 4.000000 l 135 | h 136 | 2.000000 15.000000 m 137 | 2.000000 14.000000 l 138 | 2.000000 15.000000 l 139 | h 140 | 4.000000 14.000000 m 141 | 4.552285 14.000000 5.000000 14.447715 5.000000 15.000000 c 142 | 5.000000 15.552285 4.552285 16.000000 4.000000 16.000000 c 143 | 4.000000 14.000000 l 144 | h 145 | 13.000000 6.000000 m 146 | 13.000000 4.000000 l 147 | 15.000000 4.000000 l 148 | 15.000000 6.000000 l 149 | 13.000000 6.000000 l 150 | h 151 | 13.000000 4.000000 m 152 | 13.000000 3.734784 12.894643 3.480431 12.707107 3.292893 c 153 | 14.121320 1.878680 l 154 | 14.683928 2.441289 15.000000 3.204350 15.000000 4.000000 c 155 | 13.000000 4.000000 l 156 | h 157 | 12.707107 3.292893 m 158 | 12.519569 3.105357 12.265216 3.000000 12.000000 3.000000 c 159 | 12.000000 1.000000 l 160 | 12.795650 1.000000 13.558711 1.316072 14.121320 1.878680 c 161 | 12.707107 3.292893 l 162 | h 163 | 12.000000 3.000000 m 164 | 2.000000 3.000000 l 165 | 2.000000 1.000000 l 166 | 12.000000 1.000000 l 167 | 12.000000 3.000000 l 168 | h 169 | 2.000000 3.000000 m 170 | 1.734784 3.000000 1.480430 3.105357 1.292893 3.292893 c 171 | -0.121320 1.878680 l 172 | 0.441288 1.316072 1.204350 1.000000 2.000000 1.000000 c 173 | 2.000000 3.000000 l 174 | h 175 | 1.292893 3.292893 m 176 | 1.105357 3.480430 1.000000 3.734783 1.000000 4.000000 c 177 | -1.000000 4.000000 l 178 | -1.000000 3.204350 -0.683930 2.441289 -0.121320 1.878680 c 179 | 1.292893 3.292893 l 180 | h 181 | 1.000000 4.000000 m 182 | 1.000000 13.000000 l 183 | -1.000000 13.000000 l 184 | -1.000000 4.000000 l 185 | 1.000000 4.000000 l 186 | h 187 | 1.000000 13.000000 m 188 | 1.000000 13.265217 1.105357 13.519570 1.292893 13.707107 c 189 | -0.121320 15.121320 l 190 | -0.683930 14.558711 -1.000000 13.795650 -1.000000 13.000000 c 191 | 1.000000 13.000000 l 192 | h 193 | 1.292893 13.707107 m 194 | 1.480430 13.894643 1.734784 14.000000 2.000000 14.000000 c 195 | 2.000000 16.000000 l 196 | 1.204350 16.000000 0.441288 15.683928 -0.121320 15.121320 c 197 | 1.292893 13.707107 l 198 | h 199 | 2.000000 14.000000 m 200 | 4.000000 14.000000 l 201 | 4.000000 16.000000 l 202 | 2.000000 16.000000 l 203 | 2.000000 14.000000 l 204 | h 205 | f 206 | n 207 | Q 208 | 209 | endstream 210 | endobj 211 | 212 | 3 0 obj 213 | 4751 214 | endobj 215 | 216 | 4 0 obj 217 | << /Annots [] 218 | /Type /Page 219 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 220 | /Resources 1 0 R 221 | /Contents 2 0 R 222 | /Parent 5 0 R 223 | >> 224 | endobj 225 | 226 | 5 0 obj 227 | << /Kids [ 4 0 R ] 228 | /Count 1 229 | /Type /Pages 230 | >> 231 | endobj 232 | 233 | 6 0 obj 234 | << /Pages 5 0 R 235 | /Type /Catalog 236 | >> 237 | endobj 238 | 239 | xref 240 | 0 7 241 | 0000000000 65535 f 242 | 0000000010 00000 n 243 | 0000000034 00000 n 244 | 0000004841 00000 n 245 | 0000004864 00000 n 246 | 0000005037 00000 n 247 | 0000005111 00000 n 248 | trailer 249 | << /ID [ (some) (id) ] 250 | /Root 6 0 R 251 | /Size 7 252 | >> 253 | startxref 254 | 5170 255 | %%EOF -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/placeholder/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/placeholder/user.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Ellipse 87.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/placeholder/user.imageset/Ellipse 87.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Example/Example/Assets.xcassets/placeholder/user.imageset/Ellipse 87.pdf -------------------------------------------------------------------------------- /Example/Example/ColorSchemePicker/ColorSchemeButtonStyle.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | struct ColorSchemeButtonStyle: ButtonStyle { 5 | 6 | private var selected: Bool = false 7 | private var backgroundNamespace: Namespace.ID 8 | 9 | init(selected: Bool, backgroundNamespace: Namespace.ID) { 10 | self.selected = selected 11 | self.backgroundNamespace = backgroundNamespace 12 | } 13 | 14 | func makeBody(configuration: Configuration) -> some View { 15 | ZStack { 16 | if selected { 17 | background(for: configuration) 18 | .matchedGeometryEffect(id: "background", in: backgroundNamespace) 19 | } else { 20 | background(for: configuration) 21 | } 22 | 23 | configuration.label 24 | .foregroundColor(Color("color/selectionForeground")) 25 | } 26 | .animation(.spring(), value: selected) 27 | .animation(.spring(), value: configuration.isPressed) 28 | } 29 | 30 | @ViewBuilder 31 | private func background(for configuration: Configuration) -> some View { 32 | RoundedRectangle(cornerRadius: UIDimenion.cornerRadius) 33 | .fill(Color("color/controlForeground").opacity(backgroundOpacity(for: configuration))) 34 | .frame(maxWidth: .infinity, maxHeight: .infinity) 35 | } 36 | 37 | private func backgroundOpacity(for configuration: Configuration) -> Double { 38 | if selected { 39 | return configuration.isPressed ? 0.33 : 1 40 | } else { 41 | return configuration.isPressed ? 0.33 : 0 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Example/Example/ColorSchemePicker/ColorSchemePicker.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private extension CGFloat { 5 | 6 | static let padding: Self = 2 7 | static let spacing: Self = 8 8 | 9 | static let elementWidth: Self = 132 10 | static let elementHeight: Self = 44 11 | } 12 | 13 | extension ColorScheme: CustomStringConvertible { 14 | 15 | public var description: String { 16 | switch self { 17 | case .light: 18 | return "Light" 19 | 20 | case .dark: 21 | return "Dark" 22 | 23 | @unknown default: 24 | return "Unknown" 25 | } 26 | } 27 | 28 | var icon: Image { 29 | switch self { 30 | case .dark: 31 | return Image("icon/colorScheme/dark") 32 | 33 | case .light: 34 | fallthrough 35 | 36 | @unknown default: 37 | return Image("icon/colorScheme/light") 38 | } 39 | } 40 | } 41 | 42 | struct ColorSchemePicker: View { 43 | 44 | @Binding private var selection: ColorScheme 45 | @Environment(\.menuAppearance) private var appearance 46 | @Namespace private var namespace 47 | @Namespace private var selectionBackgroundNamespace 48 | 49 | // MARK: - Init 50 | 51 | init(selection: Binding) { 52 | _selection = selection 53 | } 54 | 55 | // MARK: - Body 56 | 57 | var body: some View { 58 | VStack { 59 | content 60 | } 61 | .padding(2) 62 | .background { 63 | RoundedRectangle(cornerRadius: UIDimenion.cornerRadius) 64 | .fill(Color("color/controlBackground")) 65 | } 66 | } 67 | 68 | @ViewBuilder 69 | private var content: some View { 70 | switch appearance { 71 | case .default: 72 | HStack(spacing: .spacing) { 73 | ForEach(ColorScheme.allCases, id: \.self) { value in 74 | Button { 75 | withAnimation { 76 | selection = value 77 | } 78 | } label: { 79 | Label { 80 | Text(value.description) 81 | } icon: { 82 | value.icon 83 | .matchedGeometryEffect(id: value.description, in: namespace) 84 | } 85 | } 86 | .buttonStyle(ColorSchemeButtonStyle(selected: value == selection, backgroundNamespace: selectionBackgroundNamespace)) 87 | .frame(width: .elementWidth, height: .elementHeight) 88 | } 89 | } 90 | 91 | case .compact: 92 | Button { 93 | withAnimation { 94 | selection.toggle() 95 | } 96 | } label: { 97 | selection 98 | .icon 99 | .foregroundColor(Color("color/selectionForeground")) 100 | .matchedGeometryEffect(id: selection.description, in: namespace) 101 | } 102 | .frame(width: .elementHeight, height: .elementHeight) 103 | } 104 | } 105 | } 106 | 107 | struct ColorSchemePicker_Previews: PreviewProvider { 108 | 109 | struct Preview: View { 110 | 111 | @State var colorScheme: ColorScheme = .light 112 | 113 | var body: some View { 114 | ColorSchemePicker(selection: $colorScheme) 115 | } 116 | } 117 | 118 | static var previews: some View { 119 | Preview() 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /Example/Example/ContentView.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | import Drawer 4 | 5 | struct ContentView: View { 6 | 7 | @State private var isOpened = true 8 | 9 | @Environment(\.colorScheme) private var colorScheme 10 | 11 | @State private var selection: MenuItem? = .dashboard 12 | @State var appearance: MenuAppearance = .default 13 | 14 | var body: some View { 15 | Drawer( 16 | isOpened: $isOpened, 17 | menu: { 18 | MenuView(selection: $selection) 19 | }, 20 | content: { 21 | ZStack { 22 | Color("color/background") 23 | .environment(\.colorScheme, colorScheme.inverted()) 24 | .edgesIgnoringSafeArea(.all) 25 | .animation(.default, value: colorScheme) 26 | 27 | Button { 28 | isOpened.toggle() 29 | } label: { 30 | Text("Open") 31 | .foregroundColor(Color("color/text")) 32 | .typographyStyle(.headline) 33 | } 34 | } 35 | } 36 | ) 37 | .statusBarHidden(true) 38 | } 39 | } 40 | 41 | struct ContentView_Previews: PreviewProvider { 42 | static var previews: some View { 43 | ContentView() 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Example/Example/ExampleApp.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | @main 5 | struct ExampleApp: App { 6 | var body: some Scene { 7 | WindowGroup { 8 | ContentView() 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIAppFonts 6 | 7 | Gilroy-Medium.ttf 8 | Gilroy-Regular.ttf 9 | Gilroy-Bold.ttf 10 | Gilroy-Semibold.ttf 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Example/Example/Menu/Appearance/MenuAppearance.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | enum MenuAppearance: String { 5 | 6 | case `default`, compact 7 | 8 | mutating func toggle() { 9 | switch self { 10 | case .default: 11 | self = .compact 12 | 13 | case .compact: 14 | self = .default 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/Example/Menu/Appearance/MenuAppearanceEnvironmentKey.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private struct MenuAppearanceEnvironmentKey: EnvironmentKey { 5 | 6 | static var defaultValue: MenuAppearance = .default 7 | } 8 | 9 | extension EnvironmentValues { 10 | 11 | var menuAppearance: MenuAppearance { 12 | get { 13 | self[MenuAppearanceEnvironmentKey.self] 14 | } 15 | set { 16 | self[MenuAppearanceEnvironmentKey.self] = newValue 17 | } 18 | } 19 | } 20 | 21 | extension View { 22 | 23 | func menuAppearance(_ appearance: MenuAppearance) -> some View { 24 | environment(\.menuAppearance, appearance) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Example/Example/Menu/MenuBackground.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | struct MenuBackground: View { 5 | 6 | private let colorScheme: ColorScheme 7 | 8 | // MARK: - Init 9 | 10 | init(colorScheme: ColorScheme) { 11 | self.colorScheme = colorScheme 12 | } 13 | 14 | // MARK: - Body 15 | 16 | var body: some View { 17 | RoundedRectangle(cornerRadius: UIDimenion.backgroundCornerRadius) 18 | .fill(Color("color/background")) 19 | .environment(\.colorScheme, colorScheme) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Example/Menu/MenuItem.swift: -------------------------------------------------------------------------------- 1 | 2 | enum MenuItem: Identifiable, CaseIterable { 3 | 4 | case workloadSheet 5 | case dashboard 6 | case projects 7 | case departments 8 | case employees 9 | case notifications 10 | case performanceReview 11 | case archive 12 | 13 | var id: Int { hashValue } 14 | } 15 | -------------------------------------------------------------------------------- /Example/Example/Menu/MenuItemGeometryPreferenceKey.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | struct MenuItemGeometryPreferenceKey: PreferenceKey { 5 | 6 | static var defaultValue: [MenuItem: Anchor] = [:] 7 | 8 | static func reduce(value: inout [MenuItem: Anchor], nextValue: () -> [MenuItem: Anchor]) { 9 | value.merge(nextValue()) { _, rhs in rhs } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/Example/Menu/MenuItemList.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private extension CGFloat { 5 | 6 | static let headerBottomSpacing: Self = 16 7 | } 8 | 9 | struct MenuItemList: View { 10 | 11 | @Binding private var selection: MenuItem? 12 | private let user: User 13 | private let items: [MenuItem] 14 | private let onUserSelection: (() -> Void)? 15 | 16 | // MARK: - Init 17 | 18 | init(items: [MenuItem] = MenuItem.allCases, selection: Binding, user: User = .stub, onUserSelected: (() -> Void)? = nil) { 19 | self.items = items 20 | self.user = user 21 | _selection = selection 22 | self.onUserSelection = onUserSelected 23 | } 24 | 25 | // MARK: - Body 26 | 27 | var body: some View { 28 | VStack(alignment: .leading) { 29 | UserHeader(user: user) 30 | .onTapGesture { 31 | onUserSelection?() 32 | } 33 | 34 | Spacer() 35 | .frame(height: .headerBottomSpacing) 36 | 37 | itemsList 38 | } 39 | .animation(.spring(), value: selection) 40 | } 41 | 42 | @ViewBuilder 43 | private var itemsList: some View { 44 | VStack(alignment: .leading) { 45 | ForEach(items) { item in 46 | Button( 47 | action: { 48 | if selection == item { 49 | selection = nil 50 | } else { 51 | selection = item 52 | } 53 | }, 54 | label: { 55 | Label(item: item) 56 | } 57 | ) 58 | .buttonStyle(MenuItemButtonStyle(isSelected: item == selection)) 59 | .anchorPreference(key: MenuItemGeometryPreferenceKey.self, value: .bounds) { 60 | [item: $0] 61 | } 62 | } 63 | } 64 | .overlayPreferenceValue(MenuItemGeometryPreferenceKey.self, alignment: .topLeading) { value in 65 | VStack(alignment: .leading) { 66 | ForEach(items) { item in 67 | Button( 68 | action: { /* noop */ }, 69 | label: { Label(item: item) } 70 | ) 71 | .buttonStyle(MenuItemButtonStyle(isSelected: true)) 72 | } 73 | } 74 | .background(Color("color/selectionBackground")) 75 | .mask { 76 | GeometryReader { proxy in 77 | selectionBackground(from: value, in: proxy) 78 | } 79 | } 80 | .allowsHitTesting(false) 81 | } 82 | } 83 | 84 | @ViewBuilder 85 | private func selectionBackground(from preferences: MenuItemGeometryPreferenceKey.Value, in geometry: GeometryProxy) -> some View { 86 | if let selection, let frame = preferences[selection].map({ geometry[$0] }) { 87 | RoundedRectangle(cornerRadius: UIDimenion.cornerRadius) 88 | .frame(width: frame.width, height: frame.height) 89 | .offset(x: frame.minX, y: frame.minY) 90 | } 91 | } 92 | } 93 | 94 | struct MenuItemList_Previews: PreviewProvider { 95 | 96 | private struct Preview: View { 97 | 98 | @State var selection: MenuItem? = .dashboard 99 | @State var appearance: MenuAppearance = .default 100 | 101 | var body: some View { 102 | MenuItemList(selection: $selection) { 103 | withAnimation(.spring()) { 104 | appearance.toggle() 105 | } 106 | } 107 | .fixedSize(horizontal: true, vertical: false) 108 | .menuAppearance(appearance) 109 | } 110 | } 111 | 112 | static var previews: some View { 113 | Preview() 114 | .preferredColorScheme(.dark) 115 | .previewLayout(.sizeThatFits) 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /Example/Example/Menu/MenuView.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | struct MenuView: View { 5 | 6 | @Binding private var selection: MenuItem? 7 | 8 | @SceneStorage("menuAppearance") 9 | private var appearance: MenuAppearance = .default 10 | 11 | @State private var colorScheme: ColorScheme? 12 | @Environment(\.colorScheme) private var systemColorScheme 13 | 14 | // MARK: - Init 15 | 16 | init(selection: Binding) { 17 | _selection = selection 18 | } 19 | 20 | // MARK: - Body 21 | 22 | var body: some View { 23 | VStack { 24 | MenuItemList(selection: $selection) { 25 | withAnimation { 26 | appearance.toggle() 27 | } 28 | } 29 | 30 | Spacer() 31 | .frame(height: 10) 32 | 33 | ColorSchemePicker(selection: Binding($colorScheme, default: systemColorScheme)) 34 | .anchorPreference(key: AnchorPreferenceKey.self, value: .bounds) { $0 } 35 | .overrideColorScheme($colorScheme.animation(.default)) 36 | 37 | Button( 38 | action: { 39 | /* noop */ 40 | }, 41 | label: { 42 | Label.logout 43 | } 44 | ) 45 | .buttonStyle(MenuItemButtonStyle()) 46 | 47 | Spacer() 48 | } 49 | .fixedSize(horizontal: true, vertical: false) 50 | .padding() 51 | .backgroundPreferenceValue(AnchorPreferenceKey.self) { anchor in 52 | MenuBackground(colorScheme: colorScheme ?? systemColorScheme) 53 | .transition(.menuBackgroundFadeIn(from: anchor)) 54 | .id(colorScheme ?? systemColorScheme) 55 | } 56 | .menuAppearance(appearance) 57 | .animation(.default, value: colorScheme) 58 | .clipped() 59 | .background { 60 | RoundedRectangle(cornerRadius: UIDimenion.backgroundCornerRadius) 61 | .shadow(color: .black.opacity(0.1), radius: 5, x: 5, y: 0) 62 | } 63 | .padding(.leading) 64 | } 65 | } 66 | 67 | struct MenuView_Previews: PreviewProvider { 68 | 69 | struct Preview: View { 70 | 71 | @State var appearance: MenuAppearance = .default 72 | @State var menuItem: MenuItem? = .dashboard 73 | 74 | var body: some View { 75 | ZStack(alignment: .leading) { 76 | MenuView(selection: $menuItem) 77 | .menuAppearance(appearance) 78 | .onTapGesture { 79 | withAnimation(.spring()) { 80 | appearance.toggle() 81 | } 82 | } 83 | } 84 | } 85 | } 86 | 87 | static var previews: some View { 88 | Preview() 89 | .previewLayout(.sizeThatFits) 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /Example/Example/Menu/Style/MenuButtonStyle.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private extension CGFloat { 5 | 6 | static let hSpacing: Self = 40 7 | static let contentHeight: Self = 48 8 | } 9 | 10 | struct MenuItemButtonStyle: ButtonStyle { 11 | 12 | var isSelected: Bool = false 13 | 14 | func makeBody(configuration: Configuration) -> some View { 15 | configuration 16 | .label 17 | .labelStyle(.menuLabel) 18 | .foregroundColor(configuration.isPressed || isSelected ? Color("color/selectionForeground") : Color("color/text")) 19 | .animation(.spring(), value: isSelected != configuration.isPressed) 20 | .frame(maxWidth: .infinity, minHeight: .contentHeight, alignment: .leading) 21 | .contentShape(Rectangle()) 22 | } 23 | } 24 | 25 | struct MenuItemButtonStyle_Previews: PreviewProvider { 26 | 27 | struct Preview: View { 28 | 29 | @State var isSelected = false 30 | 31 | var body: some View { 32 | ZStack(alignment: .leading) { 33 | Color("color/background") 34 | 35 | VStack(alignment: .leading) { 36 | Button { 37 | withAnimation { 38 | isSelected.toggle() 39 | } 40 | } label: { 41 | Label(item: .archive) 42 | } 43 | } 44 | .buttonStyle(MenuItemButtonStyle(isSelected: isSelected)) 45 | } 46 | } 47 | } 48 | 49 | static var previews: some View { 50 | Preview() 51 | .frame(width: 500, height: 100) 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/Example/Menu/Style/MenuLabelStyle.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private extension CGFloat { 5 | 6 | static let contentHeight: Self = 48 7 | static let spacing: Self = 24 8 | } 9 | 10 | struct MenuLabelStyle: LabelStyle { 11 | 12 | @Environment(\.menuAppearance) var appearance 13 | 14 | func makeBody(configuration: Configuration) -> some View { 15 | HStack(spacing: .spacing) { 16 | configuration.icon 17 | .frame(width: .contentHeight, height: .contentHeight, alignment: .center) 18 | 19 | if appearance == .default { 20 | configuration.title 21 | .typographyStyle(.title) 22 | .transition(.move(edge: .trailing).combined(with: .opacity)) 23 | } 24 | } 25 | } 26 | } 27 | 28 | extension LabelStyle where Self == MenuLabelStyle { 29 | 30 | static var menuLabel: Self { 31 | MenuLabelStyle() 32 | } 33 | } 34 | 35 | struct MenuLabelStyle_Previews: PreviewProvider { 36 | 37 | struct Preview: View { 38 | 39 | @State private var appearance: MenuAppearance = .default 40 | 41 | var body: some View { 42 | Label(item: .dashboard) 43 | .labelStyle(.menuLabel) 44 | .menuAppearance(appearance) 45 | .overlay { 46 | Rectangle() 47 | .stroke(.blue, lineWidth: 1) 48 | } 49 | .onTapGesture { 50 | withAnimation { 51 | appearance.toggle() 52 | } 53 | } 54 | } 55 | } 56 | 57 | static var previews: some View { 58 | Preview() 59 | .previewLayout(.sizeThatFits) 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Example/Example/Menu/UserHeader.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private extension CGFloat { 5 | 6 | static let hSpacing: Self = 24 7 | static let nameHeight: Self = 28 8 | static let positionHeight: Self = 20 9 | static let vSpacing: Self = 6 10 | } 11 | 12 | struct UserHeader: View { 13 | 14 | let user: User 15 | 16 | var body: some View { 17 | Label( 18 | title: { 19 | VStack(alignment: .leading, spacing: .vSpacing) { 20 | Text(user.name) 21 | .typographyStyle(.headline) 22 | 23 | Text(user.position) 24 | .typographyStyle(.subheadline) 25 | } 26 | .foregroundColor(Color("color/text")) 27 | }, 28 | icon: { 29 | UserImage(imageName: user.imageName, isOnline: user.isOnline) 30 | } 31 | ) 32 | .labelStyle(.menuLabel) 33 | } 34 | } 35 | 36 | struct UserProfileHeader_Previews: PreviewProvider { 37 | static var previews: some View { 38 | Group { 39 | UserHeader(user: .stub) 40 | 41 | UserHeader(user: .stub) 42 | .menuAppearance(.compact) 43 | } 44 | .background(Color("color/background")) 45 | .previewLayout(.sizeThatFits) 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Example/Example/Menu/UserImage.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private extension CGFloat { 5 | 6 | static let statusSize: Self = 16 7 | 8 | static let statusRadius: Self = 4 9 | static let statusBorder: Self = 4 10 | } 11 | 12 | struct UserImage: View { 13 | 14 | let imageName: String 15 | let isOnline: Bool 16 | 17 | var body: some View { 18 | Image(imageName) 19 | .resizable() 20 | .clipShape(Circle()) 21 | .overlay { 22 | GeometryReader { proxy in 23 | Circle() 24 | .strokeBorder(Color("color/background"), lineWidth: .statusBorder) 25 | .background(Circle().fill(isOnline ? Color("color/onlineStatus") : Color("color/offlineStatus"))) 26 | .frame(width: .statusSize, height: .statusSize, alignment: .center) 27 | .offset(x: proxy.size.width / 2) 28 | .rotationEffect(.degrees(45)) 29 | .offset(x: (proxy.size.width - .statusSize) / 2, y: (proxy.size.height - .statusSize) / 2) 30 | } 31 | } 32 | .aspectRatio(1, contentMode: .fit) 33 | } 34 | } 35 | 36 | struct UserImage_Previews: PreviewProvider { 37 | static var previews: some View { 38 | ZStack { 39 | Color("color/background") 40 | UserImage(imageName: "placeholder/user", isOnline: true) 41 | } 42 | .previewLayout(.fixed(width: 60, height: 60)) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Example/Example/Misc/Extensions/Binding+Default.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | extension Binding { 5 | 6 | init(_ base: Binding, `default`: Value) { 7 | self.init { 8 | base.wrappedValue ?? `default` 9 | } set: { newValue, transaction in 10 | base.transaction(transaction).wrappedValue = newValue 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Example/Example/Misc/Extensions/ColorScheme+Toggle.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | extension ColorScheme { 5 | 6 | mutating func toggle() { 7 | switch self { 8 | case .light: 9 | self = .dark 10 | 11 | case .dark: 12 | self = .light 13 | 14 | @unknown default: 15 | self = .light 16 | } 17 | } 18 | 19 | func inverted() -> Self { 20 | var copy = self 21 | copy.toggle() 22 | return copy 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/Example/Misc/Extensions/Label+ColorScheme.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | extension Label where Title == Text, Icon == Image { 5 | 6 | init(colorScheme: ColorScheme) { 7 | switch colorScheme { 8 | case .light: 9 | self.init("Light", image: "icon/colorScheme/light") 10 | 11 | case .dark: 12 | self.init("Dark", image: "icon/colorScheme/dark") 13 | 14 | @unknown default: 15 | self.init("Unknown", image: "icon/colorScheme/light") 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Example/Misc/Extensions/Label+Default.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | extension Label where Title == Text, Icon == Image { 5 | 6 | static var logout: Self { 7 | Self("Logout", image: "icon/logout") 8 | } 9 | 10 | static var lightAppearance: Self { 11 | Self("Light", image: "icon/colorScheme/light") 12 | } 13 | 14 | static var darkAppearance: Self { 15 | Self("Dark", image: "icon/colorScheme/dark") 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/Example/Misc/Extensions/Label+MenuItem.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | extension Label where Title == Text, Icon == Image { 5 | 6 | init(item: MenuItem) { 7 | switch item { 8 | case .workloadSheet: 9 | self.init("Workload Sheet", image: "icon/home") 10 | 11 | case .dashboard: 12 | self.init("Dashboard", image: "icon/dashboard") 13 | 14 | case .projects: 15 | self.init("Projects", image: "icon/projects") 16 | 17 | case .departments: 18 | self.init("Departments", image: "icon/departments") 19 | 20 | case .employees: 21 | self.init("Employees", image: "icon/employees") 22 | 23 | case .notifications: 24 | self.init("Notifications", image: "icon/notifications") 25 | 26 | case .performanceReview: 27 | self.init("Performance Review", image: "icon/performanceReview") 28 | 29 | case .archive: 30 | self.init("Archive", image: "icon/archive") 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /Example/Example/Misc/Extensions/View+OverrideColorScheme.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private final class UILifecycleView: UIView { 5 | 6 | var onDidMoveToWindow: ((UIWindow?) -> Void)? 7 | var onOverrideUserInterfaceStyleDidChange: ((UIUserInterfaceStyle) -> Void)? 8 | 9 | override func didMoveToWindow() { 10 | super.didMoveToWindow() 11 | 12 | onDidMoveToWindow?(window) 13 | } 14 | 15 | override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { 16 | super.traitCollectionDidChange(previousTraitCollection) 17 | 18 | if previousTraitCollection?.userInterfaceStyle != traitCollection.userInterfaceStyle { 19 | onOverrideUserInterfaceStyleDidChange?(traitCollection.userInterfaceStyle) 20 | } 21 | } 22 | } 23 | 24 | private struct UIColorSchemeOverridingView: UIViewRepresentable { 25 | 26 | @Binding var overrideColorScheme: ColorScheme? 27 | 28 | // MARK: - UIViewRepresentable Lifecycle 29 | 30 | func makeUIView(context: Context) -> UILifecycleView { 31 | let view = UILifecycleView() 32 | view.isHidden = true 33 | view.frame = .zero 34 | 35 | view.onDidMoveToWindow = context.coordinator.overrideColorScheme 36 | view.onOverrideUserInterfaceStyleDidChange = context.coordinator.userInterfaceStyleDidChange 37 | 38 | return view 39 | } 40 | 41 | func updateUIView(_ uiView: UIViewType, context: Context) { 42 | context.coordinator.owner = self 43 | context.coordinator.overrideColorScheme(using: uiView.window) 44 | } 45 | 46 | static func dismantleUIView(_ uiView: UILifecycleView, coordinator: Coordinator) { 47 | uiView.onDidMoveToWindow = nil 48 | uiView.onOverrideUserInterfaceStyleDidChange = nil 49 | } 50 | 51 | func makeCoordinator() -> Coordinator { 52 | Coordinator(owner: self) 53 | } 54 | 55 | // MARK: - Coordinator 56 | 57 | final class Coordinator { 58 | 59 | var owner: UIColorSchemeOverridingView 60 | 61 | // MARK: - Init 62 | 63 | init(owner: UIColorSchemeOverridingView) { 64 | self.owner = owner 65 | } 66 | 67 | func overrideColorScheme(using window: UIWindow?) { 68 | if 69 | let window, 70 | let style = owner.overrideColorScheme.map(UIUserInterfaceStyle.init), 71 | window.overrideUserInterfaceStyle != style 72 | { 73 | UIView.transition(with: window, duration: 0.22) { 74 | window.overrideUserInterfaceStyle = style 75 | } 76 | } 77 | } 78 | 79 | func userInterfaceStyleDidChange(_ style: UIUserInterfaceStyle) { 80 | let colorScheme = style != .unspecified ? ColorScheme(style) : nil 81 | if owner.overrideColorScheme != colorScheme { 82 | owner.overrideColorScheme = colorScheme 83 | } 84 | } 85 | } 86 | } 87 | 88 | extension View { 89 | 90 | /// Overrides window's color scheme to a specified value when non-nil. Also, communicates back in case value already overriden by external source. 91 | func overrideColorScheme(_ colorScheme: Binding) -> some View { 92 | background(UIColorSchemeOverridingView(overrideColorScheme: colorScheme)) 93 | } 94 | 95 | /// Overrides window's color scheme to a specified value when non-nil. Also, communicates back in case value already overriden by external source. 96 | func overrideColorScheme(_ userInterfaceStyle: Binding) -> some View { 97 | background( 98 | UIColorSchemeOverridingView( 99 | overrideColorScheme: Binding( 100 | get: { 101 | userInterfaceStyle.wrappedValue != .unspecified ? ColorScheme(userInterfaceStyle.wrappedValue) : nil 102 | }, 103 | set: { value, transaction in 104 | userInterfaceStyle.transaction(transaction).wrappedValue = UIUserInterfaceStyle(value) 105 | } 106 | ) 107 | ) 108 | ) 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /Example/Example/Misc/Layout/Dimension.swift: -------------------------------------------------------------------------------- 1 | 2 | import CoreGraphics 3 | 4 | enum UIDimenion { 5 | 6 | static let cornerRadius: CGFloat = 13 7 | static let backgroundCornerRadius: CGFloat = 24 8 | } 9 | -------------------------------------------------------------------------------- /Example/Example/Misc/Preferences/AnchorPreferenceKey.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | struct AnchorPreferenceKey: PreferenceKey { 5 | 6 | static var defaultValue: Anchor? { 7 | nil 8 | } 9 | 10 | static func reduce(value: inout Anchor?, nextValue: () -> Anchor?) { 11 | value = nextValue() ?? value 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /Example/Example/Misc/Transition/MenuBackgroundTransition.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private struct MenuBackgroundFadeInModifier: ViewModifier { 5 | 6 | private let identity: Bool 7 | private let anchor: Anchor? 8 | 9 | init(identity: Bool, anchor: Anchor?) { 10 | self.identity = identity 11 | self.anchor = anchor 12 | } 13 | 14 | func body(content: Content) -> some View { 15 | GeometryReader { proxy in 16 | let frame = effectiveFrame(using: proxy) 17 | 18 | content 19 | .frame(width: frame.width, height: frame.height) 20 | .position(x: frame.midX, y: frame.midY) 21 | } 22 | } 23 | 24 | private func effectiveFrame(using proxy: GeometryProxy) -> CGRect { 25 | guard let anchor, !identity else { 26 | return proxy.frame(in: .local) 27 | } 28 | 29 | return proxy[anchor] 30 | } 31 | } 32 | 33 | private struct MenuBackgroundFadeOutModifier: ViewModifier, Animatable { 34 | 35 | var animatableData: Double 36 | 37 | func body(content: Content) -> some View { 38 | content 39 | } 40 | } 41 | 42 | extension AnyTransition { 43 | 44 | static func menuBackgroundFadeIn(from anchor: Anchor?) -> AnyTransition { 45 | .asymmetric( 46 | insertion: .modifier( 47 | active: MenuBackgroundFadeInModifier(identity: false, anchor: anchor), 48 | identity: MenuBackgroundFadeInModifier(identity: true, anchor: anchor) 49 | ), 50 | removal: .modifier( 51 | active: MenuBackgroundFadeOutModifier(animatableData: 0), 52 | identity: MenuBackgroundFadeOutModifier(animatableData: 1) 53 | ) 54 | ) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Example/Example/Misc/Typography/TypographyStyle.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | enum TypographyStyle { 5 | 6 | case headline 7 | case subheadline 8 | case title 9 | case title2 10 | 11 | private var fontName: String { 12 | switch self { 13 | case .headline: 14 | return "Gilroy-Bold" 15 | 16 | case .subheadline: 17 | return "Gilroy-Regular" 18 | 19 | case .title: 20 | return "Gilroy-Semibold" 21 | 22 | case .title2: 23 | return "Gilroy-Medium" 24 | } 25 | } 26 | 27 | private var fontTextStyle: Font.TextStyle { 28 | switch self { 29 | case .headline: 30 | return .headline 31 | 32 | case .subheadline: 33 | return .subheadline 34 | 35 | case .title: 36 | return .title 37 | 38 | case .title2: 39 | return .title2 40 | } 41 | } 42 | 43 | private var fontSize: CGFloat { 44 | switch self { 45 | case .headline: 46 | return 20 47 | 48 | case .subheadline: 49 | return 16 50 | 51 | case .title: 52 | return 16 53 | 54 | case .title2: 55 | return 16 56 | } 57 | } 58 | 59 | fileprivate func asFont() -> Font { 60 | Font.custom(fontName, size: fontSize, relativeTo: fontTextStyle) 61 | } 62 | } 63 | 64 | extension View { 65 | 66 | func typographyStyle(_ style: TypographyStyle) -> some View { 67 | font(style.asFont()) 68 | } 69 | } 70 | 71 | extension Text { 72 | 73 | func typographyStyle(_ style: TypographyStyle) -> some View { 74 | font(style.asFont()) 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Example/Example/Model/User.swift: -------------------------------------------------------------------------------- 1 | 2 | import Foundation 3 | import SwiftUI 4 | 5 | struct User { 6 | 7 | let name: String 8 | let position: String 9 | let imageName: String 10 | let isOnline: Bool 11 | } 12 | 13 | extension User { 14 | 15 | static let stub = User(name: "Alexey Podolyan", position: "CTO", imageName: "placeholder/user", isOnline: true) 16 | } 17 | -------------------------------------------------------------------------------- /Example/Example/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Example/Resources/Fonts/Gilroy-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Example/Example/Resources/Fonts/Gilroy-Bold.ttf -------------------------------------------------------------------------------- /Example/Example/Resources/Fonts/Gilroy-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Example/Example/Resources/Fonts/Gilroy-Medium.ttf -------------------------------------------------------------------------------- /Example/Example/Resources/Fonts/Gilroy-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Example/Example/Resources/Fonts/Gilroy-Regular.ttf -------------------------------------------------------------------------------- /Example/Example/Resources/Fonts/Gilroy-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LanarsInc/swiftui-drawer/d3fd87a301969a456356706cbb2ea458ffd8a035/Example/Example/Resources/Fonts/Gilroy-Semibold.ttf -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.7 2 | 3 | import PackageDescription 4 | 5 | let package = Package( 6 | name: "Drawer", 7 | platforms: [ 8 | .iOS(.v16), 9 | ], 10 | products: [ 11 | // Products define the executables and libraries a package produces, and make them visible to other packages. 12 | .library( 13 | name: "Drawer", 14 | targets: ["Drawer"] 15 | ), 16 | ], 17 | dependencies: [], 18 | targets: [ 19 | .target( 20 | name: "Drawer", 21 | dependencies: [] 22 | ) 23 | ] 24 | ) 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Drawer 2 | 3 | https://user-images.githubusercontent.com/829562/213693849-2cd9e1e7-8eaf-4110-bdcf-fb20917413ac.mp4 4 | 5 | 6 |

7 |

9 | 10 | ## Overview and Motivation 11 | This repo provides implementation of a Drawer that slides your menu from the left edge on top of a given content. Also, Example app provides a fully fledge side menu build on top of a Drawer. You can follow [series](https://lanars.com/blog/sidemenu-in-swiftui-part1) of [articles](https://lanars.com/blog/sidemenu-in-swiftui-part2) on our [blog](https://lanars.com/blog/) to get a hands-on experience of how it was build. 12 | 13 | ## Requirements 14 | Platform | Min Deployment Target 15 | :---: | :---: 16 | iOS | 15.0 17 | 18 | ## Installation 19 | You can add Drawer to an Xcode project by adding it as a package dependency. 20 | 21 | 1. From the File menu, select Add Packages... 22 | 2. Enter "https://github.com/lanarsinc/swiftui-drawer" into the package repository URL text field. 23 | 3. Then add `Drawer` directly to your application. 24 | 25 | ## Basic Usage 26 | You can uses Drawer as a part of your hierarchy like that: 27 | 28 | ```swift 29 | struct ContentView: View { 30 | 31 | @State private var isOpened = true 32 | 33 | var body: some View { 34 | Drawer( 35 | isOpened: $isOpened, 36 | menu: { 37 | ZStack { 38 | Color.gray 39 | 40 | Button("Hide") { 41 | isOpened = false 42 | } 43 | } 44 | .frame(width: 100) 45 | }, 46 | content: { 47 | ZStack { 48 | Color.yellow 49 | 50 | Button("Open") { 51 | withAnimation { 52 | isOpened = true 53 | } 54 | } 55 | } 56 | .ignoresSafeArea() 57 | } 58 | ) 59 | } 60 | } 61 | ``` 62 | 63 | Also, you may want to control whether menu is being opened and to close it from the menu itself. For this, use an @Environment(\.isDrawerOpened) wrapper to control status of a drawer. 64 | 65 | ## Things to be done 66 | - Interactive presentation and dismissal via drag. 67 | -------------------------------------------------------------------------------- /Sources/Drawer/Drawer.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | /// Generic Drawer container that slides in `Menu` from the left edge on top of a given `Content`. 5 | /// It occupies all proposed space and it recommended to be placed in the root of our scene in terms of layout size. 6 | public struct Drawer: View { 7 | 8 | @Binding private var isOpened: Bool 9 | 10 | private let menu: Menu 11 | private let content: Content 12 | 13 | // MARK: - Init 14 | 15 | /// Instantiates new `Drawer` instance. 16 | /// - Parameters: 17 | /// - isOpened: Binding to a bool that let's you control whether `Menu` is presented onscreen or not. Siblings can 18 | /// get access to it by adding `@Environment(\.isDrawerOpened) var isDrawerOpened` variable. 19 | /// - menu: `Menu` to be displayed on top of `Content` by sliding it from the left edge. 20 | /// - content: Content to be placed in the center of the screen. Occupies all given size. 21 | public init( 22 | isOpened: Binding, 23 | @ViewBuilder menu: () -> Menu, 24 | @ViewBuilder content: () -> Content 25 | ) { 26 | _isOpened = isOpened 27 | self.menu = menu() 28 | self.content = content() 29 | } 30 | 31 | // MARK: - Body 32 | 33 | public var body: some View { 34 | ZStack(alignment: .leading) { 35 | content 36 | 37 | if isOpened { 38 | Color.clear 39 | .contentShape(Rectangle()) 40 | .onTapGesture { 41 | if isOpened { 42 | isOpened.toggle() 43 | } 44 | } 45 | 46 | menu 47 | .transition(.move(edge: .leading)) 48 | .zIndex(1) 49 | } 50 | } 51 | .animation(.spring(), value: isOpened) 52 | .environment(\.isDrawerOpened, $isOpened) 53 | } 54 | } 55 | 56 | struct Drawer_Previews: PreviewProvider { 57 | 58 | struct Preview: View { 59 | 60 | @State private var isOpened = true 61 | @State private var counter = 0 62 | 63 | var body: some View { 64 | Drawer( 65 | isOpened: $isOpened, 66 | menu: { 67 | ZStack { 68 | Color.gray 69 | 70 | Button("Hide") { 71 | isOpened = false 72 | } 73 | } 74 | .frame(width: 100) 75 | }, 76 | content: { 77 | ZStack { 78 | Color.yellow 79 | 80 | Button("Open: \(counter)") { 81 | withAnimation { 82 | isOpened = true 83 | counter += 1 84 | } 85 | } 86 | } 87 | .ignoresSafeArea() 88 | } 89 | ) 90 | } 91 | } 92 | 93 | static var previews: some View { 94 | Preview() 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /Sources/Drawer/DrawerOpenedKey.swift: -------------------------------------------------------------------------------- 1 | 2 | import SwiftUI 3 | 4 | private struct DrawerOpenedKey: EnvironmentKey { 5 | 6 | static var defaultValue: Binding = .constant(false) 7 | } 8 | 9 | extension EnvironmentValues { 10 | 11 | /// Binding to an `isOpened` var of an enclosing `Drawer` (if any). 12 | /// In case there is no drawer to communicate with, it will return `false` and any changes to it won't have any effect. 13 | public var isDrawerOpened: Binding { 14 | get { self[DrawerOpenedKey.self] } 15 | set { self[DrawerOpenedKey.self] = newValue } 16 | } 17 | } 18 | --------------------------------------------------------------------------------