From 888bb180ea9437a5d80341c789717180f7b72400 Mon Sep 17 00:00:00 2001 From: George <george.makhoul@kuwaitnet.com> Date: Wed, 12 Jun 2024 09:19:55 +0300 Subject: [PATCH] edit screen with delete page and directShare --- .DS_Store | Bin 8196 -> 8196 bytes MiniScanner.xcodeproj/project.pbxproj | 92 +- .../xcschemes/xcschememanagement.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 217571 -> 222383 bytes MiniScanner/.DS_Store | Bin 10244 -> 10244 bytes .../CustomTabBarView/CustomTabBarView.swift | 3 + .../CustomTabBarView/CustomTabBarView.xib | 3 +- .../PagerImageCollectionViewCell.swift | 29 + .../PagerImageCollectionViewCell.xib | 39 + .../CustomViews/BannerView.swift | 140 ++ .../CustomViews/BannerView.xib | 45 + .../EditViewController.swift | 133 +- .../EditViewController/EditViewController.xib | 183 ++- .../Controller.imageset/Contents.json | 21 + .../Controller.imageset/Controller.svg | 5 + .../tabbarIpad.imageset/Contents.json | 21 + .../tabbarIpad.imageset/WhiteBar Ipad (1).svg | 3 + .../Scan/ScannerViewController.swift | 29 +- .../TYCyclePagerTransformLayout.h | 74 + .../TYCyclePagerTransformLayout.m | 300 ++++ .../CyclePagerView/TYCyclePagerView.h | 180 +++ .../CyclePagerView/TYCyclePagerView.m | 607 +++++++ .../CyclePagerView/TYPageControl.h | 47 + .../CyclePagerView/TYPageControl.m | 285 ++++ MiniScanner/Supporting Files/Info.plist | 35 +- .../MiniScanner_Bridging_Header.h | 15 + Podfile | 2 + Podfile.lock | 6 +- Pods/FSPagerView/LICENSE | 19 + Pods/FSPagerView/README-OBJECTIVE-C.md | 416 +++++ Pods/FSPagerView/Sources/FSPageControl.swift | 310 ++++ .../Sources/FSPageViewLayout.swift | 296 ++++ .../Sources/FSPageViewTransformer.swift | 273 ++++ .../Sources/FSPagerCollectionView.swift | 66 + Pods/FSPagerView/Sources/FSPagerView.swift | 636 ++++++++ .../FSPagerView/Sources/FSPagerViewCell.swift | 175 ++ .../Sources/FSPagerViewLayoutAttributes.swift | 30 + .../Sources/FSPagerViewObjcCompat.h | 23 + .../Sources/FSPagerViewObjcCompat.m | 12 + Pods/Manifest.lock | 6 +- Pods/Pods.xcodeproj/project.pbxproj | 1432 ++++++++++------- .../xcschemes/FSPagerView.xcscheme | 58 + .../xcschemes/xcschememanagement.plist | 21 +- .../FSPagerView/FSPagerView-Info.plist | 26 + .../FSPagerView/FSPagerView-dummy.m | 5 + .../FSPagerView/FSPagerView-prefix.pch | 12 + .../FSPagerView/FSPagerView-umbrella.h | 17 + .../FSPagerView/FSPagerView.debug.xcconfig | 15 + .../FSPagerView/FSPagerView.modulemap | 6 + .../FSPagerView/FSPagerView.release.xcconfig | 15 + ...Pods-MiniScanner-acknowledgements.markdown | 23 + .../Pods-MiniScanner-acknowledgements.plist | 29 + ...er-frameworks-Debug-input-files.xcfilelist | 1 + ...r-frameworks-Debug-output-files.xcfilelist | 1 + ...-frameworks-Release-input-files.xcfilelist | 1 + ...frameworks-Release-output-files.xcfilelist | 1 + .../Pods-MiniScanner-frameworks.sh | 2 + .../Pods-MiniScanner.debug.xcconfig | 6 +- .../Pods-MiniScanner.release.xcconfig | 6 +- 59 files changed, 5567 insertions(+), 671 deletions(-) create mode 100644 MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.swift create mode 100644 MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.xib create mode 100644 MiniScanner/Modules/EditViewController/CustomViews/BannerView.swift create mode 100644 MiniScanner/Modules/EditViewController/CustomViews/BannerView.xib create mode 100644 MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Contents.json create mode 100644 MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Controller.svg create mode 100644 MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/Contents.json create mode 100644 MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/WhiteBar Ipad (1).svg create mode 100755 MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.h create mode 100755 MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.m create mode 100755 MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.h create mode 100755 MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.m create mode 100755 MiniScanner/Supporting Files/CyclePagerView/TYPageControl.h create mode 100755 MiniScanner/Supporting Files/CyclePagerView/TYPageControl.m create mode 100644 MiniScanner/Supporting Files/MiniScanner_Bridging_Header.h create mode 100644 Pods/FSPagerView/LICENSE create mode 100644 Pods/FSPagerView/README-OBJECTIVE-C.md create mode 100644 Pods/FSPagerView/Sources/FSPageControl.swift create mode 100644 Pods/FSPagerView/Sources/FSPageViewLayout.swift create mode 100644 Pods/FSPagerView/Sources/FSPageViewTransformer.swift create mode 100644 Pods/FSPagerView/Sources/FSPagerCollectionView.swift create mode 100644 Pods/FSPagerView/Sources/FSPagerView.swift create mode 100644 Pods/FSPagerView/Sources/FSPagerViewCell.swift create mode 100644 Pods/FSPagerView/Sources/FSPagerViewLayoutAttributes.swift create mode 100644 Pods/FSPagerView/Sources/FSPagerViewObjcCompat.h create mode 100644 Pods/FSPagerView/Sources/FSPagerViewObjcCompat.m create mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/FSPagerView.xcscheme create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView-Info.plist create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView-dummy.m create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView-prefix.pch create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView-umbrella.h create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView.debug.xcconfig create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView.modulemap create mode 100644 Pods/Target Support Files/FSPagerView/FSPagerView.release.xcconfig diff --git a/.DS_Store b/.DS_Store index cf3157b6c369e2bd71d6f12e9c47e7d83e655f1c..5f07804f262af356ef417d73e26aebb21e8b73a3 100644 GIT binary patch delta 73 zcmZp1XmQw3F37ljvX4Nans{}!nW>I~uBB0}jzYDik%5kaiLqI2EhmSlvc7dte0EN5 dUVi6f0U>$DuFVEQ*I75SNqlG7{7;0P82}?f74`rC delta 39 vcmZp1XmQw3E;!j+pp?VZ$XG|g#K>au2?6`fMnYFuH?vE8W7+&igq;}x|H2Hz diff --git a/MiniScanner.xcodeproj/project.pbxproj b/MiniScanner.xcodeproj/project.pbxproj index 08eaf68..18eb0a6 100644 --- a/MiniScanner.xcodeproj/project.pbxproj +++ b/MiniScanner.xcodeproj/project.pbxproj @@ -84,6 +84,13 @@ 53CD5F5E2C1505EC0010424B /* UIWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53CD5F5D2C1505EC0010424B /* UIWindow.swift */; }; 53CD5F612C15A6210010424B /* SettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53CD5F5F2C15A6210010424B /* SettingViewController.swift */; }; 53CD5F622C15A6210010424B /* SettingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53CD5F602C15A6210010424B /* SettingViewController.xib */; }; + 53EDED962C18387E00DB8DF9 /* TYPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDED922C18387E00DB8DF9 /* TYPageControl.m */; }; + 53EDED972C18387E00DB8DF9 /* TYCyclePagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDED932C18387E00DB8DF9 /* TYCyclePagerView.m */; }; + 53EDED982C18387E00DB8DF9 /* TYCyclePagerTransformLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDED942C18387E00DB8DF9 /* TYCyclePagerTransformLayout.m */; }; + 53EDED9D2C183CDF00DB8DF9 /* BannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EDED9C2C183CDF00DB8DF9 /* BannerView.swift */; }; + 53EDED9F2C183CEB00DB8DF9 /* BannerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53EDED9E2C183CEB00DB8DF9 /* BannerView.xib */; }; + 53EDEDA32C183FFF00DB8DF9 /* PagerImageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EDEDA12C183FFF00DB8DF9 /* PagerImageCollectionViewCell.swift */; }; + 53EDEDA42C183FFF00DB8DF9 /* PagerImageCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53EDEDA22C183FFF00DB8DF9 /* PagerImageCollectionViewCell.xib */; }; 53F21F8B2C1246AF00172BFC /* AllFolderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F21F892C1246AF00172BFC /* AllFolderTableViewCell.swift */; }; 53F21F8C2C1246AF00172BFC /* AllFolderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53F21F8A2C1246AF00172BFC /* AllFolderTableViewCell.xib */; }; 53F21F912C1248EC00172BFC /* FolderCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F21F8F2C1248EC00172BFC /* FolderCollectionViewCell.swift */; }; @@ -227,6 +234,17 @@ 53CD5F5D2C1505EC0010424B /* UIWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIWindow.swift; sourceTree = "<group>"; }; 53CD5F5F2C15A6210010424B /* SettingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingViewController.swift; sourceTree = "<group>"; }; 53CD5F602C15A6210010424B /* SettingViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SettingViewController.xib; sourceTree = "<group>"; }; + 53EDED902C18387E00DB8DF9 /* TYCyclePagerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYCyclePagerView.h; sourceTree = "<group>"; }; + 53EDED912C18387E00DB8DF9 /* TYCyclePagerTransformLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYCyclePagerTransformLayout.h; sourceTree = "<group>"; }; + 53EDED922C18387E00DB8DF9 /* TYPageControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYPageControl.m; sourceTree = "<group>"; }; + 53EDED932C18387E00DB8DF9 /* TYCyclePagerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYCyclePagerView.m; sourceTree = "<group>"; }; + 53EDED942C18387E00DB8DF9 /* TYCyclePagerTransformLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYCyclePagerTransformLayout.m; sourceTree = "<group>"; }; + 53EDED952C18387E00DB8DF9 /* TYPageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYPageControl.h; sourceTree = "<group>"; }; + 53EDED992C18392B00DB8DF9 /* MiniScanner_Bridging_Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiniScanner_Bridging_Header.h; sourceTree = "<group>"; }; + 53EDED9C2C183CDF00DB8DF9 /* BannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BannerView.swift; sourceTree = "<group>"; }; + 53EDED9E2C183CEB00DB8DF9 /* BannerView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BannerView.xib; sourceTree = "<group>"; }; + 53EDEDA12C183FFF00DB8DF9 /* PagerImageCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagerImageCollectionViewCell.swift; sourceTree = "<group>"; }; + 53EDEDA22C183FFF00DB8DF9 /* PagerImageCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PagerImageCollectionViewCell.xib; sourceTree = "<group>"; }; 53F21F892C1246AF00172BFC /* AllFolderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllFolderTableViewCell.swift; sourceTree = "<group>"; }; 53F21F8A2C1246AF00172BFC /* AllFolderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AllFolderTableViewCell.xib; sourceTree = "<group>"; }; 53F21F8F2C1248EC00172BFC /* FolderCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FolderCollectionViewCell.swift; sourceTree = "<group>"; }; @@ -503,6 +521,8 @@ 53BAE0EA2C15E0770072189E /* EditViewController */ = { isa = PBXGroup; children = ( + 53EDED9B2C183CC600DB8DF9 /* CustomViews */, + 53EDED9A2C183CB600DB8DF9 /* CustomCells */, 53BAE0EB2C15E0890072189E /* EditViewController.swift */, 53BAE0EC2C15E0890072189E /* EditViewController.xib */, ); @@ -518,6 +538,45 @@ path = KNAlert; sourceTree = "<group>"; }; + 53EDED8F2C18387E00DB8DF9 /* CyclePagerView */ = { + isa = PBXGroup; + children = ( + 53EDED902C18387E00DB8DF9 /* TYCyclePagerView.h */, + 53EDED912C18387E00DB8DF9 /* TYCyclePagerTransformLayout.h */, + 53EDED922C18387E00DB8DF9 /* TYPageControl.m */, + 53EDED932C18387E00DB8DF9 /* TYCyclePagerView.m */, + 53EDED942C18387E00DB8DF9 /* TYCyclePagerTransformLayout.m */, + 53EDED952C18387E00DB8DF9 /* TYPageControl.h */, + ); + path = CyclePagerView; + sourceTree = "<group>"; + }; + 53EDED9A2C183CB600DB8DF9 /* CustomCells */ = { + isa = PBXGroup; + children = ( + 53EDEDA02C183FDE00DB8DF9 /* PagerImageCollectionViewCell */, + ); + path = CustomCells; + sourceTree = "<group>"; + }; + 53EDED9B2C183CC600DB8DF9 /* CustomViews */ = { + isa = PBXGroup; + children = ( + 53EDED9C2C183CDF00DB8DF9 /* BannerView.swift */, + 53EDED9E2C183CEB00DB8DF9 /* BannerView.xib */, + ); + path = CustomViews; + sourceTree = "<group>"; + }; + 53EDEDA02C183FDE00DB8DF9 /* PagerImageCollectionViewCell */ = { + isa = PBXGroup; + children = ( + 53EDEDA12C183FFF00DB8DF9 /* PagerImageCollectionViewCell.swift */, + 53EDEDA22C183FFF00DB8DF9 /* PagerImageCollectionViewCell.xib */, + ); + path = PagerImageCollectionViewCell; + sourceTree = "<group>"; + }; 53F21F862C12468900172BFC /* CustomCells */ = { isa = PBXGroup; children = ( @@ -662,6 +721,7 @@ EC8A9B0C254DC30800F9AF99 /* Supporting Files */ = { isa = PBXGroup; children = ( + 53EDED8F2C18387E00DB8DF9 /* CyclePagerView */, 53F21F932C1377B900172BFC /* Fonts */, 53014F4B2C11A8E80071CE39 /* CustomWeScan */, EC0CF206254D8BC000888722 /* Assets.xcassets */, @@ -670,6 +730,7 @@ EC0CF208254D8BC000888722 /* LaunchScreen.storyboard */, EC0CF20B254D8BC000888722 /* Info.plist */, 53CD5F552C1503150010424B /* BMViewController.swift */, + 53EDED992C18392B00DB8DF9 /* MiniScanner_Bridging_Header.h */, ); path = "Supporting Files"; sourceTree = "<group>"; @@ -785,6 +846,7 @@ 5359841B2C145E55003EB6ED /* DocumentsTableViewCell.xib in Resources */, 53014FAD2C11A8E80071CE39 /* rotate.png in Resources */, 53014FB02C11A8E80071CE39 /* flashUnavailable@2x.png in Resources */, + 53EDED9F2C183CEB00DB8DF9 /* BannerView.xib in Resources */, EC702543254E1E7500BE1958 /* WalkthroughViewController.xib in Resources */, 535984072C145083003EB6ED /* Poppins-Bold.ttf in Resources */, 539D1C872C164F92009DB24A /* CustomTabBarView.xib in Resources */, @@ -817,6 +879,7 @@ 53F21F922C1248EC00172BFC /* FolderCollectionViewCell.xib in Resources */, ECA1FAA1254DEA6A0081F00B /* DocumentPreview.storyboard in Resources */, 53014FB62C11A8E80071CE39 /* enhance.png in Resources */, + 53EDEDA42C183FFF00DB8DF9 /* PagerImageCollectionViewCell.xib in Resources */, 53014FB42C11A8E80071CE39 /* enhance@3x.png in Resources */, 53F21F9D2C1377B900172BFC /* Tajawal-Bold.ttf in Resources */, EC0CF207254D8BC000888722 /* Assets.xcassets in Resources */, @@ -886,6 +949,7 @@ 53014F9D2C11A8E80071CE39 /* Array+Utils.swift in Sources */, 53CD5F612C15A6210010424B /* SettingViewController.swift in Sources */, 53014FAA2C11A8E80071CE39 /* Quadrilateral.swift in Sources */, + 53EDED982C18387E00DB8DF9 /* TYCyclePagerTransformLayout.m in Sources */, 53014FA42C11A8E80071CE39 /* EditScanViewController.swift in Sources */, EC8A9B1A254DCE3E00F9AF99 /* UIImage+Extensions.swift in Sources */, 53014FB72C11A8E80071CE39 /* CaptureDevice.swift in Sources */, @@ -918,13 +982,16 @@ EC8A9B03254DC08800F9AF99 /* NSNotification+Extensions.swift in Sources */, 5359841A2C145E55003EB6ED /* DocumentsTableViewCell.swift in Sources */, EC702522254DF13200BE1958 /* PencilKitViewController.swift in Sources */, + 53EDED972C18387E00DB8DF9 /* TYCyclePagerView.m in Sources */, 53014F902C11A8E80071CE39 /* CaptureSessionManager.swift in Sources */, ECA1FAA4254DEB140081F00B /* CustomPDFView.swift in Sources */, 53014FA32C11A8E80071CE39 /* ZoomGestureController.swift in Sources */, + 53EDED962C18387E00DB8DF9 /* TYPageControl.m in Sources */, EC70252A254E066400BE1958 /* SettingsViewController+Safari.swift in Sources */, 53014F9B2C11A8E80071CE39 /* CGAffineTransform+Utils.swift in Sources */, 53014FBC2C11A8E80071CE39 /* CaptureSession.swift in Sources */, EC702542254E1E7500BE1958 /* ClassicWalkthroughViewController.swift in Sources */, + 53EDED9D2C183CDF00DB8DF9 /* BannerView.swift in Sources */, 53014F922C11A8E80071CE39 /* ScannedItemRenderer.swift in Sources */, EC8A9B14254DC9D300F9AF99 /* LocalFileManager.swift in Sources */, 53014FBA2C11A8E80071CE39 /* CaptureSession+Flash.swift in Sources */, @@ -951,6 +1018,7 @@ 53F21F912C1248EC00172BFC /* FolderCollectionViewCell.swift in Sources */, ECD43ED625A7BA9500B5A3F2 /* ThemeManager.swift in Sources */, 53014F9C2C11A8E80071CE39 /* CGRect+Utils.swift in Sources */, + 53EDEDA32C183FFF00DB8DF9 /* PagerImageCollectionViewCell.swift in Sources */, 53014FA12C11A8E80071CE39 /* MultiPageScanSessionViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1108,17 +1176,23 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 6; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 5L95SU3SLS; INFOPLIST_FILE = "MiniScanner/Supporting Files/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = BeezScanner123; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.business"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; - PRODUCT_BUNDLE_IDENTIFIER = com.mistergrizzly.MiniScanner; + MARKETING_VERSION = 1; + PRODUCT_BUNDLE_IDENTIFIER = com.be.beinScanner1234512sdf; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OBJC_BRIDGING_HEADER = "MiniScanner/Supporting Files/MiniScanner_Bridging_Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -1131,17 +1205,23 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 6; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 5L95SU3SLS; INFOPLIST_FILE = "MiniScanner/Supporting Files/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = BeezScanner123; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.business"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; - PRODUCT_BUNDLE_IDENTIFIER = com.mistergrizzly.MiniScanner; + MARKETING_VERSION = 1; + PRODUCT_BUNDLE_IDENTIFIER = com.be.beinScanner1234512sdf; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OBJC_BRIDGING_HEADER = "MiniScanner/Supporting Files/MiniScanner_Bridging_Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index 31765b8..3efba6c 100644 --- a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ <key>MiniScanner.xcscheme_^#shared#^_</key> <dict> <key>orderHint</key> - <integer>7</integer> + <integer>8</integer> </dict> </dict> </dict> diff --git a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate index 8f4b5f5bb31ab6562c860d9833ecb5dc0bb7cc26..b2ebd399960c4c4d533a4b210850774cc9704bd1 100644 GIT binary patch literal 222383 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%0Decxh!*B zv6#$IXBuh+vpRuLsvXKvW<RtJwjy&{v5d@|N)}b2nM78Kvon{n#d9*}X3oo;pSd7& zVdkRDs?5ciOQ71I+M!BNWvB{N6{-f+0o4iBRmiL^S-d>{p!)_YBd;Qhs=H)S_3{iX zk;3di4Ygxz1B|ya#@nEJER1&&M*l|PcHTHJZ3o@lZ*Dwh9?0-C{mg?<efiA8Q2i~W z_;`k=>1TMFz8avRoeWRYSA&fW?Wmh9STAPGY5EzSrmu#XB2Uw&WKBGa&b*o7Y5JMB zGH+)#X5PuXn|Uwue&&PBhnbI{Mxn-_#-S#lCZSeBO+igV%|Oi-GNozyna|B<(HWkm zujVX@M(J6!+P>g<8%zbv@GSkzUr=c^jpE{1w890?j;^TUjpm}hTimSi#jKR&Ir>>D zQaa_cRHRVg_m)Hg&APJ17qeGoJzO4kAx~L9d)ltdlh>t`5N0D;bB=zN=jf}vx_MKH ztQ46n&(Y6jv$?FEHL{(uowHrC+hw=Uc7@svYImqrP<ue_3AGp0-cWahx)ao$3)#{f z{cKMYVV39UtJdn~>TVXo_OS77fH2Eb^s|GZT5FqUd5XT{Vb5~jc;z7)VJz-9mxkHV zS$Z8ipB)3WPd+;i>h3LsI59h=STScOGsHdE)P4-HZ#hKaQj1k}_K;%5oULJq95TMC zL{^HK*#?F<D|={mc6Ls7ZgyU_E;~QFAX^W00Mvm{2SKGzJOt`csKcP{1$8*o5rynR zvtrIJF&l~5BN?I<GF~0Exsli&Grlb(u3(9$K(%7VXHPFS5<Pc&`qSb=)N!%t=6;LB zbF=5O#Pgtz&Sx)xI;MpZFV3zuC0@!BIc9t|&l1O#OB7GDTwR&H#*}z9OXQgGO(n8Y ztjpfT5^v0|&)$^1IeSa?*6eNB+p~9M?}R!L>LjR>p-zFiFVy{@?ho|<s0TtlsF1z8 zB=LT+XZFF0uGxoKq7^e<rI_WEb~-l^+hfMJ1;rPc;!9AinDN<Hnc{Nui%Uf7|63@& zouyUM^4X1056NfWg*vr`6hF*<LaMSKaT9SGH4(F$xQSTXSQBx(BRst<T3=_sGckV4 z7&&Hqb`uM(EfZ{|_$AkoG5(tUE&F@+kL;h>zp{U4|H)P4IzT-X>TIZUpw5Ll4{9CM z`A`=?r4qBDkP}RdIf>rlo>S2^r!mHbRwMB+2#=$KgE6)Tjc)^txhP@GQ5)V08lOuN z#wH&_=ky%Cik;6HP#5QOouMvi8N^)IT=!y`nCr%6B2Ti<^<Ytlmx=O<SC>%bcFOHq zWSHB98FIk*rV?2x_RI|@hPi&Z{<#6Ufw@7s!MP#1p}Ao>s)dh+dJNQMPyzK=sK-G) z9_k5DPlUR>kQ-5AI6CxG>@H%s4>Pm^#;d3D+JG`IA+5GYjBg8u2Q$MOs8+=I+%#gC zt91>`)#heGr6@X7jje!6Yo2@d@SJO1@3}dio}Z&q<+OZ`N|n=F$Z=tgr|0Juak;pX z%EjCgE*H;etXy={3lz=@SA{!wbk3ZfpX2HIDo2dZEn&lFlo_^CEYI=u{M<>olXEL_ zr{qq}ot8U2w=#D|?o6oXKs^^KH7?GFN{x#Pp<V=)vU4%iOA5Kt^!(iUj&9y-h$BzW zSFMQg>SbIi+74unSG14fwEiegj;H763Q(<x@j0HJAO5tWiZ@8Ra_mpqZLXkmx8!bP zh_^z`=X1A1UDHB{cjxY7i1#qW%NgSR3~_B^5bdy7J(_#MEEgYVh*vVi`x)ZeCLunT zqu03eIr{CZ^SKwH7M4X`u6VS<UGZ4O;}uWjHY}@Hwlmagsy#a{>9&N|-0n8NwtjlI zsq+{0sj8~4onKeKu-}}TMf0Z49ADeeFsp9fKDE>P?%2E6w4PIY^|Ink=HAFr0D#Lb z<G*d*F&lI5RrFeudnZRtmg}J2uqO9@?gOYd!m(!C3~VwpaDBCB()3w#YU!X=6B}yl z8>(h>pIb9~X5FGWRfFpm&zn<MGp(U&?yPyU8m89Fn^#-kt!MWh-FtW0dAq7n^uzJy z539!3(Qomtd-1c(udh3F>reZod9ZcWo++(xu&oZf_2JAD@J;TAie8uJzRi7?`yT3g zs5e2q`SRS4xu0@BL%ju#%izc_i&T4dn8Ihh_gKnm?bL;42|K=a4t-xcZE)SxMRRNC zEgV@lwPqomds-;HTO+?-ZT@WFqFHmMjjvs}kd{nuF#k~Fe|~Iz?P0U(7Bx($sh?3> zI^>`^H4Wxk>Ny@i%F*}{g{gmqR-yc%;-?C?-a+rE3%a;(LosWV7pQkYCGWSvvAWGJ zUT(l+jvYSQJ7cXRqsuxyLA+d7bXC`&Qh(<zsCQqkJ9U@thI$Xwd!gR9EHcUb_>;^} zSnbI+d4{$+wb3SjY5$?)$JWfKt)Dcjc5!h?O%KyK(j!ps-&_#rah;+LT&XAYq+Y3~ z^t7IV`T*1ip*{qa26rEU`skG%zt(kbW9gkMs+N5O^)V_+=oWc`{y`SD&L)ANJ8|LC z(KT~x2hVDlKc{BtD1uV$iCQ|+#S5M;{o<@z(xEr`5w`ggxvhT9I?kk;Ig7SEP;OA& zoH;e~8)~O*d!(i5K{X3&XVldf51HKRZ*7Z@vumEMo*g53y%*HSmtFP}6+JU5X6idH zi&uL(cNknde@@*}Hh$!h!^iG5X7rFT<EsY`89Q>!zN3bWo=`nuz&^u<Ofdh-t{o%m zyd5^^yXk%O-Ss{6zWSbeKfS*`Kp&_N(g*89^r8ANeJ_2uK0@DHAE}ShN9$wsvHCcD zAAP(&L7%8k(kJUv^nLaH^!@b%^aJ&S^lJTJy+%JopQ=yOYxU{+41K0POFvYft<TZt z>httEeZIaxuh$#&h591>FnzJUL|>{Ot{<TvsUM{utskQ=)1e=$AEzI$pP-+pFV|1f zPu5rHr|75Zr|GBbEA=z<Gxf9dv-NZIbM^D|^Ysh#3-yciRr<yHCHkfMYW*@judmTB z*VpP-=vV4j=~wI5=mq^+{W|@6{RVxVextr#ze&GYzeT@QzfHegzeB%Mze~Sczem4U zzfZqke?Wgwe@K5=e?)&&e@uT|e?os!e@cH^e@1^+e@=g1e?fmye@TB?e?@;)-=M#y zzplTbzp1~azpZc7-_hUI-_zgMKhQtaKhi(eKhZbopX#6KpX*=fU+Q1!U+drK-|FA# z-|Ii<Kk7f}KkL8fzv{o~zw3YKf9ikff9wAk6-Ec6qahfgVKeN8WXOhMsD@@Z45#5T z+=j>S8a~5s1dN~&GQvj0h#D~?ZX}GPQE8-%w2?8gM$XU;!{}smHo6$w8QU9OjU9|` zMt7si=wb9UdKtZq9gUrgosC_LU5(w0KF03G9!6hdPotmF-xy#FGzJ-ijUmQRW0<j* zG29qo>}`xRMj4}xF~(S9oUxBF-k4xaG$t97jVZ>y#(u{B#sS8G#z984aj;Qi9AZp0 zrWv)ybYq4w)0kx(YRop~7;}wzMx8O=SYXr}4aP!ak#U%@*jQpLH4Zn9Fpe~iGLANm zF_sxHjx~-mjyFy)PBfMqCmAOjD~wZ&Q;pM%(~XtJ8OE8$S;pDMImWrhdB*w11;&NO zMaC-QV&f9yQe(AonUOcv7?&GsjVp{RjjN2Sjcbg8ajkKkalLVavCg>BSZ~~9+-%%p z+-lrr+-}@q+-clp+-=-r+-uxt+;2Q!JZL;*JZwB-JZd~<JZ?N;JZU^-JZ(H<JZn5> zJa4>UylA{+yllK;ylQMPUNc@d-Z0)Y-ZI`cHX833?;7tJ?;9T&9~vJS9~++-n~YD5 z&y3HFFN`mZuZ*vaZ;Wq^?~Lz_AB-Q3pNyZ4UyNUk-;CdlKa4+(zl^_)e>zok>d>iU zC!v$r$=1o<N$MnbQaY)fv`&sr&Q30<)aQE&Dm77_f%+`e=b%zk<OQhI6nP2i%TQl| z`YO~7P+x=kI@C9yz6td$sBc51L63K!Qt|j6)c2uM`{6^VRA_z-^%JO@pneMVGpL_K z{Q~NjP``ruHPmmQehc+Gs8sL%0QE<xKS8BB_ZO(YLj4Wu?@<4M`X^MX<Nk*F53~ws z9iVlDCO{LR*`V2>Nzi0y3N#g(2F(G@3C#t~4b2113(W`34=n&K2rUFH3@rjJ3M~dL z4lMyK39S-Z3R)Uk23i(c4w??lfYu3GXJ}oZZ3k_8XkDT00IeIe?$D~B^?=qBS}$n5 zq3sB5CuloE+XdRL&~}5?2ioq?_JGzG+Mdw*LF*4~0JMS720<GPZ3wiX(1t<V3)*mK zBcSaKZ6vf&&_+WW18pp{anSaGHXhmpXcM7Lf;Ji26lnWG+Yj3Q&<=ohAhd&^RYN-% zS`D;ApiPA~4O%U<>Ck3Cn+a_ev_qlIhBgP<Txj#4)j^vNZ2`1;XbsR7LR$pwFldXR zErGTa+TqZSfOaIbqo5rP?HFjwpaI&k(2j$4JhT&_od|6?w3DEn3~dFpQ=pv+?KEho zLt6>$3}|OUI}6&`(9VH&F0}KYoe%8-Xct1e2-+%W7el)Q+NID|L%R%G9@-jcmqS|% z?FwjDLc0pu)zGeiR)BUbwCkW<5A6nM>!95TZ9TM`pxq4Z7HGFZyA9gy(C&bCC$zhu z-3{#?X!k<958D0E9)R{Bw1=QQ4DAtUk3xG4+T+lkfc7M`r=UFz?HOp#LVFI{^Uz*^ z_9C>GpuG(36=<(Q+W_q~Xs<(i1KOL=-h%cvw2jc-f%Y!6_n^HG?E`2ZLi-5X$Iw23 zwh7v&&_09qIkYdJeF^O=XkSD72HLmKzJvBXv>%}T2<<0mKSTQk+ON=lgZ4YLKcM{y z?JsD5L;DAg3OG8z(Gd;-4iOF;9CkP)IAk~!I8-<^I2>>|;c&s>hQkAg7Y-jBemDYf z1mOt55r!iIM-+}29C0`ja3tZVgd+t<8jcJcSvYcV=x`Wtbb_NZ99`hp4vy{N=nBUU zaCC#CI~-MT^njx$9KGP^4abgf>;%WoaO?udu5j!IM;|zLhhq;o`ogg%9R1+v561vF z2Es82j=^vYfn(_Z$KG`ZwpCsIC)rufdoMO*5|TJLiHD@8VaFq^$hI6S9x{?_#|cCz zwi25-wz2FC2-FuSd$n{>no{h9Jqlrzy=Pg)>{4bat1Y`NEd{>cc~|dgShAIr@B8a( zdW<dI^SkG+bI(2Z+<Te0iix#MbTe@^6YH2*&%_2MHZsw}#3m*l#Y8U?eN6N-v6+c2 zOl)Q18YZ?eaV-<qG4W_79>c`-ObjsbSSALUxPgi7OzdD{h>07SxQU6KOzdLfaZKFI z#BL^TVPX#xdzskB#N(OR&%`hj2beg>#H~!+#>DMR+`+^Xn0O)+cQWxLCZ5d1A24x< ziHwP-F!59-p2ox<GVydKp25U3nRpfx&t~E|Ogxu~=P~hohCo#DLMHx*i9crIMNIq& z6MxFYpE2?0OuU$hzhL4eO#CGicQNr-OuSULxRxD27S|$!v%kHwYXHlO!TwNq=T2vJ zwcGFZG&<`8zUn$(#5`LzixSTolh|8Tt0$RDN#-Ob0f^V*fyJhpdCTTgqJ@cxTx+W8 zo2y;b0cR}WLQ0#LnAX?a)a3E{k+`Ye>96s48*~X46GOhi84iaAs3<<4%O7ZRR@DU> zoQ>`pm(L$)_SOfQysjGe8cm`l#AMc)Tn&{ZhtBE?xEsOYscx?F2P&HztLt4FXMRM! zNOrD9XJx%B;Aw=tiu|erUYF0)?5%R?@)Z$-UC$~>N@RxGN8P&{eST+sJ?!08I=h9~ zP2;jt(Omwj+JMJf?ec1Z+K6$UfiDmA1<uZ$zP5(gwkb}L%u~5KHkoRvFHM40>-18q zcwJSVh9+3;Ze4&1LN1B0c>2_(E83^N-qRYf==H`7_?lc*r~&s{Cv`)u2!|2E^05f5 z&Ng3wx0$ciUE>d++8V2!-s(WTyVC3Qx}&v!Bta;N5S7jDdM$BV0Nn|4`}|&aWpixy zmBhO+Id2PcaW?w(W^z&5`H5*)RaFIATwY&HnQAHFg2aR_=PH*M(l^$*8&_$?ucM?( z#w6uEuF6yG3RHQ34pxn$kvL3=9Mm%Idf>Yot6ghQSst$|z&ozScoZ=%N@R?5ZZvL- z+tsR<)t@w%NMb(*9Lf;zxoB8pAo`=qqLmnn#^j>u0X}d7HIOyX=xm5K;#%U%Pvl$W zYDD4vE*hxdp-ib#v?3joG&6T&MCqi=>{#MknV6a0!6N{HT9*@p%@?TgdK#c2-1Sg8 zTw%lwf_6e1)Bl`JP4(_7wXX+UYy7T8>LCGVlN*YpzD+B^M&d0<l%%HF=TbAQ4*06P z?k410>-0q{tBbfCiCn%aCo+I;i77XPN6(KGNN?S4;<qI7M_Lzod$nwR7;}}LH8CBw zmssb-E$3-eHPzI|D71b`bZ}fEXT9I$ZKS4L<@Gc-Y2_arFQumyt*@orPATW7z-)-= z6em)`f)ojxT;2w^kD3BCgHEVd$;rf(8^;ynov8Qlmehn{lzLgJ)J-0r9~}h~gfFJ% zP9vTr2|O*XdQX$;0MTZqn6Y%m*pgIx-B1U0Zhtc037?72Ca#0x^3f)pxT-%db-K8U zzmU=`Oo~U<9-x-j>g6IzJ2NhAHM&QPo$xbCF)uEKCLQS!4d@q?%o3MOpLHWM3#O!M zD6J|;;B0V5ht#gIIr!?_P1?+><?w4twjeHtDo;}zA8Ama=+j!#5lR~0a_aXQq&hjO zhJ?m(IdRO51Lqt*e_PbfxQbH6_qj+aKI64DRC?<59(paM&Wpq3PP0@MaRV`=?|I|B z=O$uW8kb9hv&!RJle)v*l0>kU<la4=$8U)te)P0DVcd+zb0_f}VyF!TJFsc6bEn!? znu7K=HwKzv2v)mlv=+FB(l1GoK9W}Lx_bTIPaIVSchAONrLVgyJdmq;N|BelvBm>s z4lA?H)fQ;2^A7fe-8~(lz7T%&40P}CY^>_t(iiN3x7^v+r-|?o0b0@lYz+>ycY1od zcWA7S5^L$itc|{gU{{ZCptpa=hTdR*M-6sXG>j(*<IssQ>V1&8yNho;L>#_5{5$$| zpr;6E)x<!}?ie6nd#ESWfGXJ-3J(NU;g5cGXG4?j*)%Js-q-AQb%)4ttg(&~t7Bq$ z>V1{L_RX96dk1?uVk`GW;$J>7e^pH-IJ-4pIr--`5ndsPBh!GWucMx!)oxRNS5JFa zU$8r}3B!lOYXr7pVz5SE?ckOm_T_>d!42J^s@}dG{au?n^?G@OaMEaS7&3gHuf0DM z>PgZzZxc}Y!~*F+djE^9qjw3#Ix!0G!;M`VVmt5q#GFPOHG~FGo54O><hpvOS~|2g z`iLOX=q8Q6<jwLo;;%_Zei9tJD_gsunyP!ZU_>^Dv5Qn43b*%nsf!{_rcVhojegUp zj>(W~E4qC+71$R9mWIM=^i^WVXP~!tpwrpCEx02k;6Dg3je#Bm*c3tuJ2AGqQ%U)+ zeFtsrM1{IhiJ?@W{~^%B(`lQkU^ldMus>y?zayx$Mqd>aKz}fWNcl#>IV>%adV2<f z?J3(ee-a@%(?LQH+dR<QSJT^#o|j6nsRWl+H_>*X!{Y-^-v_|RhW_|~G6AO11Rft( z$f-)2lO|51uO`?Ya#yFqnMpWlH9$?UySq9>PBu*aso>@iTx~k-8LLRJcOMS*w5J*Z z`3DhdTB@W5!3AO8KyY9%)gZ`UKwvA=5ph*r4Yq@OI_hB{r7CbPq50E6gE`kd&{@@u z$d2}4H~-5UYVYmu2>UvN{V5Bdmv-Sf=D1+X(k?s)Ywqj7ws@+-7ZO?;voL1!-YucJ zu9UTCPFpPU{B<{m2DbI~Z%!qamC!2FX%o$lIPP4L?;yO!eaCb5bhLJcddAc4`O690 zvoF~G&=v$R1^ag-7Qebn9h&$iG6m<C6L?yBTC0deObzK!LUQekm=l)#2!cE!9Y`{@ zLk)xBuJ%;oIn%~!=xRp{N@s6R%1&KPSZQcz*mAw&slru+lg{9%sUkBs^`y3%fYR!I zjiF%wh8^yn0nFWMUvPGJ_ipoyqgfjWJFRvdgPp1^ng}wj(H9xUExp|c2urE2eT0|R zoZi&gJJ4I-wSfkQv!f%GfGq@=)&vj>m<p|p(9$x`ydi}8(TYA5)X@Z0oz92=RPR<= z0ZdSLfwYD5g?hrh{ZP?ZAZ!h`?`Z19LT(3knluftVc(%rl`}+8X{@;#eZH>#u2d+U zgpyX*_4S29?VU8&ZtCe8Z^&*Y$h52%-;VG=Xp6H$4c;8!%l%Y>_7G}X9hjrKwhy2& z#xb&vC&1O|^ph4W(|Ub_8)$L1A=K||Z-;{*<t#ivxM>Xxie~jg$81JaW~yRuBeb+y zxuw_LlnUhpLP=wmXm)!;#}9V(Bfb=IpzR^7lY<+&y3yRBu-1i7BCIq#O*&S%X0W^4 zr@9U_j3L4(p1AIt-P{VT4EEP{b-;C|0h~$zX)M)a0DJ>GbXQmY>BL_)u>cr616}Q# zL;YkAqM7PLTSMKN5N8oc8af(64E9mDbf`m}RW@QR;USwC7B)JlUbE*CUK*?EiSPnl zO+n46k$(Y!x+gAa8lW`aYi0j2!KN`U>#$*MtytOLyA2&*1Nv#2@}VVoC5G#}wuYRT zn769kvZfzB7FEe@Y`rcoCfGDacf1QSk^@||7z6DC?w-EE0q#=K#Qi1Vre)V87gxi% zlyK5eXZ3oqJ#ZeQ2Wr&_e{xedI+6xBOn_+(%ajh_{5@%7km}O=a@@$ek}%Rxf32#Y zQ}clHWxAW3<6RrOqP^o9LQ6w&wbtqSz8YcZo3PwcJ*F}4#r*3DYrdf_)ZY{8&P53F zV0UQePV7iEN4A!=s=SdB9-JZ}q6)lP3`_pa<3VCeUE2`Kzl{<uOaU1m43K{ZrCn^O z@9Lq6A=i@2ec|0Zck-Z<K)r`{nKfzersURS$*bEC`GD>32JDl$E3p~wZ%YU~$iI)6 z3&&w@_IfGUIzhw-i7h`V8+O3e9e2JV))d{&%zuQK?8%rY!~t8#2)95W5282_Gqb85 zn^dv;{rQg*ducLuY{O#*y2XVJCoOXdp78}J^ah*AdRS2YlZ2rp!$9N*uP!wdMGfDn zs&}L4+HOz&GsK&;s&rm$Uy|h3n&&xUGbPKC=NHQpsKlPV#`pp;E=|UW{9J1&@+p9@ zotO>3{FhUT$kU@rBOK~hwwBW$h;2cNoEklWCburs>y$J%SyHO;05<9o=b@*5i&EQ? zrKT1Sw7UJZsiSoA|3uu2l5t~y5phice_NBD)q9k9VY0+({8L<cKcuwFlBV_7su4Gp zevhX<Hb5c&uf&sdP<l8|bzJgKD0$LBsRyVuIDP1w0fbb!5Kl&-1zLN2PRvOw89iOC zIgD$)U;dp^7bGi9oy*mP_!D;v1yN8$iMLVb`ii)m$+*zFj%xORBQh#+%%Yj%4R~OP z9yY||3N(?wCb*;n%j?qnUX2&yqSfQAiyzqE60bR#C^5V|hN~@(v%s(~oUuVi1)0Q| zbX21F*c_(B$)c4CrVwM&+V;7coND9|A7TL)q9-HOQ;<bmNqdjhqOrZFK%(S%$!f%h zz7pxsG2t@>*(r<D+^AQ7lA&L4V9K0Yo!&-@o~n=Q*afqRA!+$haWQ?nDYi!!%p<N? z)!z`p`7&C1=W<U2))$zHT{zLBs@_OzYt?r!u{&bwBQ<+<pwivw^tQz+hk`}Kj~+%| z&#n_xqkHF0iqO$w3w3>}MU-keA3~hP<8h(^YbfN4;xH)K%!y!4j~=O6u#^DM(UN6N z>X>sup?N*=eY=1dp+UxHR3jam-GN9btR}XJm@#+6G4rTMR|E7k${xvDQwRkLu@oAb zupA9;g580bP*pY_^@P9`EusPTKy-R5u=AW^*eHyx4PywQQs9CufDoD3z^Q@~Vo_pq zs`9!>MMd+VZcf2(;OEV$6|9VS4~peQ1P5ju*bJ&2r=?p#=?db~d0@uq9W<I%jN&ag zoVaphxm;^pRn302PwF9gS{^GY^@0?ssaxog#RXNA)D)XEDgeeO*(sH3^eMuWDNs^x zl^SAP9LuN|p{Z^afy9k7_ZX3)Iyc^gE2yWWc}bC@vc*=8hZy3jK6yGXrHgCcXgWSu zqHZF=ZiqCDQ+&;1go@#9_BS<SqC}XtQ&+5O#>p%$8?~FL;p}?dt{W#a-h7dGPOZV$ z6GL1L@J`p@jMsKSN*C9SqNRumrJ;6E>SeJFK|_Xg3DT-|tuIhpgZNQs7L8{U@#M$y zXw$qF;8f$O#~MM6wAGl7Bc?-QnWExr?6D2LWlSc?hIS-FEt5WCS{j>4Bmg!NF&}VO z!<KN@xb+20L6}$;C1V-8HY?aliRUIu9IKUfP^u+ysnlpJDqa9K>e!C7lQ`m9p{cnN z;keO|-mw+>1LBEOGI1(1l8>tq0mx`ht%gn^t~j;P>P5w(vBqeaA5zkMgAW@L?VY(z z!GTUX%TTXIy8C!2wHkXHXWE=eOiL4(qG}+*7sqlAu^f`X!W%ZJ5p+JK&r3+JS!l^J z_z^KIN?`E1)+R;&2_-%(A+dfg1ZN7G5j&67UQ9-q|0;3FKsAn{asCBAPlluid+!U< zC4^*7kjd8u3%&ut-kMn(BayCUenp&x$vMZV;>(Eb-~=`b^5#5HIa+_(O(_#QiP|m3 zfxm*7at*#N`0{D4R}T*O+^ZUK1i<h1*Sl1UU(4cZN{!NwP3>+}S1+_~P0D#4an4J| z85`GH@Eb~YP&66BboDT2zsuR639^^cp;k0OA_3?aK7mN!xt8))O1XGUN*qjq{(<2I z8{hBNSLp?}Q}QKalJm%RS3Nowcu0Hb?Rpn+V9aQu)H|CSu_~=XoVefXbi>%dasZX7 z33M-|kE!vo>3yzxEf}@n0ZNTVO^uGZp$U1panMN1;$dQnDYG^r$zK#Bn3nu8N{&IP z<-sTCXitcnnSV!#3!;gk)mz*Y70)LsI%|OuNe6afRr}M#WdT=z7Zew@QZ3vTu&8iS zho4xfsdufRGQj79c-|N_`FmnL(BMZfsM<s62uT0|zj}o}PYE0`3CM^HsImH(JE=!v z0Sm*>>4OglyfsdDeKTrJEB;HwUk3i|1D47lU1fly7CU$9_7$2Ct|P4C$TamsH>;Rr zvN!9C?}Aqe#5@MXPp38_B}7fBV}y@JJ^McrXVDl=J^NHSzL}iQ-AJX?SNpn7((`+V z_$*`c<C5~jHad5LsDDn2HEAh7Al6j%qvaYm(Q3`}7veOfk{3fPm9!tH!I)Im&xmns zi$rQj%`vH@UlQNqF_QA(q;kiNq<>QKf-%V>D>&+`dRId)(yHU%#I<k?mkO^QGK9la zOZyF_%}<`T9<J4991cS_=BMK#OohTY8E8ye+6+oNw#2G1SZ26u+GshZ$x}F)k}ol| zVACGkU3|WY_?5N65x+PooW_NT<%pzE7m2ZJo<fn*E{#KvOUwNq@C{dKyYPiG#=<u^ zy>%}2j9P*y2T<DF)bM<zpw-N*2~zu-Yog1-!ntGRh~!RMm75nD@_b6WIJF$=`cXHk z3l~!IIyL4e7ds*9J_4dS5F!}P^<md#pzDNCKjwXE+5k@aLNUUJfwQrG_ga{un8y5= z#K=DhiE3~<Q<Gyc0Us6*T!rggBD)l{p{c=EyDFPksSQR;Hd@cu)4Z-BElD3~O?fG{ zAjtIvILxm&flCLnG^Bh&a!eo-9lIp^9L`qweVj1|tqO~X|L`>Ub?vMc4eM`erC1ky zp@pE1+!rWya?;Lh#@QH!HUhJ!0ao3H)ejacs<XaItCr$)i^V4oOqDnSs;vZRG2+z@ z-4>RnTP)r@>iIN`?Nu<1vBJmMUYz^Xo2!DrCh9`eT#*?Rdqa(`dOEwM8HHL24<n@f z2`Z?*zNH~h@Aqg-M-r250w&7d>mq|YvZm9xD~Y=}4Q{jroaGJZ^_6h9>F4JQT?BB% z1OR+odYWLPMvgzDVYrbMvqUefB`os<SX7i6Y&MXIr5%?mtRv3lX>j^$VOLfAoHgo{ z;de)yv5_Du(tyw$&&j*iQ3PX61E#sr>%m#odXJ|`?@E4Ro@nIq%A~eTR-szMwh~n0 zU>gh%^lr(e6FE3w(4Sk=9o&Q^c*IhUoz@H2CaaBc*_-N{vESM3i-S3aU=q7mav04+ zUlj*%Y?5NsL;nxrd<m>u^o1%cf&y+I&cD%u59=EGK&ypzVprl@Bc5GbbNL$Ra2vLB zsx{t?#GBBP@w`<5&6F5pe{>OZ;dmKWL5m<$UmK<-?aqe6ZelAMkImhvdV8=wiP<kK z>?OXk@%Yq@Hg$_q)2@6y74<I^_7h0L@QW{Sq_QyWKovIWhu#YZi8EoENXiN2iK!Fw zOp}M!l-iOGTNnB{&%*5!g2Cs3QH%iqYbCOSR~_*rU`ghroeQlIPb9FC@hT>YL2xi< z;@zZ$ClkWBEt!;!O_*_{GRe|Gl>}<A;Epo`P9ubb5uCJAo18vWV4`L}gV+-$lX!M@ z^@>@kS&t|vJe!zSj8|QJ4&lZ&tQYmBfr#%arrOUVoCIa6WsVS#Dw9dGs;btkNj-`# zBp7FMapGYjm03lLazDCQ73NoNS$Vv=dcBC?Qj8J}E@q-8FgWU5n6_f9v!4-2ie^ax z;>9kA)**jE?5!z_#N&9Nlq06BdXq>aW?j{JOqz~Yxw;vpFN-7FMS4MZQ6{U>&4l}< z=}HHmx;3OtY!QvDN&agBO)<z(@C3;t4HEHr>jtI<HbP*f=}H&}rkC<^!YEG{Lo21T z+3z7`s7Z1aq12>A@ob>mN)e-HsnQxHA`L<vs>l#b(nqc(%$4b3#&kFpacqyffzT4H zf|$XSL_$^Bt7!3#!NQve>d^EA<2^8;uv)F%LO=;d@Axvs0=2rFdj0>FkP-$Z&VKdv z_qNkLyyVV}utt_UYPlMGt9-6TeXhQfKpNxAl>kEZ3{4HYlkTOU>u_kRmG7ZprGXoi zd@vr=JCXQ3KUz`mA?%iT>}JI5Z|v%!3qwPlLEJIhKXw_4E0xsETx^EAYMm`^WEowN zk~<F9;b?i>PkF5Up7UsIuCI6UKsha+hbW(fuGAXrCoe{>8r`o(E>Km`;74uLBGQgl znDy!h(D3@`dz7FO^x!y9O|EL(CFIsub59U^LI+CD?pHmb5oLr`9h|LRZ;V!dijWf8 zK7tg6Uczyg-0q0QsOwd=bm~F|Ar4J`I8p<o7Z8sGyCP;DdzP?k<J%=Qwq9>lwJzMv zg$M<@v5MxSxDANHQ9`Xx7nP4gRbn!BVEB>mp%zmx-FE~JF*>f+zAqATf}bP}d7YKm z-NS$&TL{8pZy?bad4+)0`wc?6112?ajL6lVDmC7UdrW8vNx@f|ysr^#^8Pq}+qoK= z5dK-|sczGt-q<Gz^`@%9O=jwn!HG=~)l)>S#HfUC6KsNdN?mXr7G`L5)XVfPfmH5C zgI6MOkGxk2UcC1SFJaC~EmTZvsQWo6UJ}fY_E$zSAd}$zjqnm|khElUqmR3*pml1X zcCcReG_TUv`JWPK)qYf@y6{LM<rf5)U}2^wWztIg2f^)+E+P{T5zV;lt3E(_JBg_O zBJ8xsc1)w|6{_xtj_pnVAz;^jR4U>?Xa;q`wWRK1>$ln!en*f^=|bwGMxBo-j141^ zrsNvb1V*_RHyyg5mLfyF$VljE4<{X+YdNnA>b@~Hpsr{V;Z^UmwA$tz-x;k%bc?3f zil!3cQTvR@CDd@S^@u3Mm^#tnrxSeI+Bl&CG<aA-eh)bjbXb{S(^e}fU>jYnw0Ebq zRSsb$_y^M(V7L#AZ{Rm;`{hM532T1_tG1%yYXD8OIsZ*9stycvQ|@%a&a7UG2NCR= zblW~=oJN;(+PYekTfKmfNAPIEFQ8nS_ahfI8k)KlU%Hd$L67+0JEd9{xs-)xKeF&4 zDznN{PrhOo0^G10?()}qU<XI1>!LgYPkZLq`&vYW;S7jZ?_$dcD(&GLQ{j;X#n^#R zNQen5%d|Qz**98PTalSi(pCboa>0{|8PL;=RlYVEj#1l1R)XK3k=2CjG#jwt46Uj) zwS%zMr`y!j8r&*JFN&PULCk|TBuJ;|%Y`xadeL&qD`BmZx^iRk(yBr;PGPX3(h#Ih z?wPUqlv6&d_oYm#jZM;X`(5=)2K+cN0*|6!3uY-glyK8lzA??(OncP`*ugElEr{NT zUz!yiL9l7}Vtqj1DmPlhs*@&wv53(Xk&_S;yb$A8v|0hpjdhK<01>68Zla@A6Wacm zUfAex;e-o6gcRLJFIu&~;;9RDtrKWHcr~HzyFO`dRMF5F`c7_913{%d&BU~X3Pr~z zpzrjxeNoeYC0UEJzFF6FzW=Jq)cbs+0aisVgqE;r7SlgsoV04cXhCQbdG4KFeZ5)K zHoicK5Y<>;!(1d|x5e%CH^bPi#;RLu!=ni;!NWL?KybWal|XTCNu0e!0Rl_iAym=y zwu_TUcN}YSZAe2d9jew{jhH;Wd|E%%$5DvDk~=<V$(vYZUPLtD@Dg?jasJO)-{y1c zNS%a~dX`E=f}cQ}RT>Zmp%rd3p`;$y@%6+FRCgnKrMo)dsi{GPzo!OUu{iLd0rn7J zYPFLnmecQ{y?%Y7^SO=+ROxYXMaL6b!cM|CeFEDFwl&evW4*2h2qv{@o5Y8z_IVzK zOQ+f(q0b2)Ve}^IqHTnk+BuX8Gf>^kZ${SbA~jf0tG*KmHTBXd6)G1|n<68X3d;tO z*#77qU(reXC$oyKtxw0AB18X$%rVOmlC@3U5yfIE+Rsnj2buL@s2+SJE0?>>Xs-~< z9ayDWJ)cgfsaL(@*E0oE);MwXE>0ur`%6V<5oGF#BNe1p1C1URHu9SEk$LX^)oP3z zPwy0}|B)L?TKO*^^wjo7oUnSWMl5Coqw?^jxSsoCLQK6ZPmV}la<bxJ6=|rNgg+&` z)QThyFUHJL3r$xp2k>EZS#~j@rCu<_pydX85IyVF_j^=LprRu9j=QGR3!;6sxK%l3 z7ryA1l!Z5?#hF$Xx*mj|0wHTuDZ1r(>Gyz-9S}O5R!!R-P~d@>t(c-=!cR-}B&{NK zGpy3<uEvB_MG-ofRZ)#vbM7JZxCxnW8RjA`QoSVsv!DKiLS)M)vV92mXKWyL(Uk-h z*VD#<;^8d`NO1?Ximo9%e&uMyyFCtGB2x6-jxo_7`t)->We~R(`L8n2ac?Bt23&)Q zsCR5eZNxrQ7cQvk3FR)sFToB}Y3##udQ|Qj+Wz9M3w}Yq`XXJx-Q?7rY&R2h<Gw?~ z7MKwGHo`tkyZb{u!5WQ9is=P(ul1M>1ofQ<tyA5hR_w$`K%tFVggql*k{=zVQ*3JC z)uA09_*iuJ{@`+TtHJVI5^(P$-10Q#rSkz~a;xW2=!lb6>IVsBWtu2jsVM}KKf;h8 z(<6lDm>7)@B()}EW3-AMC;n9p!FGBsG1!e;uoAi*j_%P3C-e;UJTcB0(QF*^@XXj_ zbVW}RsC67ry)VbWYW4FBG21;pXC%}O^6)oebp681LMdP$AebtyK+h3-@wn_dBRUnG zsio&}^egy_ULb(O=(4A-_FQKV)k&ASpQZiEZ&KU2lR7w`x*}04s*Ml#w^ovu3CWWN zQc@H(Zk-<PiNFTX`{69n!2dwthyPdL8r16q<s1v8UiN}YaEHT#bSR#Ssg;s%b)b9D zp>tPbm2UdHMQ}&%GhDU11qU(%m2Cl3p}rvb6M<FkGgyPG!Gn|cxV;57KkZs-WqptE zs?x>tyQ{H<(Yy*h9w%D#EfZSNX@DORV0pTL(aQ5Q(pHg%@>fEsO&29zEP8x{E?}YB zbJf(qxYJNSA=J9DsJuZju(-K{vmIkw*W-gm1Xh4T)$#6wY87a}pA&HPege~atkGA6 zUV}&g4e{@Uc+~zOYS$-3?iGUN68R*$>+}`Dd%qWWzI%;z6rGOI#Q&P`YxWOcoq4dh zA+tOtSgq(=!mQXo%vDvIEnqSbjBCGP0$A9o2i>D1+>}X>jr#|Q4d+U1y=a{)aeLe} zg|JueA2vc#DL@}vnyUF-<-y6yNDG;={)=j8aMROG*vLl^Of;I%BoSo8IHJb5OX7zt z`Eba5!Rmz0V?*G09cs!Z=p@=*AGtBmx=x{0fwP7pA!2+)rUMBoi3Zi7VwN^zbiCR( zoqhy5YfAysY{E;TLDR>>-B<{X)B)!aV3KJveL(Ih&~~a~w?$0{6Zm+VYQoa12W_Hf z4NQv&F^Q^9U)+e_I@bMQI)qTi8>JJ<NsCQ&!&&R`OaE&@lZ~SSLLINu`$Fx5{aph) z#`GoJq|)rAi{I3E4w^&N0jk?eCKExc*KEdHUV6<=42@#|*sZ|QJ9=Kxq!8?yafa!{ zusBLY!n^1!EuF1KgqREG)F>E1t8F{wf-5=`&BlEYJ~kJ;C*IVGOJek3CQ}Jz(Dc1! z&`?J=254rCsf^J7yJn3QAD(Z00$M@P<BjiqtADt$s+!ugYCoL7$D4}w4ZH<PS=(4O ztt9O6rlRJaK{~8WXAZ~ocDeviJ-|-Cs81Sd3x87;;nt7Sl1XsY`2)^IIto?|zZ=DY z!J|cIC8LW1Qw<@v><6-L<3`aDxf8iXfWN(})wrATINZ0bYvVxdx_`{UOTL8G;?n8V z7KXk$bo7d-C#aR_Lb<Rw$HS#4HliQYYd5eajmB=6JcMQ&i^h*E#hsVpvc;|&O<v+& zF@{^e@RGBr^PzeiU-ckIuC<7{@5R(iIK>m;(Ah)^%vJH?A~#HH2tY{}ATBD#w2pX7 zCgN2yRegPAd&K9yo)F9vAyD`Mo!pKsc#t?JtU!uV<*RmthQZr7R)P+~shCItSWFRn znWlXw-AEL7q}Q~GU>sv$v^aO%DW<+t7i~~%(xEc7Rjlc_<YFZ9M|_>?Rc0^|;T=&o zef2KBg<#4j6e9vtNylD&@O;-|n6GkaN6Soogfg~MB?=Sq@IwwvR<tJ9)nu3e3MLdI zK2+7TmAJ;%Vf-aPydJfXq}a=ROgo7G&@s8{TY%B1bq+#qA@%e(dF|0N^jh3WK$YnO zO%Qf&`T^lBYR1jMmTG<$K-1sqktX$#UcK&4p~Um!6F2zl#~fre{g4tK9G|esQ|*gf zs1|*C*mNeP%ukXs=3udYvPx6D=MdAJBup_+RGQAGM2nLo;?FGxd|vGK>MviLeniPv z#3!d^L?kGbt~TOtxT;4N)q_h3kGi%BYfKlJeu8_X*0f_DEXG@6bm&I&NYcH3bP#{H z>8GZj3F{_GhI>}3Tl|U4&kK?u3o}d?n|>iUF1u`KE-v!nxv8E(Uub|XW(m7Gy6~8r zmiSku-GbwC)1`Tz=Y47#HjOZGH_N)2W!=QYJxsj(a?>8u<)$l4SDLP3;uTE1l8N}` z1}6T7;4N{5;lMbPg2N(%;YbPjhw9bN$<qf?iiqpIlHf<u`-8ZTa)6`bJ<>=*^)AFv zq=<p+1Ng_WX-Cy6x>5LS*n}cpJ>-62i6DF-{2ldni|JO=ZA&tlcpVe3W#TnV{534% zjW|cV!fLfr>xZqIlr6!{oxOwI*6QBK!&g@IF@*MD58gkt*cF>nTu@qQZNPg+KK^0s z@5**+ew_R{F3<U>So9b1w*jps?lRpgI7XICTav}H?qFGWj+pKf@XG!5L$j!=lN3c` zeAx5|Z*T2`$4yVffAEy)8No4ZdYXwh4V#{2;>|;IpBEm%v+j=yj|q>PUKkRFN}0Gf zkbV63TUu-6N_BL*r4AcCeHFIy7v511LG|r*P3D(PZwZd8Os|+;HT}W#n(2?G*G+Gj z-elq}OuUtew=wazOuU_mcQElzCf;?G>21?Hrazh9HT~K2p6Pwl2TZ)1iT5(`ekMM^ z#0Q!95ECC~;uBPLbHcb_yq)gy$J-Ur8_UD%!o7q2cq9y;h6CBz9e8K3tGfy>xApgS z<Lo$Yt?TO#Z4C9}aRr~6k{-lr?dlllJSN<ZXF^aa3m&ivf|ny%=t<GYM>D#E;Q{qo zu26>)iH_;r8tUKL722kL&wJq)##zIrFPV7H(C$F?EXCTc=dE;Y!RhaCXn-gDiW2^d ziT9;W2$g|zOjYXkMDHd~B(rE~@>U)%sQ=R{{5!J{*GbG7=1J%zX7vAuhs~3j_z2bA zjL>#GdfE}GyXvqik2%XM4x6Vl@lhr|c9b$IK)V^2m}iU_mk8_D^SYqAqH;&FGaq0+ zFh0B4=DEV`Ve=d&J~?cj$Hb?G@{ggb2Jr%)Z-8EISQj&dG?azr0%7*m=0)aQ^J4QM z<~;Kf^HTFNb3PNFVIn&A@0s`<6Gxf&JQH7F;)_gt>1yLPbCF;&7nv<)#cVa(1k(`G zygYOfelYPBCcetVKQQsNp^Jv{*LH<n-CdiyaL+B2%7Ch4_`@2wx_<zBk6QxSvtvJY zhg<RR0QxocApV7~x~>IJPXv1g5+F1skHO4SI&n#07riWpmo3|LW^{$v9I%TTLa*$A zKnXdcaq&jSKxhq~XT*MJFGMKr*gDXmJ_KUH1i|-7)kg<9)%OD}TFMoD^b!I8a6Mi? z<+FQ$ZY?}oOJgrnY-=N%8(kis)&!O2Rf1!WxyoE^cA0CK_&O8cU?N89TYJp4X195@ zxsHi%Gw~fJ{)vh2QYV^?c8$FMu)`aocQyQ7160Fv$9xgFKq%Q)k&P`ZUdC{#53q)4 z0`(1U*@9<~cn|W0HqoQ9;bwLIYq2kPF1M9sf5iK6vvKZjbBnpvyoQN?X5wF%`0>zX zS|Qh&1A=3>`DpVo=JiZ`kBRRy@q^vwW6eQxEfYUv;zuYW6>ZrVS>m$Bt3tix<-x^R z<0qtNY<;1=AfD9eh2|+7KQ+%oeY-esB_GzpQMsD%$C-PQ2ycAE+-E+12u1xX6aO|e zw_V6xY7}xu4a<ZX=0QV&Cnt0I2K7;7o9zXIF(Y%*<SAKemOzov9Z+pcsBhqmaKC>E zo}*l|q*pyO96mrWoPHV9M5C`Rw1YGqPxRc>Y5sn^Mml8pP4>L$;(;>{UQk$MTXE=N zd51gQtLy3;e64Ga4m2<6!9z38OY)5DoCDU-%PlnSTb8s#cZQF~1E~Y}V8h@*C_H2w znmd%y<{NBp4~3wOo}V>ao-=QLYokxu9NH0Hi~mLh8lF3pIegI2q@e>_@CGCl>Prh3 z<t{!%&Reo{S$+XN^Wh#P<h4;<=^_*D3D@3!pwtF2o}u88jucVe%4NKEbI!~jnlg20 z^3WXgW`5ZQf3&FCO?gyebUiPd%ofFp>4xVU#nn6RL5bhQ6ma$dLx$5bho(}=?91ox zb`+NkO&iJ@n!dZVtb9lul3)fL2)mC%P$6_?+;)YHB0mXI6T%aa{UOcNi%Bw9OVaFa zrk88=uSRFfN30w^a!4MUNqJYg=8sfW56u|L9;sP1lrwYy<vJhe8Zu3#z5UT?6b075 zr6;AM-((BflSdmpO-HTeE!u+`UBiD3QS(M0?i*?HqDi>#799TO^>}4&a3BaZ?CkFk z?%3^b@uIEO-_hB4S*g<1qJX1qE!1yf?T)PTCixVpk69n-8zaYf@#nFa!4HV(Z5_NH zj%)yXlFx;yLXL2dutX>n9737k7V3qg1fS3=3<^7i9}4FRzYu;Y{7U$>aJ6uwaJ%pj z46Vn6Cxj=3r-c`Uw}lUc&xCIc(+t^$d4_`x3k{15iw${(!wgl1V+<!4b{d%BRKwYZ z^9>goer))O;bOxjhFykB4VM{iGrVf}((o_C*M@Hl-x((xrx~XkC1bYn0OL&KY-5SB z(b#148e5GUjGK+yjVBsUGoEF<*tpBM$9S9ZF5@%C=Zx<fKQw-7{KEKEhLn-b`?b*! z(H`xQ|3?0kv2^GtO`U8v|3GkD0bO{4`9$-2^GW8DRgL%w6F-GgWa4K`{QQcXi;N$e zPcffr{Mh(0o76t^E)&0C;+I43;vdxHA>->a>NgW6s>TyBSPqVlM2XbbZ6-|V?;=A( zePPN64S255Ocr@~>4wYmhvxKV&l1{%kPsFI@Uvg&5Q4%EAs0Uf@Y9ZeD+HTRo@*7F z1f1Q%s>^&KmK4GPLm5MEt>S)S{uvA^`fS+zb0+?CXf98AiE%DZc^UuvQsdmqh9bWY z3!hz+C1uUZlBa!QIK%YxwD-(co3Aln%QA*o#)T~76qZplv>A3h%P3*uznS<SCVop< z>ejsZMsCf29mu}mf8Uy~Qr(8FAzJEK^&eOXwZPPkTAxao9HFsN-pZx?CXhY!Jxj^M z&caq&8^%kK<RfK!*M?ZJ?&M;97sx*Ke@QHD)gHzQvK<dV!anhnqKg+*t1xv%Z@$O; zC>BTNd(HQm?>9eSe$f1o`C;=TOfoRZ$fOJ=Win|JlO{813X`T@1#9<l<2L+!$ov%j z7pAT>ZRk1r50YfjZ!{=pVJNlYX~y1d?wA+f*6W|v^h04|(T)!=FE(^-f^ib+P_2$| zO@Hr}MxQr?+qU{idUB?RF!-QK$t2>iC>P#=YYm25y24~qw{{J5`Y^+Hhwu$NOGv1i zg`rlwY8&o@MT*a(od!q02rBt^&hj#cv&^>KQdQ=%SxOv^VoSyH<<*v&a$8Ap&GH(j zt<nMiM^u*H-tG;-ezztIw=iSnjQMK5E!SetwJ*0jaw|$oa&7ph|DlcUKbYSY99NrP zGyl>2y7>+Bo94I7Z=2sS|A|S{nItkvVv@|H8BEG%QVx?2VA6rK6nW45zWD?5hvtvW zf5BgW!%{?=$)wYm^g||Hz@!VA^ke$$r_?~%klxqXyR8w|Z{UF}G7RY>{ZCq71+sJS zQS(6L%|F$8;mO=R;XZY)jwaJN)nrFgm#YqK7~HgpR=Wo_;C0RZ9jp3-eVx%yH5v3A zXpzR<F0sqIe_4#wL;r35+Wa5$H|B56-&q6;y5}q=&1TXZCe3BiJSH8)r1?xb_$o_= zCDSs=GTAc4GSxE8lEtJ2Oj^jKA|{nGsgg-PCUr1r2h~E3FS2~srH3`GI(8I@f~Pwb z{R^cMHL|&{w+n-ce~4ZOgJD&F?_eK?fh~)5Ql8G=h{tSk3yTV){;Gq)?9o%j=Td_~ z1EVX&w|a+#mor5YwR$lCQhZ(6+q)U7n9b?Q8R?Lg*_MOh$+OI{%(cw39ArT~FJe+I zlNK}S5GLhaZdo9h1d}D#f)AEJ13()rWm3V=TpIC_5sJq`v1+9`Hd>Q<g}{G<7j`{8 zP_SJT&5Sx&I(|x559tP^n}Kv%Gy3~OXp@=vqzZnPU?27d$pgbbo_*qpHZumF?Id&V ziNzJm&AH_z6(^mfm9fZThSR`eV$!l<i-k$~L-`z>YbB?Oq9wLl9C0oO%W_Lul)Ics zg+uvT+Cwde#iu>eQUj~UveM$TR9dPm)fN|%kgb_X$W~#Jl}WZM(2Z*?Zp&&*ouyvw z!geM(m{iQ95+*HI4WHyqtaeC+Z+gQKJzk<nUs*a{8W^mDsuuxmH(t7Eqhbs!88@Zg z1ygi$UIIQ6Cg|oV5R{mKvTx&g;&C(H$km#Btp#iRJ(hKrqb<i+)-$P$N$3+5Oj@zW za;zn2*<d-ANry7&FeV+2U#K-_@*$v3c9lEGGlNwxG*mr&eflt=kFiQ@?tuY;@sgN$ zF2@LU;Gs>LG<6(JuH!75h1qc5qi2(UBo5by=ZWDQ+M%WGwH!}9x{pam3|sn{bmX{P z*dnoPwQRF&$JPCCL(|x7B9|q6GPq_KmWa9s!6YY>R(f)be~Whq6qg*@25;3CRccHz z<lw~1x^R8r@mUmPJzm?zfNtsytB(yI6YF&iUpHCGnKf_z!b6r7nysT#rcM+6eRv(C z4VpBxy%zd<Bx`!C!|#|?-Mt%v-C=GAWecP55s1k$RsECXp-{yth6#VX>6uICBZ~uO zj$~o&I(Muc7y&hm&Ym-OA3*Z}deF?_tkHuPq{D{Pix!V$<-#)?<H-zE_IGvAb4`I- z_4RY5Gut={=fpn9VFq%(IFeO>8LF<)30HN3oy*HNT4YKG6<`)+I4e72)Mj_2DMfhc zF}rf9uJ62k`S#M0<>e!#WqH~PGVgxusL=mLDpusJ+<v3_d)~^k&s2Z8OkF<D7Zl-e zp-xyM93yNHy0LgZQ8-IDN4QYfE$kKU67I*c`3>PM;m^WXhACJo&oa!xV%cgq0?XtY z!$w1=VT)nNZ~>Obzrxb^Uc*C%mkfV4d}R2m;bX%WSRBtXE;QyFi;Naysqsi-rLoTF zS92Hi1@B?}Z|$eCS@mLDPPFWV1?$@0*Ujx(&)`5eE<qzpiTk!_&_qV=Zp%rQlWDUq z&Gdon4FUhas;U-yDV(#>JYZZnN~3?qWJ&Ada9Jd~K#MO>Y>%c>JG>93Vb7+h&qdo! zvJ6>H#cq;?Sx#Y66_ct*ET>suVqzBak|vvnCwTjJG{N7v1s>%7aMbEPhN~^SU4zei zG(~f^<pNTc=UC3QoM$<oNi|Gb#iUv$x%UWG%a1HSwp=vyCX-e(sg6nYl*8<ZPJwv7 z_TIiwRcCK6w$NY{k>YR#!#n)FZo1YSs^cgUM%^P^r^-dEg5Dl@U(~<wj(I!m4ZcIl zmo1gSf%Z<CeCRO<mD`WI>N;Mq?6UmIaw*i@uZ71f!<LaY6~G_r-?EmxPaUcxYt;|c z?3mOrBrvIoNpN?}u<Ws1Zn?s8rSUEQ0C3l!0=7^SFv-ItEriX2lT^*y$vopd<~qyu z2{Lhcz&m2Ofw~8+vvh&=FB3l33&K%vvh2m{0b>~Bs$#@)Gr>=gs!40Y+bnlc6aLn6 zyX6kcolNpGshLSFOlsX@x!ZD&<zCBuOj^UFbxb;%Nyq-5&3BJl9;Z3%F($PQTb^Lj z+HvPF%uChr^V0X?roL*rIA{LiCHY0%C;cM#Ngp_K)@;okjV`P@=ee(H)<Ey(P)|)) zsJnx^EmZ>)rT|`{#ze~J_{h%U!VouuD+dP#dci|hL3G51ho)o;@NZ`hO&*;q%{wT@ zmwnk#2IiWDi<0?IHFxO9!rZ9qbgpzr-ep6Rz_fH(q6>BD!d&1NM7}qf(QyJ$LtGqa z6?$kun?}{b?148Mlh*{Pph}`JeyS8zFGZ>&@jJD`)bCPwQIE!Sumw&w1~2OM!ZX6} zg;97-UlLvsUWe!OL*XyNr^45UOoM2cVVG-J0RL&OVX2|SP;NLJlfz1b3zNfU!?}j5 z64bp-Q}q15hKJKIuAa3#M;-I`Ogd)RGRma&<919ku3mz1^~%J?Rlt)o^LKhD77T(> z$PhAxNrt201Mb*=BkMQW8-&RS0y#jKCoF)Ua*0qNm@(5jgylkoaF}qUP$kp|wU~E3 za9FnpYlWkQ04jW=a2zVV57oXMF6<u&rwXSFXA9>EKN5Z-Tr6AyXZB^n9^p#i8Z^m` z!p*{Og*%0Ng$Lksd>n4=XV6413$LMp-WL8OypJaO1mP543IB$hTR>AyF-$i|h8)98 zG}u9Cu*HTYh5~~bv$+EeR|ePjkp?Fk&TVKgG#PvbgmX<n@0cbenuxoFEc}Zz6I-zJ zx23lS#tZpig=`@wJsYt%c;&JG&NlFz4ix5Ip+e6TW(l)}Ijs>7Vw>)uTgTm;RiW-~ zESzTRpGO^c_y$HQwgu)32d6K@uIvq5goT2*CnCZkENHb1nkbegv~5&aEF2=_rH^~% ziT88drNUf}yG+1xB0Cz6k&AI33OCc95%%;81?-Tg55FrLb04*lMaa24T63d<6;5$` z`Z!nimvWrqC{Bqm8}t5Hn|)L$70QJ2^uc#!qhKWDifG*)x<=a>8-@9KM0#)>Wu=hA zYtkuHCaKAzV;$k6Lbc%97w}br$UFDUQS2wJ-WS&T*v{J^G)B5A8La54Gk6f9+Sv5b zDE2Fk61)QJv$5;95QTc^a{!t5y}@1CC-U<9g=VdX9-5u08Y$QzNq@Kv4RM@xT0LU0 zjl%k04{6ds;mpShIlP{NYhBw1LaMN6<#z1Pg!ZLOr*XJVv31uebj8<QHg8hy#O9T^ z8B3K=`r`HobGf*^YZ`(**mUiOu*YLNDVz=lZ-6W7Ugp9MYD0Oeuq{akTwk@L9m{#j zgv+`^I01{QG^$q3XTt|07xH{g66W$T4V59B+~S0LzpH&zfSD|uk~SRr&AA-zG~tK5 z4whw48WqkE&cr$|-QKt1-RGxplyiifsETe7&V`D=rN=dDP>ZgFM}_l+3$TPtx6Bao zryTyrLe8*ok-w?80}b?3;b+3n)0Q!K>0WH>k)HX5R&nYyGKx*$UFiwK*)P@DsosCx z>cTcjSGaRj7#2pbC{DM^P^MpTyvv1V-i}aM!WHN-4TIeSxG-T8q61V*Z&bJnThzPL zsV<Iqt=0o)3fHY|4R&uvpxodlh<JnWn|;B#N!Y8Yl38$m2)78g3b&<S!b`8aoy&7O z4X=yv?~ZjfzL=hWmvFamPx^SfvM=X&_eINhe~LNiLHH#ePN&8qgEzFELq8g?X&zha z>kJ}HqccPieoqL$gS=_<T8{OUrUajEtqpZ!Rf0bIEDYu6(t(J`b<`e?^}MimH|*;d zg_q#m<WGW!=sJxM+;TnbxG5dmLiLThu61q4sWo*U>YyZ_y0!<m^mT_uVXVI@{9#`j z;07+uABDLiWKN92_wy#aKWTURONS$~)H?#U*1`WSJV)>C1OFvYaS1+%)iWOoA5AzT z{8jjy@NxPX?aIE5XY?ucwa<jl5qkXP_gD2;dW_dD{}BF}p0HfTe+hd>Xnc(dUkm>c zzS)QFb#X*(f2Zj*Qi%<t27|$9$k+#*-Yu#mhDlMJ62s)!Mj16sMJ!EL`k1@2@8g)F z(5%^91{tf#?DSjl(krbT;{ai=u44@c`YHZl6u!#YhB@hj?aF?PgUzF{NGqJ+s9`?5 zoeR=0)Rjj+$1xVg>Y3Sw+_uKhwp?|qX4G&9!i>_Ai$h`QpijAmWrqCNT5pZGoktCY zh9bj0tsI`^=vX=E=t6@*!K!NPgih<NQG?B3M;2-50*;KeL=<_pK^ZkHH<YF)BL^sl zF>a_ZtS}t9PXn`+$B2hVRZqk|2)t4d^-e@>UkM*~b^2|;EBh5LcMY_sVU?kFpQIi& ztTxmc>eJ8eI@BncJBG$+|G=8f;DKXTorB#JxlTK~*h+>!iHuR+jz<~1C|BC;=!b?h zG#gqBhZ<V<sYuDEtWiUoVXa|ZI{EWCa#!|S>M!9bXTCOKSZ@f97y^c4lk9RBHW=EI z?{mz<n!OY&K_C1cdGL8S(5+mCdPAe3)o`3)hv5{%X@>I<;5TBp&TzZoIm7dYKN>zU zd~2M7u)cXl6N36y8C#42W2f<Wg!7$kyvTTk@mAx##>b4K#@7&O_f5v+j2RgRWmq%H zGwL$dX0&H?XAEYXoN-3RB^g&|?9I3<<C%=tGTzPjXXfP08JV*)7iBs!otdjMTQl1; z2QyF3{88p*nOA4-&Acn~p3FxxU(Ng=^Rvu<Ps*4iPFgfcnN&9Eh)M2A-btZJ1Cvgg zbo!)=CjENS-br^&dS=q=lir*3w@Lq)^xfnGCNG{`G`V>4VUs<R*H7Lw`Gm=5P5$xZ zUrxSa^7WH%oBYJ&S0=wb`J>67P5xr?f2PcsvT#cN6x)=;r+BBVo6<Aoq$#IQxnRnV zr~G`%Wm9gR^5B#wr@S!b%_$#D`Fd*B)B~q3oVskPb!z3*qo%H%+CH^sDw}%t)L%`# zZtAU5@16R@)X}Mbp8Dm~Z>CM2Hg#Igv?bGuryVxUHLZTynrXpl1Jh2OcJ8#FPP=s4 z&C~9l_UyDbroBJy(`nyiP0h;5T9Q?qby!waR$Z1qYg5+NtRG~ZnRP+d6<K#@y_)q- z*59XRPM4<7o<4v2lIdmBYo>dqubIAXddKu_(@&p%!Ssu#Uq1b&=?_nTdiq<_KbiiO zXb`i+#bTN07mpWD5YH2LiI<Dlh&PLmiZ6<9i0_M^i(gB!v_M)WS)~<HjpUIwNXJVj zNT*6?OBYF3NViJ&N{>mS(#z6Y(igH(o-WUn=gUjvGPy?f$ZO<~+$(RF&yg>Ycgr`* zcgqjUPs?w~pU7X$FwBr=<j=6psG8xOv2I4^jN@mVHshihyJqa3ap#QR&v<3V+cUn* z&d3(C=Va$*7iU*y*Jb;&+p_zzPtU#}dnEg&>^rj`%Km-!C)r=+OwTzeCojjGQ<c+} z)0?wB=bW5Na(3rjmvd9jZ8`VlJf8D(&PzFOMqH`Ji0d>I?@G;iOWR<0&GI_=OaI8E z;IQQlCT*C|U-}OGrSDGcFKzea7!KC`rIFZldH?;SmuUn0uOm~Zk4(!-GN?r<Z)ML) zwWRvi<?xJA#Hr6o*tov@K-wjU-MiNOhe_8E<84R_Q*-7khu76NuUXfzrEkY6r=4~F z#g|^Q_px^(HLnHh&W&#Y;a#l--nV>AK`S3vKD2yf`3pjU{>CKiUTtL3CMI>N0YP0? z$S+zx6|BZ>mM;Vo%RHS)#|^znA!plpR3OD1z=hwwnGRJ%HU%Qy{5kka4M*|!lcNax z9ICG$i-bAVm8<kX1=>r*cRUV4g+mORr>A>|cd&<^VXExzZQl&01(Z|dD>qn>868lJ zuxn-dkAldu%PrqnzO{U(2nu4#HZ!T4Nn4oI!=&EJl?)}*xJ{X?AoLM&5XVzd5D5_; z!c0RuZ>qr9-_TDnA?G}NUNwk=T|EQ!!NH#P&d8G3OUJ#i@Zn({cBHBeZVmBW%I@wR z8cJ1Dvx-XF_*I=<-FT##?|SgfIQ2U%+KJZ+HjN{jK@{|;CQyC5I47A<m#QOMnSlde zLIXnncej<;>>a^iX^D-0GgA!~j#Q2^M>$xSy~py6GLI@pt(pN|HG7l=#%-t<1b_`9 z;1iXyjfNuyY^m8hyAdkav4iTrr>3_bc4AX-5Rn{ei}I|N7-x+L4a%}11o3U9lV{m6 zaSXXjm*(1ex*}C1Sa9RUZYhdVjQvN&iW8D{1yNEbFzG}l?PStPdz2Doxl*biXzFAp z{eVeB_=Vc<|03Q-IYK!y-FO?NN^wEODb-A3!wUAmPnk%?DXT5pl=_KP+^L@Iz2CQn zt9@YQ#>2+daASfq5)@E^-kFi0cTUY)*|$>tOzV$LiWed8%27-@eON&Z=NZ(Bi_x$8 z(cSq`N}Ny(Z9<%>?o@C`P8BMx#<^E2Ym_!+t+GxzS~*5RP}Z4DI*UnXGwB>Aoy(;2 zm~{RS&Ks3RV%JD(Y((6!dcZ5xPhpyR*sGS2q91j^$S>I!M!rc)r?+hT!bXR4@SxVd zut4YaaC;dt7DPCCaO>Fe95vY0zL{J<vGJkFi%yPz+%2F3@-<2%*rVB<q_W~t)c0=E zEnBULyOhn;#K$q|N5jT#P%UWT`J_g|q~arSq-6E;eetly*QbOLkfI!~Ksh7y^d}<} zjY?sts-o5b>Jh*j>d>Z$MQgnJH<5XPBG2{6K@I!_<#fSut#YEWQ#naFS^0r7q%h?a z<y7S~1wk)AW75x=bTN~D!K6!=^h+k~V$!debSaa5&7{k&Rn8Es%2~?U$~nrp%6ZE9 z$_2`W3i{kIg|v(?X*ZMhFzIq8|B}i0c@vZO;zN=<S5x!Rh-e?q&<(gLtPLSFop|cF zGK6!ZSP^Z(>AtRTFNM#B0(6=@QdgXn&z3VHlc>58kFzOjW53Le{6T(P_}SEqaKMnx zJJttx^bR6&cUFQN+Wef?$J1$FtEcoj;^Y1hyufEQ#4J)7s0~p<-24zkj!kq9Fii7$ zJQw=wf$E&1rs7izW|s90!R=jJFcA2J^1Se^@SQLNJKb*?3`48ddf;Jn_rP->&K6)M zMZ~WUZ5;6Tdb>7t@^jD19-Nd>E@#pe`pHb?D&;pYag?i-Ym{r1>y+!28<=z@ldfXY z)l9mEN!K#zx+|0$m7A2k_<0LV9O-%{-N5AS^ox86^|!cM&Ea*zw|Uh1LW%fiwJ0z& z6+VQ$at!~B+R0vQT1V4)9YT)O0MG^Kq=VfZ)K!~sqR|^dgi&~a_NGx^;p_~po8G59 zgp--d{mKK%gG~AjlWt_vO}mwcjUUS|GHEYPO=X@=-Rc0U8D}_>f5dXg*7_R0RQnfg z6z@P-Q&+q837?Oj5<a_Jd0Kf!c~<$of{FiTCcVLAfyqmlTs`D|MR`GaQF%#uS(u@` zqP(j7L3vI2qw>1)hVrKJR@N-#9fWjrM2@D!Suc(1agfCup;PFj2L-|?VfDyne3yV+ zVf8pjm+ApP_k@P%QO__$?4ZQ-IdR`oKI=3In!T7k=WBmOCk^<g2h=OInRGjo5Ils) zp<9^rI+OlL2c@LPUsB#x{;a%*LcXtjpnRx&r2IwstMWGiCp5FQ{dMg`_WEcz4j;6$ zbPeOhDOS>={Bv+_33l~FlhY9s8ta~o8fNr6COyEU+nDqalOAQ#twV3(wqIQn$JH!H zjRr*P@!Y&YKcfcyT=_!zQu({`4<`MVNr>ONn@RUF={_9(QvRj<8|8dWeo^^mZ8ZO8 zRWhm{vhwd3XXT-8=UN4;0ZtqY=4hlNKMASgGzGi*N32GQI2$)jL>g-*bm})ux{Guu z@=mg)uce$OK13<+VHsZ{skVBGd@D2%4lH4U(Krs^*!Qa+#xA{{r;9v<FQz|Xohv-X zGJeFQ2Zs=rf%^%p^Q{MCU?;gYWyHFG3YF|D#PnDfS#zz6*Y-h|^U7e-BTPd0(4qgu zjUZg2CDx_ucm$T(yGE?bgmtkW@KgoXLYM?-mAD=gZKC+GG-55H!la!Z<?b8YfXgg+ z%&>)D-k{yoq8+f|s!!|TN>gZ4FgzI6Oofh6M88=TYlYyr2A8GStahuzT5K(`F1MCi z%dF*0`W=&=WYSYidYVbkFzHz)A+QSCX_QINUt?WC)_`EL9+7j=qJ{WxrEwdRUQo>g z7z;1qNGY4Pj*hJSfm<90MKkBZDLmX96DRuT*e{`(Y4Nfp2%~9n(y!@?g(|wF1MW*4 z%}JWZ-LsXSWW%gC7NuLAgmo2#G<joD)EIenno)W;Zo~~A$&h#?Jx@j9$Ek|s931HE z?MFsqON{vb5bcj+iHg<77&*4#lvh2Fv3H2TDQgoBuUcWXzc_?f-01_q@Y$Y4#o`4- zY+5tRc!mGePq$jvS&zX|$a*xBULLl>Qh$Y(LI+icx(9;1MfjwySBKU|HdsT#>=ENH ztsO&9*{_ZmFI`kK^dy^xu+R0Hny(M_Y#Qj)I5t~*h~paTmLc?-*T&(%OflHkfdz&( zRjQh+po=v0ib6h~2CZAMu*7)cQpU`&Bi3y+c9MQKX416oQ2uB=(YjN4(|U52q`bo< z{2$ZMUzh|<g=y$JI<lKE4OvgIo~lhlO!|mPZ^g_GyyDLiKD)wtw)GtAxz_Wn=UXpe z(%VeJp~62i={+XB&!i7@g>T)#)!;i36`NhD-a$lm8z0S@y8Jm$_bykLJgkLMg|!56 zx?1}%UM)vHO{$Ks;`kq?RL8?y9WzxOYt4F-^=?uYd#yKHZ?WELz0LYt>+RM%tan=P zV$xrk^fxAb%%o44^eK}*W76kL`hrQAApU-h^`3~bcp%emeF)0p5mFZa(3Hhj%z&Wg z|B$ly=Kqz2dfAr}hW`8Bl*RL;EM8#JKQ(3XGL*%FBP1UYoB9aLT*!Y$mBky@w@6uF zWc+K`iVpqnG?m4ltsh|MTi-Kc&Gz-s6C(?z8ZTv2Zy9=WjIzk?*80^a*3Y@R_>9!W zw@?=grb5AhD^bB<p6t^CrdqqYyInmU)lmQB)+-3C;Fs{I8e~P`*zx}_jQ_8#|H1hG zcG@Qx|8gdce|ZLz4K)7cJe<@|9RD_>Ekhswvdm;-;`p~s!}zyl*{0h>n`D!1fXiU= zBqmQ`@-!w-XR;U_|Nm0QotzmN{|7}Qe6SH6acRbB0^1zb)RHH2Q!7bOP-K|f4klZY z$y2%M7#H2BC0RV<D@u~ZGNJ8Y;f;wd9Y<x@in!=fN|lk#RmQ4Vm0>Hk9RZbLE3qxN zmD<W|<+cjj3frN!!)%8$Ih)BjOg@0g2QqmklV>q`Hk0Qtc`lRZU1K|vs|;I}t$Jpk zV6v@(%8(C=s0{gFCg-xrE1@#v#s9A|zJHZrYlh0OwJ>>pL}l38pfYCuFnc8tn_R&% zKj%Mnm0>&9wgD=`7G&~*VOu+s7pA8&Y@2MyVffoRp)%w}P#H6S4wW(ah$Jc_Z{=d{ z(2Qsf+wrymRdd+F&>Zq1&>S;=4$T4PM9s0jA7|yahBV7!jCQb{sQl4(lI>*WP1{hG zOxmG9)ebf$FIBZe6<y_#U>(>_v;8ot9jr`VHby&~gKD##Ydg<&zU=}g=QFvG$tEUS zbe&*3F(Z#gWx>$j)j>HcCNhq;;p5c-Hw@$=J_=)!YGZsCR|96Q2Gjsa?W<wq$CQx* zr-gI}|0c5dx`GegQ{#s2HMU!6=w55P&UU@+2HS6JH`;Ep?X}%(yM@ViCOep1%;XX# zFK2QolgpS~&g2Rvueio`TV&|odEn{=g&4Z`($GCr8@h+HN$;_#PtnkI{{PVZUl_XZ zCJo!3X7XX$(EYtS+b=kB!4V6Nq<Mboqx@%d=)P=wm4@ysOg>`R_6H`br;;aL8ra^j zy-h>+O&Yo@X}0&$Z2x4Ep{tG9_iZ2X5&I#H*h-q~y)@U4wGZGM#l2<ZVdTfK{K3Ay zP)EVoiQV>@?Q`1~wl6Vs|6w@8_7#(BncT!=FOyyB(A|dncjTku+)K89+rEyDTo02m z^Xpz8)vmW2;KQ*S?HTq=`y~5hCa+?$o5^)du4i&XbohS8hi`3U_|DYU+&BnLuE-6& z!TyfO2(-(5aIWTqGkRJj^1U@}1KvKL&&G|ZW@E$oG^B^H>k4-YT-xouTNKn^cL*B@ z@jEcZicgnQS>wi032h%l+s%kiuOzq@qTG=twlA~WaL<Z8-(FxZv=`Y;cC#I~tlFU- zeN6T<xtYnBSX!C9hRJPAUd!ZlSKIA&hrQTdf=gRU?Pd0Ic!A}kncT(X<Cu)r>t=Ef zlY5!m2Q>nJ>kQm`0e>Q`iRgC1@Y=P#y<2L6bkP~^N#Gk9?rMK8o%65j!H#KFuxD#9 ztQ~c4Ag@B?ni4o5aP#fft`0itI!{}N;%b!*afkk}WlmsDIt$o?1#2|JbybiA`(?d2 z6pvI?KcNmkb=|F@?g&mbmi*cLUP@fB6WK@L{mcdX(OzR;Wv{in?W^tRV8<{yz+}v$ zm_$QN-h|F(xC6fUJME2zyAAg+dHv7{csBCH6D@X!!>*JscQ_p7<+jp_(&e~*!)~`J zB_$OV_VSAIa)-_4D5IM>92LuP(`|WiS(yXLD#}Xj=3GZ{dAU+jR#8$>ZnsyI7u!m4 zZ$~62FVE@N@p3A$D<$^wGJ8d-!?wI^x!qQhGN<K^Qe`<3SCp17Uk)>{ESggb&uK$U zPS|gDl$Ml0d`DT?@?vvt@|=pxQKpI#TZN;f%wAklUV_p)#>r_dlQYC-Lll~yRF z6=k@W2vuNn*h(E{Tx0^w^3w9s;_^~kIpv<Z`YP<jirrpXYA-If7nhaWV+ysNXSGqw z$`0uidzr1Q9B~2oXGis0iXA0rsnXKoGBi@fa==mjl@yoT6dT&BqN2QPdAYq5r7CtT zFIOC8j#9e~@>QT6qxH9eXVs}?RaQ}qE>T`qf%Ih+rN#CNwNw=jr5wd{EHAN@RaBIX z&8oB%^^rWQydy`?erfb~C;v<v;+yQ9{PGpV5V$M(*rKr**{8$>2fS~0V=A(5Ve*zC z_u9H9zh!&7#nxJycjWK68HeTEiH_yPN-6rq@-pOabKp;O;bL2f`e7;VhC<(5UUm}4 z3)5H`un*d|+PB%a+jlVecqaEVIn3k%CJ!=sD>CXTZMXP5mbQw}T6cGoWqXaq)7rmw z)7BnK*J?}C3B79@y=yH!WtKIYo7cA21ueF6%eE8x)~=~2wbb=nihJ!xV|OMO!!(!n zad^h3VqeRC8k2Y6+Bf?d!VLSF_Osxg$BQr&k}}3I#pDy1{EIP0Cb^*O=h@F!-n3sB z<ARcZ$Ycaoyw2o{lenPlKe7KbI#odi1YjggRllTa*=7Hg{Zjj{?U&hynS2tHPiFED zm^{Q}#^h7<`6}K8rA<6>{wD3i|IWu`znxD}r>2^srYG|;*&nb!1*_Bkp#35H!}dq) zkJ=xzKW=}*{yY1VOg^2-XE6CpCZEORvzdGjlh0-Hc}zZ^$roH>f0|pJ_UGn3e(>9Z z$^If)ofm3W=a1QxXV}zR$?E*s|685kztw5~6Akrunf#-O)oFhpR_Bc098gHaG9PD? ze#C#GEAnga?H}7eh1F^Qgvl2T+dpISPtsd3+W&6<3O1zuA7pj@bX*^kmeaQmgKBj; z1hP7RK8}Z}Z2+63stZYVK0Bs5rtzq>xG@e#fBWVUM;3XXDP(QzmoQPZ4d(#=HqQQZ zNDetVsP`}#@eT2V+A$M@+A+&9+cC#6*D=p=5R-q!<V%_SYbIaDWQ_5V|NBAhu=7E^ zd!GiiV}%2EbqzZXW%3onj>DOJC7EzJ*h$mF7StVcRn<D2#<?SoN=FrwuVV5IdK`hH z#<5zMz1y+MQR{#mel?S?Ve+-R9d*WSjs_-Qhk!ZxdfZ43)aZul(ezjJ0>NzjNz+tA za1-t^8SDtP>1~&{^2`fk1EU<xj<#gktrbiT7^c4=MRFtcSGp)oi^8D$_3~D>-ya7Q zbZp>rWu!AYLXP7QR_EC0*yQMRz{0(m$yid~%H-SjI5s=FjUPK;>i(9=cVnS0<4*TA zv<4!v+tfe{`fV-Ws^K9h)B*L1)Z;m{+y)&dP;Oft+Z@{+m@sc=@*PaRlgW4Ofx@&J zFGWZYZi2y*jRyv)H=$$KAGH?RM)470Z*ZF$P6`wDp!jbi*Ziq>v>@;#?n{*&rg`*M zW$@3AOQNDvP=Y4w4;|;@PD01&jx!u*I?i&O?KsDAt^*4G9wy(*<olR>Ka(F|@`Fr% zh{+G*)=c_m#C@6kAJ_FL2gN8w;*{tXZ+&yV1NKR{m#!!d1?#&u^drzAa^ao2bH{Ja zOq!bRo(&J+v|N1pqEzTjSbX3+evL>3+?*<L1Ku&f9#}9wIqe81mjyKzpOh~AOq$d; zxFL+Ek3(DH(_2%e$3lp%2cvk7c#f2^YcYGV$+hMjcHpIwVaEuQA02i;$2~UQu)m6i z{nZW(>c^S<WOUeH@3<-1INXb2k5Tgk4g22><?CZ4Z)G?)Zus5dxF;Dud{Pedrl*Mi z>7o4S(8^oMH~>(lg64q^0hvK|&<fCzprb%7prb+S1!2Lrg0L_Xlmi0KLR_h}&;-Ig zCJP;)5>N%`P|y*em7rG8$)IyUBcMH?D?qplW#KiT>p(YvZUpTG-2%D|bUWx-&~u>Y zK`((`1-%A(1N1iNUC?`=4?%wgeJluza3EmOA`r^5s0y?ebROu}pu0ifUG%9S<W2`6 zWIY#YbK!B#MYw(LQV{rZ6%fjli!$Y+Ou5Y<VB|us+=oDqf*uDw33?g?IddUbF67CD z9Jzl7{ZqjG7$D@ccqV8*C>K-+0`B5kkOzdiUEBrg2K9iB2Zcd{Ak^F9GeKvAo&b%4 zkjLV`fWAbN89*XP24#Z|03okKW`mIVAt=)!DAOVNAmn?931k5s2f7-By30eFyhae( zDeqX&2GC~E0B9@d2O!9h2O07%0__4_3c3=6Hp|-!x(jqa2z8P74hS;l5%ve5k3guC zypKVs_q@+RkUj4og0KX2vqS<Rgm(%0)RF^1kbMdI){=ukXqzR6fKY}dD8rJYK<9vN z1p#L%%DvPHLY*zW9Q39jEXxAT0WAS70~LUZKxU8vLc1<I9CRcIyvwRUF3>8F8&n5c z143OaLz^t?0ri3UK`8SwlzG{0Ae4F8<DlPxo&r512>BVHY|sH9v_n41k`KIm;N_zq z=A*6i*Mm@x`Imu4Kzl$}fY5*PQD6C}uYA;3{>Oq)fVL@syamOe<)Cs9#%94`AYc{* zK^>rtpia<9pff<1fPh&5Sqt`pZULdr3VsW^14P(g3qm34y%6<Vh`K67T@_kEhk{mu z>OsvQl)rEgbUp~O7G4hmR^gqX$3Q55A<AF)Ea*AV^Po>aUx6r(Z$RG(LJ{ht2=!4k z7ligLnh#n4@`3^&v|&*gguIHjfrdb5g3#VY=Yf6(LjFb9f>5TS`#=wZ9tJ^<B8-os zCqXZOUIsx|6uk!e6!bahOVHmz{{;O@5KIaPWi=fELU~Q-2PX6b(<)Fqs2kJ^f?OuZ zWr8fGvq9&AAdl$+(2qcmf>37Diy-7{dJFU?(4Rrb*MvMx$kX(1(0@SRLd{MAWr0MH z3_?4bmxA&^1)w638HD!5s~Lj157ZAj5p*&Lbz_DMxZPba{}}XB(9c1?0No0@7xVz= zA<!eBKY;!SdIR((=xq>Ww4g04$k&2=ErlQlXgR11R1HF1STH6m^`J&j6X+Na+RFmj zEbSoFvE>8M*C4dD<vRh#VL%z6Ng$L}nFg8;l0dm2^f_e-2z^dLc@>mbL3tIliDCmm z4y6QC13C({9ds_}DiGRSc?N_$737JCKEav;IuJAqGzWzKWt|T~|FSLu0o#f)St~&( zmle3yTF_;nt3fw`Fs2c<Ay`pg*2e_F20k13Y>>$YnQUi*P|r5hvkmoZ`y7O_!i6r_ zQC2&~w!I6q8MFn2eqnzWgnGBX4np1A(Kqbqdk!NAb>l$YI8ZlO1_=(x>VQlRl-IEy zbS!8Cr~|YS)CoEc)D7AOIt7G2;J6sH8*~HcH=w&g_kkV&Jq&^zj>kbSf?fu_3PPI| zuLiY(kXJGCDn?$#$g3Fg7eoHyUeNI%^!?(WfPM>l1@t!PUC?`=4?t-1k~yGU5c*O{ zKBy360-+5{mV?SbD?uJm3n&0WekI7S1Z68hJ|!oB&H$YcLVhK~puM15Kxmti+d<Gd zB`9CXy`cL+4}viEN>H|vmq9373CdQ2x-Nm7C6Ke^eb9%Xe}KLMVH}qHM-a-Lphgh- zbh#JghuMR=UxE5qf%;eh`Bp%_6>oz63i=rIDG2R;`1K&jayVo;9I_k^S)7-Gt_9&c zC)&YzlOR;0|5R3h4h0<!I#Lj-e+PoB)sVFsvR0#S)Z)LjsLNW^W$kx@;5LBJr`+fx zZuAj1`iOfvNCM3O<$#uf3P435<l|OA=%;Q62=(qR1(kzVfDQw-fwqHofgrQ{9YI(< z6$IYZbs+Su)u{i~7lQtWr2CGt@lf{w{B13Ii0DM`y+?==-53TL#xTn0y?4gwy&EOE zAfzb~iBwS{LX?OSC3=+Tgb3k2XWc)Zb=SJ*?EU@T-}`=Z*SYtuo%tlNh*fOFYz@uU z&}<FO*6=gzrJ=nv)J4O6n62SK4s#T{X{fV?<_b$h5|Uw-Ftdc2CCn^gxsfBR6f%eD zEKFx%wW){QgvlS)ni%XR%x=QmPFOekFq$}~BXigq*0P=re8|Uq%4W9Ww!-#vfM1Y1 zOztqb!`xJuJ%!m*nEiyE!!3llokrQQ%SIiTh;ADBY@<6t5N@vUqLjl9!p#$I2jR77 zL}MawbK&L+Z$T8DF-v$4defKw%wj2K3O7@@nZoTO+%v;JVH5TluK)1gkT+c3aCyTo zafLs*&XXW$oP?~Hp>a-fk%xSEe;XH~2*oJDJJhBw^=XJX8k?iBIU1Xzu{j!>qp>*} z4`u;ha+()G&?G-T+oUU#@b{{TT{Mxs$rjvF6Yo-!y_lnkoiwqNCcmK9CTG!olZ%+A ziFulsCn71Ykr^{Zm?^?7MdZaZBMMRhJBX->%n{9rq$O==OM7C`cZ3^?m`?(W(S5`U zR<o85a7z)ok8np3GDrNx&m80sN3n~D6P&_6BJ3l=3=!_9shmySPty)e#4ekfv+126 zXqJYel*9crt4tMY6OPWCnW34!o3)}fF|@<?HS2>pnhjzoBN)XJ*5g^tWN#*Wv(Nbg z?{Bkj(0McYo1H|@&2I1)|I77|zxjuMgP?f|GEt0@l%YJ8c#F5GfxB;Bmj>v%xs1&_ z(i!*Aya&DM#{dQ+ck|&aM8@X7^DGG7%|#u$GX=YNcMrdCgkv1%53X^O+uY*;k9fk< zAc#zc86s2jD()!qb<7c24Y?ydE7ILYhSP**yo>yiUFeI<kz<&^B&ITpIm{=4wQS)> z_Tx?>?c1+A2a)ndx{=5;$Q^kR-ADc}qg#o5@&Er3yhS4aH7UtSiQFyZZjqi0lt#uD z1M$ojJ2)Q%EfeE?XjzlC=)9%QTk5=}{4IwumhntvGG=Hwoy9C=1*<Vf%k}I=-z{Zt z=~h~v=6}zUz2#-DqU)#-$&fiJ73t7(l%Av9PE-NPQjdn{IVytYxbLV|w4oi|Cf zU^F_9k~>Q7D7{C?95n;oN6kg|QF@5l%2ECff>xQSLI=#+$~>*i(&_>?xW!%W<Hn;C zBY$)X^c}75XnjY^A1!}$7R(S`81F%}_aM3q<uFII_cB`U=uYT8x)*)uk3B_?L*LPJ zkT-f2>-c~V*~AvMv7NoRndocW#BE34;~|f6Gtq7)`ehKbPDE0&k&|5HAs+=PLUCkn zEpuy`TUVeN^0n4o>o0JZZS1j)Ios5xBk}0F%?xHUm-l#|^=#y0K4mj@(B^w~VTLw8 zae!YiM;q^C8@b!K^%&2J(RqxUiE%SAX~=>6F?x<EN+qgNjhfV@K4G|_m^O6BZO4ox zj<HNY-!ape$ud^5hIMS<Bjk?Jd(3C-MDCb9?DM|{^NhApMB_Pa+i?kZ)Al}g(bg{7 zxzTo>(@sb2W}&0@Zsvc#)zV&<?F(U+_8+3>_TJa_U-MlMbf|^<>0lQf-lZkyxQXX< zcz}EE;6^(<=VcJY>MhouV~bH99mQ6r3c88aORVpVZI1l0^2f#?e{45;(wn}FLSM1^ ziq%)F8Dh;4YlhhQ=q*-nv8%E3SUZmWoG&p$tj=O}7HikBI*UERF^+SRE8O4~=81iT z&SKqf?6V-~n1okIK`OFfwvM^cU&q4eu44&G@h0Z%_%_vPL{oIvQFk5fsbgC@(2-u4 zvtxe-;+{L2rQ=#Yz)m`Tg1I_=#&+zd<2QVd**co7<4+vm5a#G;FCFcr<3Idwju%1D zDTH}CnWs}q(vXe}xQ9+z$-x`gT_-bjGE=9r=(Lk(b=t#^><@y@_SU&8?z^*{b?y@c zU0%g^bnzWsbks#hU1aXE8#%k|<L4mg8jjC*)kjx-bk#>!8N2DYn_S&|Pq){w>uyU~ zjy-o<69nCB5kWKb+Fh^R?XSC?bvJAG{{p|)%w!g@kj40(o@VK3FFkAGdwP0bdzz)^ z2~KgEb3xEcwq9oIWwu^s>t(jy`6)v=Dqz>Wui<9;yn;^q$lgb%eRSGKr+swVM<0E1 zkr$uq<8ytgPz^cy)TSN{(Mz8uxS2j3@!UQMY(#&3&hu9g^i4_@^56#h7NaEc^_8!0 z4b0cK4lDSGPjN^6QXpGD+4^Nio_=!lYm8_2(``T9_A__CK@4RCqnOMbzQrB%(_O!V z9O8HW#2)%R=VcJ|PlT-flaq?Hq~~=CQIz78!fyKOr@uV?_0wNJ{ms$;9p0rKlX#Eq z9N{dFgJ6J}2E2xz2k3b~0rWCJF9S-VmjQYi;QI#XWq@7==yyOr1~QoWtm1vvu^Z3u zkAe>d9Oq#W__qcF6Jw@<`6x{}<Q`~e1KT3!!1ly4k_qT-;525i2+tY#3Fa8MgKzi_ zeGWXq4czp=yFB1;{^1!ff?!aHBxEKVImwMog9=gvy$;grAhQpWagdn@MPQ$Urt<+m z@C(=YHwXrsZE!j=kO?<3I0t$itk=Qbfx*6SaCs^+6Z;svoR!EpL^nh1dx-a8NJsji zxFLgaCqvHg2N!~1Xl3fsfH2mgm!V(rHF_DUm!YS)$Q5KAs-L0y8LF3Id2mO=N>Cbi zH0*5}5`$d~lVeyHy3>ok3_zw~!_ddDS<Gbtb~Maf!^}0zu7<sjn;53EVfHm_4}bA8 z2!>~;0ySw(A9Or?0+X@#;d&ZAhxsgIF}`p320jde5qck?_Yry@krCf9VkB|IWBw6W zxz5cX7+H%5niI*Ve2uO~?hJxa_BP7CM%n);os6=xQRQfafB&c`WF4iSQQhc|Sx2pB zBOl{CNBPcChd9b_oa8j;xWHxp#6CtnM<1g@B;gfOk_NMlHrr^kjm}JN3Q(A0*xl&2 zc$@09!=6Ul(`ea7+s|m7jb4Jij9$j)n0NFK*vIG}k#n?sqh%U>7w^vKzj+b_aWchu zc3d`cB12q03Q~mP=qt|s#MPlb4GBlrak`FcK`YwOmiD-*xFHN@6k{02M5Zu}MaUf| zciflk<tKhd*0_f}=AR%K^BTFZzcKl->oJ}`#`DM6-57T}#xurv#+V7L;uGv^%qF(* z72mRxUHrlc>}$*|bTdXbV;=D`2;x)Ynem<(Z!huo5^pc@B`JgVJ-!lep^tcZ;^m3g zN4!4b-BP?h;yciZE_7oAdWioRS>n%P&asKefxgGSNge7FMq`@tE-mr>V}0LPJ&*0l z9_)FndmL+~alT_*RjT719QPjH({Uf-x#N?f)A4R^y#0^w!${(Y=XWlllkxYsk9|zg z$poL7;Cm;?HbJ%tvQ04i1oKWX-vr+?!S_rUi(O3czE8042{W0)d=|11Ste{^E1%;I zCVb6zxZw%A*~=l$@CO&U!ZmJk8#yOD$KED}h^8w&=!Nf?_$$Xb83dC`<Gq?xgLhcU z20r4GAefwt3}hk;6{v=JCpW^rCpSU=lLs)EVc6~DiOgaLyYTGEKk+l3Jz3_-GEdg) zWSvg7`^is{f3o~j+`*Kjc<z+!yg?rFQ;4FJzzkE$;tr>nWlBTjni4^CTHsEmw4p8T zWQsjc>BoLfV9!(ZI@Nbftx0X_vJ$(QYBy821i`eFxRYtw$iX1SGJ#2)=Q@95o@q}o z({!^;H_P<o_>SorG0*e{G$WEI>}z^wbUA$@Q<#n(r_W^pi+GRatl~4avx9H=9(_;W zi@v8H;1>>aimS*t{V(p|rl&tb*6Fg&u=5!yNJS_5W6l{v@EtSGV$K;CgJ9-c)I;Yp z-NVdvY~^#l2!dJZ$VqPUG7??QGRv%a%qM{rtY$6i*}_-+$z2}sH!{xF<?L7SeX|Qt zm|~Qq4CSeWY_r|NY<Do*9n9A8Y#q;TO$_bnNEf=%gMq{|o=Hq)2D6cOw*F_!Ia|)z za?akvQGUZ6&3+UFb3!B`8SZUPPx|2A=D4>x{(W=Y+Z^{cw=C6phuSP<0~`4ew>MXp zb9ZroLwMfYWBkEiya<AMo;lAm=e>ganwJLM&&xn2vQnH<c;>tcyh#<RQ4`OfSC{%U zMfQ0e=!Cx^^Yk;XH|Cf(fH90?0_V8NZR~5l@0hRe`TCw8&1dYy-?91ba={xE!_F3z zM$ZctvIHG0(Bp#tf*`>x38_d;S~8Q3oaCY?<&ZT&#snD?WK8JG2qyC$%UQ+y*js{r z6Lg!fiLK~3;U{#QpyLD`C)jC%T_xC6f}2lp^9dKZ%q^bsoR>kcFcC>fj=T%?zfjJF zaxRo};ZXFnP@aWmU3dvSEqs7k7lji|4DHyCt`_}>T#NIdtHot7@8TIGum&?NUW>UF zn`g1RT6~3T*vVp97kh7(Btd^m<XR%vlHBB@AVnxnDcr}BI@sZoFdE|?mb^<#<Xj@> z5;>Q+k0m-^GMHhEB#yC|cgZB?W4B8dbDtMM@Lq_-w4pn_=)*qr{@zLSzEqZ_)p>{7 z#L^SbS~{E&jKcRXU5P%HuHysjb?Mh!$8(qJd8r<j+S{^ZWF-f=$V&kVQw&`%)Ah3Q z)T1GdXhJh0iJ~=bZ&`a}TPEAGK@3H<Wuu8_9J86n0%TkEJ-gV$CGPS7IhVhNT+8#4 zpBlK4<#w@LhUNCL+#Z(O!*b7F9*etQK7?^hXBKnO|MC@l6a*_;&<ee;Xot_O=u9_c zUttF;`eTL_W>{f{6=qmrh85$n&lT=>#SF}|!aOV7;R?H5u@ui)v6{8m!HN(0gw1@$ zc6RU$=3lXkz5K)h4sn#<a04q&bB+sK=1*>L3w^E7*NVUShiAM9f|YJ-WfEQ?C22@U z1~OsqEA4%yeplwj-dEcD%3_qH4CSfBTfB|_SJt8~4R8x9?O|mz{tJRt0q%K~yIPfk z)Vzv4uF6OjvhxOcu+vqAC`t+Z4O~@@id3d5)p>_H)F+I_H051d5={*4=|~s4(~G_g zU@*fNNgQLDz+|Q|lR3DPRSQ|dGFGyNb!^}xK4lBr_=2zamYwY8NA`1&!~Du|PH~1m zxX2Z*ag*EJ;~|fEie0Wwj{U9H<!W87p2$2FAm?g1*A$>E_O(WLYjn59-K_EbYyRXq ze+9w&I(okcdU?MO{exg_Zgju46n4JWcdUJ%&1}VtYt6XsP3lk&yI<D`J6|u`dfC>e zB|VE-#|LcW;~@B;I5K@ug}14}&&c?}@95+MoowiYOdAGbUmNUeqnp_1GaKE(#+uYd zw;NBO&yC)Vjpu^k!=X%I5>uFt{yx&*M>2jS<45}YXf0d#jL-Qp2tH2AYrIY-vf>^- zeh)YB@d{Q4!6%u?PeBS(jHPVgL(KZgrXcvV8exRfgl5S4=~e9e(;M6hf=wflb<;Fv zFgpk~+s9`6*j$P-*vIAr`21$GZa&NTAlTx5x6H!LZkb0y5NwreYdI=ViMP<r)|+_V z);rt}g3o;JGr2!oj{E-1eQ)#JZJxW$bGLc!HqYI*hoc<hI5K?RlVOZt6k~#5dvWY{ zdll?zyZvtelD+K1zP29>f-m&&MLRm+J^i8!X8J-WU+CnEzmV}u|Js-R7{DOx_Dlcz zmyh{}fB7#6c9?sI{5$MshnwB8J_x>&`>UGNq7L=h$uAtnJYW451Yi5kuieYnldyxY zrw73|X~;$n-XIU|<Qt#=W*7SS#ysDar8=JTt>=7O7ytUVzW-a_|E<2hb)VmLX9)WG zZUm!||9kiL{VSv(HSX*CkNAX5Yz=~)bMfEbxeEK)xh@EPaC<+L!H$2h;~(B+H%Ist zbNz5K2zK=+j(El~5zpQ2xw}1gx99Hm+}$$mp3GFtzuR5xe!$Bh*b^c#$<WmvUG34; z9$oG6@7?=4`q`V00u*K$8!^jXv+Ug*1V1*Q1yMv3!+l-^fhvQ2iI8hwFNWit*r%s` zvj1csKV`!{etHAX`)Ms(u$P}c=gT12Uy)kWp&kvfi~VQ$g9}^^f}dmQi++9{h}|6U zod-%%8hbsU*8}VE{Re#ifiL(f2o6>wjBuLJj2}71arA!hbP)W~oc4IuFP-Qb1c&r} zC=*#Q&!L<w<bBrh0sej**5hFr4!hyQW;*PhI{Y<1@iX3`!{$1o(<3d=>5*u3dSoxZ z;s%bK;P)UnYG+61GM@w%2f?qI$cJbBT8N_T$7g;$g&BT57X-)5cg(wbY!LQ;Yy|dl z%wCR-$1NP2$_!>R4|5zd$FYz36#GA>$79>sfmx1y$4+)}o)<yzTV86@jah8vDEETk zxEnYw^YN^>gX3=?_i_6=UXF_B>3CJ_=y(m@!S@|+%Dc2gPsjCi+)T$uA^UO9I<BAN z`Z=zf<4al2O5{Jjg|GMq9UVW!5ssm&<GMPotK;T4eurm4a3UQUkoknnCuBa63p1Y3 z`3djIiDHzb7ImplLmJ_>PRM<tIgvym`-wITN6r)SocJRMPA0<lo%FerJ(-3boZQT3 z=>6oE{J_urg8V1tKY0Q(oHWD9v)teocX`0yJPCqRuj3s#RgfaceyTL(s6ZvmaH;_< zXpNpvc?V8)rYk+@#Ym>0<5R0}|EJcok&oGg-Jkj#xletKyr<+nb)1v@j=ZOIe(Dle zxQ6_v{tANMljA;q52H8s`}-H1;ol%QZ6~KIQXO}4x(@Y-pcSo=|8zS#(2;%&WC(U} zdK7UiWdole`)S!vd)Db4*wN|l(D`XIoc<jdPG9FXdOoe^(@%KHb6y0&nKWdh6lKxz znK!9IHEQCv&&Yhn&727*7G0m|N_X7CnLfyUW&qydGeeR6%t#g^=NWm<{1*gg?f0zj zJL_|2-OyS4IQt`q`4!!tJ;??1d{)nA&2ZKXXYcbc@XzigG08|lYSK~+`Om$L&d=%m zoM)YDKqDHX?{n_uTyNw(C+|6V&*}MG9Ag>JJXW#|`OkgDx9ns$GN0SeL1aHC`?+h} z<Q8|h$N%y^M(^jIq4z)J|05B(sD@7en1KEMafk;&a6Uby(fN6|e!dlLXp8R8>-)Sr zIX{?TjKB=%<CxAY+~fHLEMf`Uk^THn{LC-Nef~Fee*Smd%z2%k*ZFxjeEww+TnLc_ zU0+B=TGAo^h2prA3-08Ct}nQg3o>7bpgFQ%ko|(}7uuok3;Mn=oRN$s9-Uv9#1!Pe zFq7GQ%mM8GqE0Tl(TlAa!wT%=;%P4PCpVD);v@bGf=jx-lo+>iN&ZXnUrIwZa*~^T z6r?cT(M!!}iQJduzSMz^bfFvaU()xb$;?34mvnt;A@2RsQkEn8r5)JmrK9NilAbTg zd+8h(xQyJF<i2z(2rldTvaT=7dpS8Nk@xbenE!GHGLZ!{T&{$UFUxaz89VWPSA6bD z5$fZ8z0!yN=>N(P^mk<ny1t_8D|48~0?cvceb%!Pb6nZP7R++x46<L5{mNBtavM9k zaz6<Cw}PvQaU)kVk{MaAx|geY$WKA+@~U_AYD=Ptp*<bxLU(%6mjSr-tJ9G8>TKpR zA9=4X!TeX<#MRZj&pLK-F$n%lN+H6~!=DLk;~4jN%5z=@!8JR$roU^tzLtrs<Usyw z@?XnG0es)J^4P((w|JWxnCV(OWWVNF*K~eO=hxi(HSg!Oc*Y_BHGN-`_nNM+ZQvs| zvz5>Jf*+Cd+I9Zo4)=M)6aMADz&~=H#3Um-Z;+e3=={38*NakuQj|sh>lJB^j<4(T z`j?yyf*Xk_NF6#c7X9DQ{|)zYV;*k(##%n$Lq0+N8}i@S#t-aaA3yU8hjHsSbbjMS z5ZsjerrbA^lae&Niu^bAeX}UVsZ2F$P>cFBB%CI+r6=)>XA)DH!EEHcY410^qc`Qg zxq{Ewj+t+M#W#G<F66$c`<weYfb2Jg{VN3}@XWskvV?EZ*<a6s;FfpumfW}Uqw`xu zC`%ROzg3gk)T04mnBkUp;FfpbR(m?qg>Fnl_FId1k7cZ8E$i8UJGmwQEj`~li1+l? zQBH7*Gn_;3xAcBHE$Mlk%w!`cxyeUC<i1@Td2h>myDmDvt@GRR-j1Ld@6wW1v}PEx z-u@cTyc0qXcg%UG2UC&z&L+0v&hN;7XD9oS|IT54<v1t#oj<vO8SdQW0gr;<t~u_$ zf!ufHzFQdkxm%jDl&2Q*-*xAAqtNwTUEhtR6J6<!?05BjSI>8svx@hT_wGhMM((?E z-<A9Bm;AyJ<h}bFI=?ILUH5SJ4=!+-t6U3$dr6S>UOhbX-b~!#J#*fB90d0>BKLjw za^Jn&*Z+O_?>8b6`S0ubep@=wk<JWYFlM+vk~rcq$NdkH`@Y=wx3L4ae*Zi4eqZ1B z<-dQPE9m;ZuJ8L>bN?O>`8x<6$o@dz5A^(?2*oLdybmhyCUQTJ`+?jKYU3^*v_akn z?a}!Ic^~Nff%zYJXCL&TA7*$kn@^GFf&D(rg716ia}UR|if{Rm{T$>F`g?c*T|bon zq5KbTVTOlhc=&*qLGUOMNl8vB(omF2RK>F%$^NJ=^>Me4!ZE`mf7c)NqCejKM?=u{ zqtV1Oj=8MBP9JSY*N=4l$lsMmyV%Q596;_zN0IlDypR6kHg}Qtk<K4I;VI8~5%}Rs zaw6;B?eWaN*Q1BO&H4CMN+S2;cWH@xe=PrFy+7`Q{Er7Qlo5;~j_J(8438JEh$Wcg z@owaPEcfGIu%E}rImz!_NB+nE@E^K<qU$HGkb=~tMfNB9eo~!xsDqxL$or%*O_BSF z+)w0w62kxnBkz;p==_PiPjvpo{7)t@nW>oJ$p-cz&p-D2PZ@mQKR)-5cl)0moZvi{ zxXLy3_s>&w{g3=l<$szKGdwlJ(@bO~2f4^ge%#Ab*`GG21yRWT)PA1E(h2wSbO_^_ z!Zc<w4_!Z9#1dqG`Z+(N=ch+FhP+RI=PYtRmHVmOPp_lzf8E8u^8TBIWXSt(D$M_{ zoA~!NUdIgomZKT+{JWTM@O{sG?pXn9(}5oJrXP0jOn=WNpzCMyKa>C29L(^{49^zw zKJM|^Mm}Z}TR6lSF7Ur+$^Psnw{Y*z?gznhGdxdBIx>=(Z0P!V9`aL=3cQ1zK95G% z&vpI0BVFiDFZv?)bGP$c-skc@pUqt6BkyyaKVOD-_W5e$f4+`gTnvK$l2Qow`Coq$ z*oK|_caNtC{@=?Wco8Bc8PM~KtmHuc7xKTzM``r`q9T>4N;O*34Sm0m`-R*uhBBN{ zxc3+GztH!KB`n3Qy!eDoY~>4f@D1Pb3#Ylu1OCSQ`QjNbg5agRFWt*a_x)1tmubk0 z8+d8vmqjQ>Ny;GiOWnVGledulWh;iU49|RdDF_A0DNYzYn9LmJvyjEC=0iSV6I<EF zc6Re4`#H#Aj&g@*K}hUSC^1P%Ng7@yJ-Nw8X(~{Ox2R4{YEzd;Vj0Q^Mib9?CNY&6 z%w`@5$QzP3ByVU7pCNDPOTOY8zUK$b5W2w2Ae2a+M0Mzn?@Q!!iGJmN5K5eu%w!`c zxhPB-$|HYb`4hj584{ZzabueDE-i_s4a1Q=@pNXP^Tcu|)_3CfSjI<u%Gc~<7kl{` zT_--wQDjeiI|wC7gr1YwX_8dPn<PE2BX<(HlgOPUH~LQUCh{h!N;Tw7qVpv6Xh0+6 zPZB|Ibev=}`bhFP2qn!y4cZaMQr7YT`cL{XpYt7hPP&JE$e&dHq=z`eA6(=L*SHac zk|iSpS&%!K+{yBipF$Kt{$y3CjgFJGAd1$s$IT?`Ojm~BUXm?F&SWcC&00P{-em42 znfa30c`~<>>;N(*JA#>${l-a7bB^;|LhfXL2BB9HBjYP|>4v^u*~$t24noQ8A$b{e zp4^Qj*In{=2*Z6OcOS{4i9!D4@+X%+`2YqpjFIR%c|6OJJGmQAzJ+b<;2XY2=gDPH z{yQ=!Ka0%CWlnyVM?B^!F9QF_dy=606d5r~ib}|vLf#berl^JaQn-&4jc7tMBI$uU zNzs@73`FlK+<J;p$em&=_K;#CYmhO;)gYAe6^dbxDb1R40rrqm{*>~kls%>FDKB!9 zhsd5%_LR?g8H7^FpUMtWr6U8G$Vv|0z^$aJPdIX?k~@{oQ?;TEZIM4!KZc|0R8yGA zZ050uB`jkFpYRoj`IY0G;tYQvZz}hZ>KbyVx*dd4Cn70kPMrepYHIIl>h!#h+^OYG zot>QMKeddhN3)XMct_Htp*Zd*jeAR@^E87Piu`HDF`Ze=MW<=xPa}VtrEK6MK4lBr z*v>I7U@vLpP9t}kyWHmydQU5V+T^4pGdfPI<Ft7wNMVXmf~vTewE9ikflhR#2ffjE z+JOu~?zE$jH?6#B7vh~w`yTE+t@+cg=6%*<hO{5Dk3WOZtMa_6lUF0~eXsi5t2?lh zSO4Zk5K0%qou^C2t7Jjf>Eur*f4cmbAze8tQW-O(t4>YKk*+6lryGEKO*aC$(~V&) zbC}O6*6{&yrrU(B)9E_hcJ|_K(&;(fP25MidpzVZPkGMEAe7$Sq}O};Y`BZ`xsW$~ zKIBbb1hc0vNg3o%Ux8-yCxI_;o3Di^Ky5nW@5yUZnZa!I|C;Vz)AMWV*~rJp|C;=- zea239^CSB?$RYmXAO1t`40309g%qSFE%Il`jr+(@mhx0W&l#$r=M1%wJwrPNF%&&# z7>&Fc#xn`IGsvAm?hNzLbp~B$kT-+d&afGIGw3^mTgdP=-ywg7U7Y7d5PCf?`gpw? zv)IZ}>?30uGLe-Wyg?yKqvwnjaVHt&&nSP!8iW%;b6U`f)(m4J)0m0e8QpruMJ!<{ z@@M=6nKSA*<4^p|FZ{}HoaA?|<F+%UBn|1vfV`QqB5x+QlF59T>^xIp-bThu?_lOk zb!k8tjgdQ(+?gV2iT*Rq=L<YDlig;{M?Jb=p3H0b2%TqkBbh(r8}=f9<^vo;r<sp& z95ZCT!ZmJkn|nM6LRnr#_AG8Zi)UpiNHI!KnzFc)Eb?b*ijK2Hq2ny=iKR1L8G?Js zvKaklS;1=7@&WqJ@(G)fJB!}4$eTspEJx6J7M*92H;ehRoaGNLa+#|^C~G2Q%~}V~ z%sL%CWHo2jM?olC2IS6GnW|Jr{%j3tj{MnL(FQl4tpgqD$3V=GZ8)Qd!yMT*Aa^$J zWwx!@PqrO=!*~3G{MqEs=FYR}I@_Pz;12hAi2KQ&g!Je+dl8CL3O#49z?)Q|8gggX zdv<xV%bUF|I?t~2>^jfhjh^&I{_F#AL)quD8C_<79E5WCTb9Ee=IDg|<ZwedzQ?`f z(0>m7=a4_g?_5I9Ij-{;^5>90hx|DM5|fM+_&bv`Eya*Kr+d$-@0{;Y54WDP5sisK z_MF}6g^qLTH)lLD<($GaX5wAVxq^?_$!>mRKL<ICu5;RX&QqM>5B`_YygC2jU!L<a z2)&Vrq`X2(<bFf$H{^c9UA)nUIc(!JFM?36oK!{kxnj|GE`8_ffjh}HiZP61BJ$^w zKi3SFu#A<gVIA&2*B*{?0$t~lJJ$s+<6d&<Jl7Ls&#mX&GUtAc%w#18Za;T^3Q+{T z=dMFEI?k=*+#TtHu5;@;cVFB_?!gR0$GOd$dmal|h|Ia&dhX@Oom=kQYgv!}b6*NV zd6H3>M)<xwK9}cn+*zLc$eriEAml$Xhw>&O6|W<I-fZYJZ*KD9=JS@t&F3{kUN@ij zZOoCkD{|+RJ8yr6Fr1N$M#p()qvO1*c^^6Rx|h74u$is=z#%U4CpWmoT^{f^ZYA$C z>^xtHOz1jacI3^M3wiVDJYPY~pU>UoD}fpE=^|fG<jJ>%<M_V(K9|25F^ph5lbFhM z^qzk?y3TKg{AS4SPV&2x{M+z1CjVD_%T9K29{Ka@I{zac^S@`wUO?vsbY37mIxmn1 zc?-x}K;8nS(RTrT7pO#Cn$r#W3wQ?#=(@llh9Yx;(ZnNr0oe;IWd*BPgZn5TZ-I?` zgzgLIzJTrvn4!Q??ggQO@)WFy-4^tH1%0mIZZ7dM2o*|BD!h}0(xLxCc`1PWh2$?( z5;GKfn;O)@422pHhB*oiM(#r1%|c_CfZT<2UT8Y+q4Po?vWYFoS!f4e^Bp@m%vtX9 zh$sBZe?h2lKw^@Sg4Dc<`zY+4EL;S63%d`$OBwRJl%c|A_q&v#!c~yJaCO=+l9jmA z!dHV(kyMnTF}?Bkq{w_0vIPAX(OnTe7un2bY)Aeg@)wc6$N>(a`y#(_lHYk8go?^t zRM$mQl7`o?o1&S?imr>wUR2jbWi6`bqVM4EOVNh7^`cE^N_%81I*y4<VLG#z%K{dm z^P)O0x{A;FlCSs%d5fC8=pOd5pM%I>^a!_uP%-@$(_^t_3}G2NInRqAR6IMn_q&jx z;zcQr8!ujsn$)Hq@)wuCcw<`AmJW2HE8TG`#r0i$F-wuV_!`#n0UMFu??r}+|BS4~ z-AZvi7e9fXi=W{pZl;9nCEP{{J(tKx7UV7Q26>RXgxn?MF5xCh=(>cwCERt1`h+2` z-;@lMFn@_iTG9$#lt^F)p6NFwLnRB)fNo4?EpDZxTPf*QN`B6F>_h&N@|Tpqq+2O@ zjN@G5D%bgoJKPIGrQA!YY~(`rQnHsSf_o`d5<4no2EQK}D&<B>y-N#ZEv4&H?xj>m zIx~o|EMy6GT52V_F13yge8i`0VH^9Ax6~ny@GJ6`I>l+ua-NG^4*ah>k+pO!JhSvv zHet@v4}wsc^vGSN5^v$XEF*szy_ac<{AJ`XBY&CJ#LxpbU#1@ev4b+hu!l0TmvJLy zHu5oYm(h8d?YNmTIxnO1GAEJMZ(WAU$Xe!4bX`W*W!!t2=RwHtU53iKk+OO&tLL(X za3f_)py#sXs7Ph1B5zrF%gS3eifH65+l~(Cy=)h{VTQ7kS&uwrZv~-p>F|B!e6HMZ z7UNdRxs`H1u!kRUD}LWHRL;GXli%-LhWyTDsGJ%6&Sj|F-~7WfUId}?Arg}t*~^!u z0y-}*cX@r6uZbO%ci-hBiKQ#u=|z8ZU496|kiGl@^ju!g<?XcmR^%=JC0`?VdAZBW zU49?>E`J_*%U{NQmzTG^&dcB79uJYf{F5M5;dOLep(XmL;O{_%-CPSo6_Zf_cV01! z#^}FdbK2n6D(bmnPx>H#MfocZW*ifl!gOXahfny5@7aai758(HLmWZ=ikFbNqK+&6 z$IBp8DG{&WW-6s7Eje*7m8$a&b*PWLl^P>&CHGRve3k6Hl3S@X02wO{#mtpP63193 zFo~(iU1=sCB4ef7LFmm_(bt=;7|k;5;muR%{7pCVrtaRn!2{gKo9?4>h$P5gS^mnY zNJBQvP}$v7&PPECV~)!1q_W(VJ*%?5D|etHUC?`F`74iLJi4wtk3}p&uF9)<pY?3u z3-n$2cg~{c%6hJRmFwuc@*VE;h$lhlEj_<w=C{(5fsAB9?ziNAD;IgmkL+*NB9=*b z=3DmqmL95Pq5^hN#hp}<yNdp*#4`?ES6P7kRo-Jct60NYwy+H|RQZZ;`5tpr(RCHM ztGMkd4{<Y9{^dVj2BE6%q^kT?-yk0aC`<`TQI_(^UNwTwbfYJIkhkg}h9Y-WxvR=u zbv%n%io8`<qVuZqR{a2XQ}tuKw^ik@`Wf!K>fIppwl3e+$J=)M_88u07Z-6a)!a$7 zl(>;<`md(*YI)FewL-Z0YVuc;zgii}Q3Eqnt4jkK(HL`78;0D~<gTXgYLl793}zvJ zHGNn6gstehny#yT!*~3^ZhqxFk9dNftNj=FKe3URWVr9@sgb+-Ysgz&-s;6ENonM* zZvN_(s7zI=VTS54j6$C3I;s9=5USz(YWQ4@CfG?0_flg4i+GP^tm9L3T|@pF^4ItZ zGt}76K@MYv8pk<_IckQGyJm7ykq)_QW+XEODT4pGQL_qfBWKMz)T1GdXpOt6IhuIJ zGl{9pU^eqez}?hzH#IloE^2;`yft?qZ_V#9d(A!UL;jivxE_Swd4*zx<2K(}#MhkW zX%MRAU8|LgytwsR`md$CT6(TkmFm2M{I%q-)qobXq7Chcr4wUuAGPKqcP+VVEoUWb zaO<_?ueBZbQR^pu<`?u_>o@dV>vv?Y^>+}eosu-@xpoHRt(}z|$X#3R+H%(}jIL|z zy0*NvYf~3_YwNpqV<KoyBrO?)thIGn+cRtb7li8M!<==xFcG=ye1u!6<5ud(Uq|P4 z_9A~BJ=ZzJQI2te%lyd=ZgD3F)lG%>vTjb~t}Az4UDqu_aY`b8UHR+URo!O1i=1`! zT(>P9=*R%Zuz*Fl>AK5V#rv#hBOkMgt?WbBbq^wM-6P0b_XMYK4|UIRo{RXqQcu=; zHSx@PllcU5*1H#k>c5KI^(*iuZoR(z^>tpq3G&z1bNwjXdi@yMVTSsBaEtZzUw<eg z7{wA~udna=o>hM{pJPAuze4Zz^<7{7`e)E}{YzZsCbziD{UFpJz}+;^a|8F$z<o3* zhMpUgp*)p%3%MKUy@9+9<ZTd*&Ku~wfxHdec7v{Trx)@!=*LVxMwbm91fhm*vtd=* zV?Pa7;9YCD2mLqHf5U?u=MVJU@Cw(EzoGmM@9+%$hlNPOE2N+x<<NJS++lKuy+dv4 z(E$0w^c|+}upab9*I~L28_r1Lh-Ws-*upmS9H!^6Z`sLieq=v#haE=VFnPmn@E5mn z4`C1an<xCsbIi~vJF+%vi)S`kiyj)8Gu(c{izBz+v<`*qKV1IsXxv<QFLWI)fA~O# zFbwZy_!Ooyi@D6ly@bmiz6<ZC-?a{f%N;Iv_)(7GUc&G4h{rrdPXBLNp~i_x%IoBz zB9*bz#?{ev<2uwQjK(zOUAiN0V|g39jm85QjJ%C?-gq?TZ#<3(tVYL;_1PpDMTuY# zW@)k&xtpBg41aI|y*F`dO?2JlAD$t9g!~cuj7UcY++svl^dIpiaz`{IoF>TZcdSDZ zt!Rx~iRg`vBV>-4$TVg!n*}Un2}}79_Y$Gs2stBu<v8;C&FWBuyb<m@!h8|#CE_M8 zgHY2%B*Dy0laq?H$ldfcGLjkDo9e%5B*XE{rr&cl2sKNA_qmyyZ`KL9o9VpSKn4@X zWaMu)lR4<LSpth#%Lkaj?^%bMZARbC%+c&DayPropSba6x4DPjn}?9Ud3to*JPX;$ zO<oF62-%z0B8t|ur33Od?@ABk_S@B==5jY5f_rZ6o}0_td>%S)E^qVqSk6k;Ab<1q z?B-GsdRLe4>f_x;3}7Lj^Bec^KEC^3;Qy5g{YUCN@^$nasprTXynz`a%@CQNGL)wh z-rvZ#@eV|`!L3KS^GMkvWsh_(kt1;9kz+7J<Xm(fxr%k@J5t|~o7loOwzHRCxyDU& z9jWWchdkyf&v_YyTFBlaDcQ(LF7l9%g6N<{QHoOvGqfm21bvaGg<e|xj_+&fb1mP& zURt`DmXn#rOlGr~)#$sW{4M2g`3YudX@-{H@dJC<$Io~lT6#xY%HHxBFM?2%-lOD> za_><oNsXI{(s@)dN>i2!=sKz@)v1Z>Q8CzS)L?WSH4=IKhIJ@v0&+*m9VK_v9P}Nv z0ePc7=2PU2(s`85qrT*8zU6z)B5Nysw(`tYopFn;%-QM?b`mXjbOtivW}@Yfb|=v# zkUv`fX!)bvOLS%G(tt)Zp&9SeAK9bFGl?n49W8hCJQnai>-h{>qrXDd=w0YKTG!G0 zImK1}<-Z`*TF<Q$lZ+JTx%I2OMn<wAZ)<s5%iFp<6_K~K&RbWb2DPX|Jvt$4>kshE z*1Bk;hc@PH(*iqbBX^sntY9_rx6yl>&-nuR+kAtr+x)<8j&O_<xW_hj(B=>9A;z7= zq(Sx=*<&)J^OzjGff-`V5c4+fH>NhS#^^exF->VsEPa{4WZX#1OmrPHpM@-887o<X zyfN~|$Q$z=JCQeLFZ<9z%t72mj2U9|(N@oG<!RfDA^5(wKG*g<FM?1zx6&>@g(ymK z+)BG@xVLulx0AnJ1Hy=+HEroYC%Rw{?PPD4z#`s5?shtFw-z_kPUr31Ognko{fw;b z4)YtjZl~*ZXSm6eAk<#=_Ihrw=k^(KBkkpF{|0%GyS?1)<!)aceYcmleO>A!Z+o4$ z*Li!Lw{L;`?V}lrj@#?A{n;SY!F_fpNJF~g_B*WOQ@o!Ywy~Y>`H2JQxx-Q9?;wAN zQ(Wabe{qNVJPbmy>Bvc53Ltl^u47A4hH}UsTL+nAbsXECSUS^#Ubvaq{>0;6V%M;a z4Sa;Wv0IQg*1g1<FV_1RYv-}Ykuml(W{&-Xi(KX^*U)|JEoASQ3f*>;r(-`B;QKoI zTu1M8ryNv9?oM)ds*nCU>AF)J+97`@`8##P44w4eX#}G&Lnn9BX(Hz6v<bO8>ABMm zzC-R#ZoJc8^xWwrSGa+WJIUEezn%W(AN~zOol}sBVw6O`oy${+w|JWx)WWTFcH5oX z;+{KqMBdI_k+*YiblzF#od+?5VI&}HXMJ||%r0->_PUs}%VgYp7rDC}<S@S?f0uLo ziTqvk+~qD0coc-XhDgFIq$CZmQXD;Zt%lrP<?gEMuDb3TP7~zsDu35L3}i5JcGYv& zF^ppZ^I65`e96~*#}DjbA3yU8M>xiHblvqf@^-z?|MEV;>|LMpG6;2(zguE*QypD) zv)gVPIgCAZ_bzw0kM3^DZ;gk#M-ziv>8`u(dhR}mp^QNO?(%mZ%Pi)yfJMB=GTch{ zA31>B-R16noRgg9Eb@21!?PgNBOnn;(Q}W~=($IFWbaXecc_D&dxRlxkEXnf+&$#( zA$O1V=(>lld&t{k6miJgL*G5zLXWA;K>i+c_=JPp3qn2h(X%3Lh-W4C(en&fxW-Lx z@i#AmP%l0AN`gD-C4VpZdu1gDxyVZa3Q-%md$k}6e^+|R+{<oybwTI7blpq#Ub6R+ zwU?Z|<m}~EdM#!tD_F%QzTqgpq2pdU?sbj}T*iI(a^JmV?&V&3%i3Gk-YG~$8q$#g z?`iKWWG5%`_pXYZz3sjCYW8A(ee9@DNy6#DK)jEAhBJ~0%tZD+viDiY66Ei*9NqT$ z7&G+Qig%#Tmwbge`dmToKL2~x9Uk(Sr#uTneRbVe_P%oT)pg%I<f9<PkgabS%He+c zHlY(;k+*Me`XP5;x%<l9SLc1r*>@a^c#mc1yRW|czR!9#@)4i18TtDjM$Ue2s9$;P zw_hA<_yPOq_g@g|pA6micPIVRl9}Ad-e30qMJSH^{i{%on$)Hq4d{a0{fFUJ`j1BD z{yOhJnW-#B*Znu}33~1?Xa6tQ!8d%zFSwchcX@!j?*9)u?*AeP4G570H#0!z19a|p z=tBeC^ngOhJ3!w9<Q-6&vY3BBB`RZv0lFA46nO@G%f%ox(Dx1Wxq%Jo&Ln0tj|3K> z^MM<2Cj;dlDE~lrGSCbI_ppzjF~h(k{E9gSJ`X~J<Q|k5eGf{7+=J5b8hOZ%`xsP_ zH<5Et4c@`unnCqwK}Uu$68ju97CjG|%rs^)hxshTT@3n^&B!}w8}bfv*MoFENauro zU^m{SL6?HiU|9$2bFgO)?#W!tIoLZr_+bzlBKMH2<iI;QME)T~DTn++^gN_0)u~Bi zn({6!iKY$1(ese$%tG!Vx*oEa_gIGfL*yUwH9OgboI~_H<RFJR$^~u*p`nRLN^(+> zmh`+%X0nl!+*Cl<L*GK)q1BLgXl=~yxAH?n8zKMD2zoOET@JO|p^t;mupHRauy)wT zFgG=9Eg$e9Ze^J6hUt0O59oQ=kNkughM8g5@0{g4`X6?cYe8su5@a8q34IUGj@-lZ zVL!tQq3_}P9$uF)!jW}&B)T51>)~zaiMtu@K8EXgxceBskR>c*C2LrRcXYVkhwnt* z;d|M~e&ii~h$HA=_;F5RhT-}ckr8=Dv}O#xZ-mc{xE_Q?zCwOVP#X6#vI2S^S&xRu zKT`gY%`wBsSUS@UGmPv*Kg==Gjf|9g<Z5(2(z`iQ?vbCeneW+!8yV?#N1i~=k$-T3 z%UtDA5E>OC6Irp-QMt%V0SZ%$l9Zu5Zevs<8YAzhX2?4#3Z0MA`KWeupd<0fI!d3T zJacpkN@32?1DK24qrc!Q{9PI?|LC7Miu|MXJo+?eF~jJ;xWj$SF!~8kgHW6~;_@MP zTv7BLR~EVBDq%ly^$A1XxEN%O({)@|y3>n3jAk0L$E{%<8_;u{ym4FDhTL&-$H^V% zF5-?OZ=Am4&LD5xMXvBCH;_N>b`Tnqk|Nmsn7+8pF*`WN^B@%O?&H0u@inQ9TZwOg z&g0!#d|UJ!-wFBS<&W=)dygMU9AlY)zc=yk<38d)NA7sJ<8>YHR^s=v54RF8d%W!N z*O4>+E)RIZzx>C`AT%~DGL9{cn;u&c9gnR_b>5*4Iv=a^v5j#PW4q9e9_V|l*~boG z5JMP_{A2B4?0e{BtWL&y<~aKur-O05nSp(b`w6!)?l*KlPX2M1(DS%E+(Z6xk9Zt} z#wR8jDM-z$q^BfRsDbR`Wgp*=Ml_)*?J>jnehg+PBN&6O$Lo5$uE!^^20f40^Z0Ms z$!>mRKL<I?ueh7>H_^9$PC#h<eID|^yiait<6i`!2_fX4kd(aCq%)Jz#RNS}_&W$q zd>uQP7(pxA(2fr1ed0jmpD6#t;pls!z9&v&CUcn2LKgEmyKo~De@6C+o;6YD6Hjo8 zYnWl;6XcyJ?<9FA>3ULfQjvxn6rmdOPjcIn>d}yJWS-QV7RWwH_DTI2#1P!~B%M!^ zcapy^lg6R<NjjJ`mFa9i)=6$)vS&^%Lrcs#*-cH}f!veNbBU|SKlvU{k$<v#o014! zPk9BMPRUF*a*~_8RL6}>X^Pxa<et)+7~IR0Smd7~|CF(~k111-bBdm)%p-wCtmiY_ z^ppb};wXBaa+1@W;{uoYlV|99YJj{`lOXTZl%yst>B&Gw$|CDj`=9EWQ@`e75SnJr zY5A#z+|#<#i@wM|P3P0bBmXo#Pn*GP=CXp-tmOkf<YV@u=V@n<dz#$SbUjVi)7;9m zTgX36{^_Ym$7{$rUC-0q%Jf|1p)_yPj7XwrO<Ow9iLUgZH~pB1uBT5!UjGb)&~$mH zFJK{Vd-_tAvyyL+b-LZp@XQ%?=!rRJe9AA#J>wydaVs<ApQ-bi?rf&~Gxa<(6Isbl zVTw_bGL)wx&C&DB&d5De?wPutsq2|;W#$m%pDF*$1m0sAa?aHAOt&&~BOmb<`#8&a zE^(FX{KXya^N1(>8-!-Pimqq9j=Zz7An&X<F#D{06h!`6MX5&@bUDjzXC2{j5SndI zvnyjCv)$C}IL0yow=!FIv-LcCDSDp0iZz&Fwi#xB#&&j~|JmR31Aid<?0Y=mZ{(i+ z9Q&CQLf>=rJxBgI^3IWUj;wP^P!?U!sf2uU>f>(a=y{I&nA4Ae3}HB<7{fU9K4%K@ z&XISHymRE8BkvrY&oTd;O>AKs^3VB_<LG#<F6X|5+nlS1xf`&bxqk+sd5KAl{^#j` zp8n_Mq##8oPATM{C;z;Pyh$C*FfWY8G{p_gGsnEq$UV=q=1pb>vzW_#<e#^WPx+di z>|!rJbCAOv<pQ^Z(ELOsB{```OM2v;pBa0fFZcZ1R6xf0W}aV_YSg4Qb&-3%-1Ea} zLNBJX3D2Bww+r0fg6imOfq53Z$NT7ffzB6v#5TS~{sp`Fk^LOt7fy2yGc35wpIi?@ z3Fb)9b%NXpS;;{j@==h&xRV6=6Wn=1BXpe5lomwMniynHa4!k^O_<9979nrKa#kUC zg4_vmCwz>1PS}II2|uCp1bGvVa13{oa0>Yo&hj(}EzE*07wTi7-7eg~LH-Iti&9dE z(v-uEEYklXoiA#Lo)<;nJ{HNpNd85g>Bj%Hbk|W@m2KaE_q{<t5D)~U8!3@4K_#R_ zBorGvk?tIsA!Nt_W{9C-0Le!OgYE{APEoqMQ@+FR``)#V_gU{^@9R3x-+As??_c-x z9c^e&N8(WT7&|g%2D4D}7_%AkGYhdRW7e~a{TxJ{V~!!`F>)SrmODXYY)WK2R>ouV zQIH}Oqa-g-7P~!G=3`&SPK<4eddD_Ly<^|!L-arPQ$9xzV`VXRD(V?~CWwqnhx5jH zZ(Juv@e_+##!6Nr^KrY8^*B9@)5EyK*q3qVxx`g&aGSe9Brz-MPn30{Z!__E+?7}! znJ3CTu^uu{d<XR=sy9)+iC-b_M0qE+rWdhHLj8$J$U1Qj^HFo+LViQ-iE2;W$sYD` z0Q-@s-o$@6hU^n%pD6o8J&aGybEs#0E6jGh^TvB`{JkJDAv+a$nVR@MC)7p$6W+y+ zPf-5^^-uT$Jxu6G7rLW|3EvZqJ|@gX-4l}el_jWqg3KqZW(T|RJx(~q8Pqx93fH*F z?I1Go34EUui&BD8ltIoDD^Zo|yh1JNU_U0d;A7M~(SA%+@5FDB`9zsdY)1#|#l#V) zb)q~cx^q%aYM@X5y%dp2(@^)MO>AX5>YsFw<EVd<oF`r2GFN#NL?#EMAQexNj$+7p z@{6c@vbrbBda|r1H=rTvpRE4LEon=8)HzwslY0_HABHo5pZSH~S;BHwv6c;NW*dKU z5?N0^hk7SpLcNo3p!dmldBA`5KMo>Oa#IaiPBGglGuVnbP0fILOtn)}-{fuH!>&w~ z-BdYGZAVACp#G`qpE{7i3`6!);~C9D)ID`QvYxsHHBa@oWvbas-G{8F%6jT~?(mR* zgUGZ9a-Nokbfib^(~9#lHIehQdZ>3=BbuP@Y3iP)?r9$)>uIu{rrv4Y=s|DfJ<Tpm z>yP@U4PpqhQR}peL1el-rkBI_GQAh$F^}o~rc6J|2~MN_>DRcA`lqWuDIg>znaIMk z<RlOIs7?dkK<!CtPjXk%`?SD}lG>n$Bs-F%-X!%VsW)jT_9bZ~@=lu0Psln+{Yhq; zw4I&EI!Vn*hd6@TlhmGMH<BLk2)i*u<}=hgBQ<Gxij1g##xs<mF&#-@G5-XSnJFlU znauo%uW5;Wnb{V(&y1!YKOpOw>Yu6pnIjm*6!b82CT1{m9t+UN%mb)<rn+bPK4+fc zJZ3cWGU}ft?^)@|jI3wLdRA`oQh-93<*ZkDi+7OotQLI2=X}Mtv_jppI-uTJ>YX)& zVZ@={S@wI@IPAo%NvMC;G*<F=5c$#Ue=JOW+F(vU{>%<8ahrSCmmmKPBC}KTG;*Gu zmF(D+*?O2=oaZTx9%lP{GrKbSnEfg0o~`cL-_Z{9ncbPL3?LTu&Q|N}iKun<3}!Kh zc`U`=%$E1;?bw^y_Gb1zPH+mj&zAcfdCqwO^~@=Qn&!xL&a2epH5${5=E!=^7pQa2 zH>h*YI@~d5H+wPTx#g*WGv+#DZX=rD{kdi}*R1B6)!fgpH*;5W6*<n8<J`wVWL|{K z$ZcLe3Q~k(L^FsnnAyCkBq4`+3oxH~zwkSDd)_KGaxsX^PeT^+kRSUr-?{VkK40(i zYf*>#G~^AM@)2sDZ@=b$$=9@`6>S*B|B&;1JuFb~0%t97#sX(7aK?f+`4DF<7>M4J zYa;JtStZLVSysuiO7?8>+q{Q&l0W7%+@1UlvQKtza(g<_l^*n_4}GyS$#y1r2*Vjk z0%Ng5$+An9U9#+wWtTjM`TWE}enWoA%UH=8*0YJNY-cC-D|tVMIKolvTJmYmA@}4f zT;~>ddBDFxWMPDqq$Vxtd75X)Mh<dg2Nue7VG)W^k{2jT1uF9*FHwWq)TIHhV~-a$ z!yYeumk%(9g`e^T=DE;37q+Gy9qB@MdhtCm^vCQL4rUl;xG<hEBr=gHOlKyunTOq2 zn9Q#%!gsoG1*=)dMz-(=JJ`)W4)PcOaGX<|<pP(v#!c>UpGQIDmw*(c;z^z&Bbmuc zc5;!I0u-hwB`8H1%2SD|ROc0HQHT08<PDng7Vq#rE%=1b`HF98MO!-1nQrtXifH=r z1A`b!9HSV`I3_TeY0Th9=CXjF`GwzE!g5xzmJMuX8-KEky&T{$e{+nJoZ&o|xXKM~ zbB~8S4kEvXJV6@Lk%3HP;aPH$hx`=cIg0Z<r71^6s!)xWsmZI<<24%5gg1Gc_xO;H z`HV05hVN)YdpgmT9`vRUeHlP3Lm19T5*W*PCNY&HW-*8P{KP_jV=>EE$r{$PiLGpB zCwth>A&zjA6P)H87rDZ9ZgH0f{2N4mi;$Akq$NF1^9<R@L2mL<kRlYLBri~w3RLDr zUZMuIsY?T1r!mcF&bxfTM|{c`d`(MQ(~gdGp*y|!o*4QwkiiUN1o4a^k%>%UIy0Hg zJpM;Azp{v>tY9_k*vJ<CU<bR|$3gz$AC7a1vs~aZ*SN_Y?(-;!{2q{kR6NO3WF#|L z$xbfvQh>q~r39rYLwPDumFm1gE$UF8hP**j-r^nJrv;zzIbZQDt!PUJI@67wL=jCt zeqazoiDML_8OH=BGmRPi$XpiiGr#aVOIXe-*0P@M$n*E>JU~8+WUxr@i}Ld#wb9oi z^)6E9qV|~QqA9p@(Khz7KZq=r>0((f&O~KuAeY5<Ww9Mute?gI!;BZJXR#SBHoL{g zaQ71LFG+)pm&kTWHRQ5H9!q-jEB0cE9+q6=J`aP)(mXszG3wHorl@sk4|*{jyS7v= zOaI~&XM)HwJFv{`mt{e%%gk<BBfPh)Fa1&TGBqz#^RoZmxr)q|SL9{%x!hgLy|dh1 z%V+Tu$#{Ob=a+kaML|kpk5<&93C-~C3h%D)?uzjwF%!GL;t&4heh^uif+x`D%CgwQ zl^^mYUo#A|S!pj;dUvIFS9*8lMQ(8?h^*4*DtWEShq_laK+mf_<2zat%ShsJ&MN1u za?Yv?+~jr;S)C1MtoDtpu1{0mqzzr^&ID#K3uml0@6`u_$eNIJq(_EpWVl8xYrdi_ z@>r9InXU2u8sGk!-R$LI5LqjOwW(>u+q}y_M&R36YbV!wcJ2NkvMww3d0l>5(vi+M zcb#2WXHM%*aT#-3FWdF9U0)v0t&gG)%h|xDAhID98Og-!H0K@Uwn1(i<hDT#8}_1x zjZcx4XZeJ0k@d#;{D$4y_-_!|q^C_!@+RiG=_7vRXBKh;{crN@X5Yr<SE);X%zkqm zdpLscYD*DbpbTC39^c@W6>Ma45ZS7it$Nw2m#zBP>dvid+&Y(EP~X<OL1bG5`?t+~ z+ZxjpwQW<|HnnZLg}VL-sEu6yc!MD%For{%K;GN^J>6cOiVR>lBk=FrFJc~lmZB0> zFoQqk`{!V`u@~9y$c`P{Q3!SKknIlH?wCz7df52{8F-p^`IOI5|4#MqRR7L<L1dS` z+?A4gG{LvI%RG1aCU;HbB$v1nM0S@(UAteT2YoSz-K&u6?yW&&&oksEFY4OUfle%8 zE$f5G-pu5}H@R2+dp);T{d;HfKh(GPIuCdhME1#J-z(IlD{|Qv!|%9z-x}=5em(EE zPy5Ybe{<epDsz~}-5_!xLJFL9;59sZU@V?HFrBN&<$${n>h+-K4%Q|Xxg3n=5B6~& zh#bm9PV{`}W4^&RcW5r=aL6tl+JpT(WIqqtm&0m2{3J!Or-#e&CLdxK59{slV1}}i zO>E&dkAuixdibj(6_Cwe?)$4Fomqff{#wj=Zg4Az94SBvp67i&=S$piWHd53;_u!O zy&d@z^FDHy`$6PybNc%^itzzo@D&5GzkiQHuYWH`y?>wO8t(q*S@Khmw`jq~=+S>C zROBD`|FekItPLVZWpmWd9<?J!<$lzBj{2sK_Qp4J)SXB5chuaEn)^}nI%-}=&Fh#N zkJ-^<WikI_vOM+)-a9rNwH{O7u}#SHn0JqP_n3E&d-u3^k9+sHT#mP)9W#*W@t^ny zy&ae92|b-CjyarokI#_H30a<)%v3hB3-do2VCE;&QJ(6&Ok29qgE35D8s>0v9|ut1 zsg$Hbou|}!N}Z?Vc<LKkG7RsZ8pmQ}bILqVsr8gOoU#L_WqLXn=6PDCr{6*Cr@u$8 zrw6eV@15SjMgDv5P7pbh1@E27M=cuCh%R{lOf++`2WNicFef=3M9w}<4%~g#OwXF> zS@)ln@7eD3L~ds%Be%2Wb9N`Y@m-(uU7xcT=X@vUs__yn_zL}>8_9SkvYzeiK<(#z zZ|7xyUT){*c3y7h-^90e-hQ0-&iR@A$QiD3J&0T=KnZ*=7vAMld@~nf7>vEW@H?xJ z^@USh#`_m#bg>xTzgU;XG^Gt)(euTz==I`sHlp5(ySNubE`^x)CHr+r&zCA-R+m2E zGlr1B7?xsQmo{*gYnb=tycES5m*2yCm%qTCUG7VNmarC?U49%yuB0I?RjI|Rw8uMF zdNG@1%=pSlE^#G@T-EPY{a)4YRd-!=*Hw329f`SImGRZB?7>c7OTklQK!4ZF^x8{& zgZr*^Bp&ZwvlG`gvkUKEGt+BkdfiN~7p4^Edi`xa#+<IlU`E%?==!g$z?`lh<2)CG z$c>C-CnxT{VNN&d^DQ0dgc;p1qZ?*)L#{XOV;^s-_oi%adgrDbZw@04Io{lkS>Ae@ z9OR+}U!lKS6PUp)?AxuYTn{3*E1-_suMou##IlfO=;5{+ZmZ$88t%yLjympm=Z@#^ zc>a#(?<`_9=6dHr5V@O@RG8=8hBV@P1~P~(>}GEe@!us9xtEzNG{G$IeZUA3QTsi; z-8;zPAadUf?`P#%8qkcl=!07Bo56kc+*i+i_1u3HL>{Q+K^iJk19d&<hgm%s&Q1>T zR}gvl47th6YrIKw?Ek|A?Egc1^>7dN>XDszq=!f8Fv~|x@y;XXJ~GQkdU*6Va({F# zi2PfK=Xn7;`|o$OW+VFicUKU3?Ec3^D9X2VpcC`?4gEd7!9)HH!k`{aXhs5)n8H!c zaUlpJ#VJPxI?{_M7O|SOK^SHs5BcauG<|VS=$z0wDN5pu6qRU+vr=^C7nZX!2va^y z4s!7oZE4RcHnTMdpYZQb6r?ci=uS_TvW^Wwm?|^QNTsG!@9+tqF^iu_=0OmqPDv^n z@)mD1h1tyI8uxh^glTHf0MDkGzzm$1<`%MiGN3+9d6Sv^kDs~C;~-2M!82(+lh!k7 zy`NS+Y1Na~8R=5<B+dAM7MMvo&!tmSx=T1K-Q6I3>Qx%im^m!u*C0%vo@``C>cx zUe4+N`?nRW3c?KT$sp?ta?0S04EoOSF7xnQhTm~VM)hV)!56f~JTh)$FZ+Y=>B5wv zG(G9Z0RCVf2ZAt@Ib`x&rsrsdS~7KI33eyb`XJ2w1Q}3MW^>4_@5~=FnIF+#=1b^3 zv$~!sLshB~#Sg?{Kc3lxyR&2?9|iavcV}tCe12mQH!#~Qvd{V|jgV*7k&I^|2RY8k zAk0>ZN>ssqXB)yWj&YugLHKNC?8>vXNWlD_ox%lfaytmKzf3*sQ}&^ZW-Ok`?wRbK z$?+0(u`fA1lfyGPJd@)vYRPdr2y;3or*m>TC#QRI&cdGL{5J@5rRGUK<V(KBzvr@V zx$Il6J3*M+&gKqzmrs#XZvUQpF-wCmPdc)Y4e#e^M+fY59`nnyEC}<uBd<Nm>$$wn z$ZO~F$~v#R@;WQ8yYk*bP5IoHuOjNsCnLXo9OfH^obqjC2fKnWe=0JPiF!1l86!x< z_m}@NddPn-2n*PS0`e|kh6M)VxdP5Du$R9%8iWOl@B(G%!uLd@hk|ynp!*ByqfjpL z@Ex7-Y@y|BU{eql&W*DQ7o`{d`2n>Twkw6rr^vJ9ry%ku;u|c|8D|vvlbu2MTwa{< zTyfgd1Lr-r4Rt@aKM0FDr>Jv^I;ZH@w4(!ySdH(eSXP`>%yY#&Q_M5PJX1`~#oSj+ z&BdQ42YM_16>V{6ac30Yf;&rOrvQbBLQf@P`G>Qd55kgmvSeNAV;4(KWjeR`Hwd2( zXv+J1$ZV4NB?wEU;3+bo&Qj_urOs0Ry_8)mrQR33|AKvb!QQ>_GWBS{0ERPyjqG4o z5SDgkX=j#pX6ZV-K@-fj^g!%aY0vxZ&#<)T%XqGgOv}ikjAzTd!+Rt!i7A+08Q)i# z(?M9)tjn5p*`hS#16nYW@l3??Wj$Zk^W{oXflBzM%6-b`M5C5+Lzs&^%KgSs&T%0K z%Rhno%0G=W%FDX^E7*zhcC7pi=CO_AT;VF$@OP|2M$}tDtrbe(Z&igdlt(=kYU2B- zP><JWL=*H?A%<l1QsH_KR!ogLDn3It>_)}nJWpxLQIR;tF%x}NT)@xht>R*qVy+c; zVUH^6x8gBQa22&z{O`V-L0Bn5O59y3E$PuyB|TNjOMVJ5h9rJv5$>q8g4L{JBU|`` zzj0rslbqo^mvDC_nN_;Y-5{)-8Fy4J%j?+R%B`_Sm4`AKeO8{pB=lE#C2LrZJ1gt2 z^5Y<^l7_5g!>(1y!E?y3iu|g`uZsMtm~oZ5G^QENu`^ZNUB%8+`G&6a!~ClZz)n|5 zU@YTNOO>fiNA6W*T}AIzjv(tQa;|b3J67c)SCDs=Tj;xLI?`j-Rb^0B-Bq)b3wcy6 zfXu5Fp$zr-gpLeiGP99=)kC=NMg6{5jEdBt5pVMzAM!Du@f~ewPbc*HVs}O|pG`an z!fFxHkQVz`Ehl-f57pFGO>Nc6QI+bvLM<9#meu52tr>688+%%9Kk}(|9GO(R%{?As zhSgKy&g$~<o0nmA`BXQ{>h7#j8hcXXWg7AZO>usWcQC&iEoez=+R}l}=&^<#YxHCa zcBh8>Yv!OJB`Jk7YJSdFe1o%Udbef|dhtCm*o~S)i9>ER<C%!PsOkKgW>a$o=2O$R zQPZB*+`=~gWEXomz+sMX9=lTWGS`BzR$rW7%lWmOUu#Sd);5FMMJbM&YrnuRxTm%= zYdf>HGiy7u_TL=CH(2`&&aZ8*wI2oHs{tV?NljXwLguf^{MBMq=4;gOYBIjtIvFWJ zeVQYqI^WR-`&6eB@~R`RI=$(GKI)8SEaQ<;ov9=-i#g2WfBcNR>g?wN{{~^*%;cjY z?yYO5>zYwrchz-QU3b-WS6z42byr>AYu#9eFp()tXC~%S*IjkpRaZ}Sf8}?!Vh`)3 zqb!Z-zz7y{kkee_CU>}xEbGg%zW3_OuD<N*tG9kue9!gGtG-#)f0Lfrnfm&!znm@n z!47t_53{R(9_QD;i<;`2S%WmVqk%gbWFiaMC`4g=iw%lWfttKZJzk>`O;AIFPmo;$ z``zGMTG1B0Hjrn7aj31qsUUnUBb9iMZkXL`o4F8#e)lhI=>CT0($M$Q(ESaIQ4%#Y ztjvqNL=9@;oQAD2pN8h&Z~^Af@F&cop)496;s{4Mfy^784Z_z`@D#Fq{dr0UVdMPx zzZ*Bh*^Padjn8nCd-$8u*x!^UDM?LQoY6#`P4v~IHm}ndXEd?TP2S~GWYk1PO}?cS z_Pfas%tWnCHu4WAxrKY0I=`v8H_eW@H_d|@o0g&+)p!~6X=*M_-QCo^O+TO`GHx2j zkNnIo_H!5gG)sk<G|P;8nz^T0F3i7KQA*&hW@T_+vj()F3--8~@2;8Ln<X)eIm|;Z z&7Ira`_0X*xw$nrx8~;7Tt?07@CmYLK7d$;1Yyhf`I?rPYs+@%qh)9G(Q+KWv6y8+ z_}yQe<2L&F&V0U;TPuHuT0KD;^wmmVt@PDOey#Fhzgp?B)pN+s?|6i*+|kM%t$t!T zo7l>BcCrWAwK|SnZgrOPT;eL%gRpg4%J2pKkx6UkwO+`t{LX5&;Oy3aU_V=*;52$^ zeUU4eQR@dhLQie<)Fvg*QxTcAsm?3tq0L*g;3H(~cRa#2vTZY*kt8sd@t9W|wY8bU zeAL(`navzQo^Ab2Xqy*#wY76?W!Cm3UZW9B@cp-an|Cp%w!JVTzqt{%og9Si)YMK* z?OM{Bc6hE`7rNoOb~E?|*|b~2a#pdH4XCM|tlI0neKmYH?d@~>-I%%GsR%pNKusOg z)Im)h)Z{lS!VdPSgL^udMTbEQB@S717=v0n$fLtT_F}dj{yXy_GVdt!j!$5ZI;JB7 za_N|bXUR!fDo}~4RL4v@)}jveX~-KiMSUIh-*Gy>qSub*-_fi)6`&$&@1)O8y-{~3 z-$p0(c2aMr1^kYzI?1ZjO15#3zxW4zbUK9{?R0^={CEDpLD)HhEIX&>N%Yk@8zqoq zXLWX#Tjw71A{Lo-9>r+X(0K~#?>qyu=sX8?bl$~DF5%A3?(FQ&F7E8&&Mxlk;?6Ga z>Qa}MxT8xV`s$*mE(bWw-yFkvUCwYG=XSXogk7D{H8&-x&D(UKGu`M(6w&lW&Rtiq z8CiAx6Sa2Ti~G7B!W~_&qwcQi?yBx?>h9*AZbf*N27H5iy1A#DjJlaow~<U{8Zzl7 zlWsp@KHcQfZ8huI$sYD$Ufs;7n>)MR!oA(@2VwUV<RCBhs{2dS#}0Kjo9=d@djeCL zNis`0jam0F%O213A>Sg09&+f>j~^I>@1Td7_At{PX4=C{draVGe&IJ3VIDp7(8G@Q zSj&1gu?0EyI2VLH)8M|IYU|m7u`I(3d+Mi`@1$3L3h^Ap@Xhpk5xw=YbG>R~AA0Gt zS99Lw13uzYKBo`r?j`G9@%SEkskzrAWYKFnvgjr6Ub61B0rT#)ogM6EFDHYrx9_^Q zz3*L+qP)z<e8!i2!*{fyJ)P)^%zDeLx6FFWthf7nn|p8f_nw3A(r;0Oy=B&0X1&*< zj^66%y_EyVrS}nzaw7<%0#fh<vW&_?0SY6psNz(jD%E*~*O7Nr6W-(#WE7?LD78na zH!2!4k23S9Sk&w{C_=wM5&8{^&~H$LeuE<P8x&!bdZW}ErQRs@MyWUIZ;o+-Q}{lj ze1lQG!KkZT$KFQW;a(7apN)#VM^EJP{d&#?VIO_<k+a{T2>Ucb-F?*E$E^JpMcC(S zTGE<!bfhye^k*Q08AcrQQMccq2>YyI9cu1lC;Mz?2mhe{K9`YmAGP+m%Of5KVRT4J zp27U1KgRr{Wf(2PX!DP5gZW3xGur&4-5os&Sw@?GwE0I*W-8_%Ezf9mMawf<p3(A* zmS?ouqRl_r{G-j^Z&HNOM^Q^mTGI10YKbxPnDUr;jG4!nx!<h_W8Ox#F(0DV7~fjV z_n31`Uk0GI7`4TWWjwPm=NNUxs4Hd}YKbx17}>;}#9U*{HRcjmxxsDj@h}McW+DsO z$WBi3ke@;np%^9bcc8CY`^vBH5Eiftx%bOWHQq;-{raHpe(LULzWqj!$V8?votgZ| zuPkCID_G51WY|yL{p?~t^X+#BHTQcQg#9C=ATzm8WB*c=rW}=#Z~y9;fB!~&NN?2E zUv2%>);|`#^!NWq^&d$B`s(i+>Mz^=vh6S1{>xd(CU&xi{T$*5|8S8jT;paC4tR<j z$YwxZ3ZTXTFY*#Ks7-yE^Dghx0=qh(Egk4gSNbuI2~1`hGmzl`-~Iq~4^a02bq`SY zfNlJVdI#)gF9$e`9T_0s0Vg<xJ^8`+@<So&@hwAHh(3R?GXt|C+kxghP^JTGqW*!e zqyB;F_xl#%z>oNp&uK?Ty3n0oL@^$951h|WB%|hmvL3jM75ssG2g-KfG3@ieb6nsu z_IcprAdG#MDyS<~U9swleHDGgzJ~f@8}kjm``9+LrxRUKS8NRWjg4azqmgy2tYar3 z-&py^sx?+7v0IQ!tomZjKUS8pzO&dn+~-jc4hl$5Mlz9w0u<&sic^tVsCSTh2Q@%e zgWNM{IXl?RJ`VC1@)&d+a~pIPdH9`-aBzf_q$Vxy9{e=Vkd5r*<asLd5%z2FFwA1G zy&1e6Sr69BV7(01%V50>(aVq&q~b}^;k+Ta$U|pjIHW&6pvEB=xx%#|9ICIOZ}T2@ zWT?A_u4Ww@f^b+q)HSR$Wf_Dy44cAKrjdk9hW+>aX11Z;VR9KJkKy_quFv6ic({Cr z7sr{yojKgz4wv<CeGjiiBkb#NJ371#-5J1eMv}l7+&_FND^Tz7|L&3daJl;pig5U4 z^f&w_^71<rVVu0<)Df41+~_T?AcZN#i@Zb)YEu{a#J$cN$S2Nh;yyuraqZ}cjN`f? z<G6vyC~hc;Ohm15)3G~ozNa`D$Ni3s<2E9*IGM#AKo4<xh|@#dCDc74BbmvH*^V&V z5qT+q+D8<n1bP@D!x43;huTLpMC~J*@)l-2!mLN=Wkd^lFb?w@VK+vmz<fqFq7{R& zgCl=N-6PdKaxrVz%64|Lhy5JnH0QX;6|QqL2>ljCI7;243SkdM6+_LV%2199)TRl| zd58D;m{0kFuaNhs?~(N=*^Zil`bYhV>_*9Ml=+Xk#(($T;a(8NhsZKsmhrNTmu0*x z<JA-|%XoFgt0lfX6{&(O<LmPpGKp7Dyxii|6#p4*>42KzyU`!tS$r%*kZrubRq>OU z%6yif-uP9>F<#yAyV%PC4s!(c$KU615GJVIZ(@WAsmX%66V&ZDF~S5pkWi8rP=A8@ z6V#s|%LG{_d`@e+&=>oeFqAk(k;p_QGmRvEV<q-7;SbC?VF&6;Fy938O)%etD_rLR z{|4dc2q{QK8q9pOT1T7r=$C28TbS)=S&nXj?`ib6e1|$m%XD;md|RVOuz;PM$1KM< zcT74m;QTT281pPS$wPk1B8M?@7*m<5RO2OHp(gSf(;jmfqrWkaf^cjx-bF@Z7qfxQ z$YHEGjWwsSdpOHAZezE`K1BcH)HN<MS;>yx#}%XqzSD6fcpi0)lgBuDjB7@7+&k_A iKI2QirX{WD68zu)Ng4jX|17ue|NZCx|KH)b@Ba^&=^N$% literal 217571 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.!4JUnU#}kOxFc7cDovomwHEi9$8n!x% zGO~SM%i{cn9e8VHd&Ck@4`wcCX^1BOxgP&Ww;?t*&&3gM%0Dk|t7|RALzdM0rERAY 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	K;bI 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�cQFH_kv?n8amR<qeKbVwXNKebYhM<U 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 diff --git a/MiniScanner/.DS_Store b/MiniScanner/.DS_Store index acf156a5b4057310c05955f3ceb8d582dcd6e107..b70afdd5908417f48436ff71e03f67913f48e0de 100644 GIT binary patch delta 42 ncmZn(XbIR*D$ZeOZmOeTWN0z@g0TJOJ>on0QA8&15%&N9ACV1X delta 24 dcmZn(XbIR*Dn9vyu>0mc;yd|4jLCb%JphDX3QGV0 diff --git a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift b/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift index 10553e7..3b490e4 100644 --- a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift +++ b/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift @@ -23,6 +23,7 @@ class CustomTabBarView: UIView { @IBOutlet weak var badgeView: UIView! @IBOutlet weak var badgeLabel: UILabel! @IBOutlet weak var scannedImageView: UIView! + @IBOutlet weak var tabbarImage: UIImageView! // MARK: - Properties var delegate: CustomTabBarViewDelegate? @@ -54,6 +55,8 @@ class CustomTabBarView: UIView { editImageView.backgroundColor = .buttonsBlue badgeView.layer.cornerRadius = 10 badgeView.backgroundColor = .red + + tabbarImage.image = UIDevice.current.userInterfaceIdiom == .pad ? UIImage(named: "tabbarIpad") : UIImage(named: "tabBar") } func updateScannedView(session: MultiPageScanSession!) { diff --git a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib b/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib index f0c3a9b..c5ffe6e 100644 --- a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib +++ b/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib @@ -18,6 +18,7 @@ <outlet property="editImageView" destination="hyG-kY-g3z" id="0jt-Qd-fPh"/> <outlet property="scannedImage" destination="Yp4-oH-9PB" id="BgP-9x-8xW"/> <outlet property="scannedImageView" destination="nU5-gk-PCy" id="Ufk-QS-iDQ"/> + <outlet property="tabbarImage" destination="tie-Je-CCG" id="QTQ-UN-xRH"/> <outlet property="view" destination="iN0-l3-epB" id="Cdo-uE-Do3"/> </connections> </placeholder> @@ -168,12 +169,12 @@ <constraint firstItem="tie-Je-CCG" firstAttribute="top" secondItem="hyG-kY-g3z" secondAttribute="bottom" constant="40" id="3V7-s3-PHj"/> <constraint firstAttribute="bottom" secondItem="UTH-SE-R2z" secondAttribute="bottom" constant="27" id="5dC-i0-b3F"/> <constraint firstItem="tie-Je-CCG" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="Bce-XC-xXN"/> + <constraint firstItem="bLE-0g-490" firstAttribute="centerX" secondItem="tie-Je-CCG" secondAttribute="centerX" id="HfA-Uv-S9g"/> <constraint firstAttribute="bottom" secondItem="bLE-0g-490" secondAttribute="bottom" constant="56" id="JjB-n8-7Pb"/> <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="nU5-gk-PCy" secondAttribute="trailing" constant="30" id="OG0-GS-N4g"/> <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="tie-Je-CCG" secondAttribute="trailing" id="TOJ-ZY-MNC"/> <constraint firstAttribute="bottom" secondItem="Fpi-N4-SyY" secondAttribute="bottom" constant="27" id="clP-UO-xXh"/> <constraint firstAttribute="bottom" secondItem="tie-Je-CCG" secondAttribute="bottom" id="dRT-MU-hlj"/> - <constraint firstItem="bLE-0g-490" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="eHN-D7-uvx"/> <constraint firstItem="Qnz-ei-Dxj" firstAttribute="top" secondItem="ByX-8g-Wtl" secondAttribute="top" constant="-10" id="fdw-Gt-POV"/> <constraint firstItem="Qnz-ei-Dxj" firstAttribute="trailing" secondItem="ByX-8g-Wtl" secondAttribute="trailing" constant="10" id="lKF-kQ-ADQ"/> <constraint firstItem="tie-Je-CCG" firstAttribute="top" secondItem="nU5-gk-PCy" secondAttribute="bottom" constant="35" id="rpo-up-sEz"/> diff --git a/MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.swift b/MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.swift new file mode 100644 index 0000000..ea9c7ae --- /dev/null +++ b/MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.swift @@ -0,0 +1,29 @@ +// +// PagerImageCollectionViewCell.swift +// MiniScanner +// +// Created by George Makhoul on 11/06/2024. +// Copyright © 2024 AppsNectar. All rights reserved. +// + +import UIKit +import FSPagerView +class PagerImageCollectionViewCell: UICollectionViewCell { + // MARK: - Outlets + @IBOutlet weak var cellImageView: UIImageView! + + // MARK: - Properties + var page: ScannedItem? { + didSet { + guard let cellImageView = cellImageView else { return } + cellImageView.image = page?.renderedImage?.retrieveImage() + cellImageView.contentMode = .scaleToFill + cellImageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin] + } + } + + // MARK: - LifeCycle + override func awakeFromNib() { + super.awakeFromNib() + } +} diff --git a/MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.xib b/MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.xib new file mode 100644 index 0000000..5fa0669 --- /dev/null +++ b/MiniScanner/Modules/EditViewController/CustomCells/PagerImageCollectionViewCell/PagerImageCollectionViewCell.xib @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> + <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="PagerImageCollectionViewCell" id="gTV-IL-0wX" customClass="PagerImageCollectionViewCell" customModule="MiniScanner" customModuleProvider="target"> + <rect key="frame" x="0.0" y="0.0" width="436" height="666"/> + <autoresizingMask key="autoresizingMask"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="436" height="666"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="W4u-LT-1Cf"> + <rect key="frame" x="20" y="0.0" width="396" height="666"/> + </imageView> + </subviews> + </view> + <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> + <constraints> + <constraint firstItem="W4u-LT-1Cf" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="20" id="2Kd-iV-l2K"/> + <constraint firstItem="W4u-LT-1Cf" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="Ucl-LD-RMN"/> + <constraint firstAttribute="bottom" secondItem="W4u-LT-1Cf" secondAttribute="bottom" id="Zmv-wC-TfB"/> + <constraint firstAttribute="trailing" secondItem="W4u-LT-1Cf" secondAttribute="trailing" constant="20" id="eJS-yD-UJc"/> + </constraints> + <size key="customSize" width="436" height="666"/> + <connections> + <outlet property="cellImageView" destination="W4u-LT-1Cf" id="6gN-JG-0d7"/> + </connections> + <point key="canvasLocation" x="134.35114503816794" y="-3.5211267605633805"/> + </collectionViewCell> + </objects> +</document> diff --git a/MiniScanner/Modules/EditViewController/CustomViews/BannerView.swift b/MiniScanner/Modules/EditViewController/CustomViews/BannerView.swift new file mode 100644 index 0000000..a6feec9 --- /dev/null +++ b/MiniScanner/Modules/EditViewController/CustomViews/BannerView.swift @@ -0,0 +1,140 @@ +// +// BannerView.swift +// MiniScanner +// +// Created by George Makhoul on 11/06/2024. +// Copyright © 2024 AppsNectar. All rights reserved. +// + +import UIKit +import FSPagerView + +protocol BannerViewDelegate { + func updateSelectedIndex(index: Int) +} + +class BannerView: UIView { + // MARK: - Outlets + @IBOutlet var view: UIView! + @IBOutlet weak var pagerView: FSPagerView!{ + didSet { + self.pagerView.register(FSPagerViewCell.self, forCellWithReuseIdentifier: "cell") + self.typeIndex = 3 + pagerView.dataSource = self + pagerView.delegate = self + + } + } + + fileprivate let transformerTypes: [FSPagerViewTransformerType] = [.crossFading, + .zoomOut, + .depth, + .linear, + .overlap, + .ferrisWheel, + .invertedFerrisWheel, + .coverFlow, + .cubic] + + fileprivate var typeIndex = 0 { + didSet { + let type = self.transformerTypes[typeIndex] + self.pagerView.transformer = FSPagerViewTransformer(type:type) + switch type { + case .crossFading, .zoomOut, .depth: + self.pagerView.itemSize = FSPagerView.automaticSize + self.pagerView.decelerationDistance = 1 + case .linear, .overlap: + let transform = CGAffineTransform(scaleX: 0.8, y: 0.75) + self.pagerView.itemSize = self.pagerView.frame.size.applying(transform) + self.pagerView.decelerationDistance = FSPagerView.automaticDistance + case .ferrisWheel, .invertedFerrisWheel: + self.pagerView.itemSize = CGSize(width: 180, height: 140) + self.pagerView.decelerationDistance = FSPagerView.automaticDistance + case .coverFlow: + self.pagerView.itemSize = CGSize(width: 220, height: 170) + self.pagerView.decelerationDistance = FSPagerView.automaticDistance + case .cubic: + let transform = CGAffineTransform(scaleX: 0.9, y: 0.9) + self.pagerView.itemSize = self.pagerView.frame.size.applying(transform) + self.pagerView.decelerationDistance = 1 + } + } + } + var delegate: BannerViewDelegate? + + // MARK: - Properties + + var scanSession:MultiPageScanSession? + + + // MARK: - Init + override init(frame: CGRect) { + super.init(frame: frame) + setupNib() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + + setupNib() + } + + private func setupNib() { + Bundle.main.loadNibNamed("BannerView", owner: self, options: nil) + + view.frame = bounds + view.autoresizingMask = [.flexibleHeight, .flexibleWidth] + + addSubview(view) + clearUI() + } + + override func layoutSubviews() { + super.layoutSubviews() + + clearUI() + } + + // MARK: - Methods + private func clearUI() { + view.backgroundColor = .clear + + } + + + + func set(session: MultiPageScanSession) { + self.scanSession = session + clearUI() + } + +} + + +extension BannerView: FSPagerViewDataSource,FSPagerViewDelegate { + func numberOfItems(in pagerView: FSPagerView) -> Int { + scanSession?.scannedItems.count ?? 0 + } + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) + cell.index = index + cell.delegate = self + if let item = scanSession?.scannedItems[index] { + cell.imageView?.image = item.renderedImage?.retrieveImage() + } + return cell + } + + func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) { + delegate?.updateSelectedIndex(index: targetIndex) + } + +} + +extension BannerView: FSPagerViewCellDelegate { + func delete(at: Int) { + scanSession?.remove(index: at) + pagerView.reloadData() + } +} diff --git a/MiniScanner/Modules/EditViewController/CustomViews/BannerView.xib b/MiniScanner/Modules/EditViewController/CustomViews/BannerView.xib new file mode 100644 index 0000000..e6de6b7 --- /dev/null +++ b/MiniScanner/Modules/EditViewController/CustomViews/BannerView.xib @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> + <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="System colors in document resources" minToolsVersion="11.0"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="BannerView" customModule="MiniScanner" customModuleProvider="target"> + <connections> + <outlet property="pagerView" destination="Qub-hE-fqd" id="DDB-71-UhP"/> + <outlet property="view" destination="iN0-l3-epB" id="Xaw-3Z-gtB"/> + </connections> + </placeholder> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view contentMode="scaleToFill" id="iN0-l3-epB"> + <rect key="frame" x="0.0" y="0.0" width="393" height="645"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qub-hE-fqd" customClass="FSPagerView" customModule="FSPagerView"> + <rect key="frame" x="0.0" y="0.0" width="393" height="645"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + </view> + </subviews> + <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="Qub-hE-fqd" secondAttribute="bottom" id="Azg-vd-VaB"/> + <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="Qub-hE-fqd" secondAttribute="trailing" id="NhM-Yt-UOY"/> + <constraint firstItem="Qub-hE-fqd" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="SP0-Gq-ams"/> + <constraint firstItem="Qub-hE-fqd" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="U0s-Q8-eFt"/> + </constraints> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <point key="canvasLocation" x="-11.450381679389313" y="-53.169014084507047"/> + </view> + </objects> + <resources> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/MiniScanner/Modules/EditViewController/EditViewController.swift b/MiniScanner/Modules/EditViewController/EditViewController.swift index e87eaa2..05b09ec 100644 --- a/MiniScanner/Modules/EditViewController/EditViewController.swift +++ b/MiniScanner/Modules/EditViewController/EditViewController.swift @@ -7,19 +7,67 @@ // import UIKit +import LNExtensionExecutor + public protocol EditViewControllerDelegate: NSObjectProtocol { func editViewController(_ editViewController: EditViewController, finished session: MultiPageScanSession) } public class EditViewController: UIViewController { + // MARK: - Outlets + @IBOutlet weak var banner: BannerView! + @IBOutlet weak var pageIndex: UILabel! - private var scanSession:MultiPageScanSession + // MARK: - Properties + private var scanSession:MultiPageScanSession? private var pages:Array<ScannedPageViewController> = [] - weak public var delegate:EditViewControllerDelegate? - + private var selectedIndex: Int = 0 + var payload: [Any] = [] + + lazy private var activityIndicator: UIActivityIndicatorView = { + let activityIndicator = UIActivityIndicatorView(style: .large) + activityIndicator.color = .white + activityIndicator.hidesWhenStopped = true + activityIndicator.translatesAutoresizingMaskIntoConstraints = false + return activityIndicator + }() + + // MARK: - LifeCycle public override func viewDidLoad() { super.viewDidLoad() + if let session = scanSession { + banner.set(session: session) + banner.delegate = self + updatePageLabel() + } + view.addSubview(activityIndicator) + } + + @IBAction func backIndex(_ sender: UIButton) { + if banner.pagerView.currentIndex != 0 { + banner.pagerView.scrollToItem(at: banner.pagerView.currentIndex - 1, animated: true) + selectedIndex = banner.pagerView.currentIndex - 1 + self.updatePageLabel() + } + } + + func updatePageLabel() { + if let session = scanSession { + if let url = session.scannedItems[selectedIndex].renderedImage { + payload = [url] + } + pageIndex.set(text: "\(selectedIndex + 1)/\(session.scannedItems.count)", color: .mainText, font: .regular(15)) + pageIndex.textAlignment = .center + } + } + + @IBAction func nextIndex(_ sender: UIButton) { + if banner.pagerView.currentIndex != (scanSession?.scannedItems.count ?? 0) - 1 { + banner.pagerView.scrollToItem(at: banner.pagerView.currentIndex + 1, animated: true) + selectedIndex = banner.pagerView.currentIndex + 1 + } + updatePageLabel() } public init(scanSession: MultiPageScanSession){ @@ -30,4 +78,83 @@ public class EditViewController: UIViewController { required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) should not be called for this class") } + + private func directShareWith(extensionBundleIdentifier: String) async { + do { + let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) + let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) + print("completed: \(completed) return items: \(returnItems)") + + } catch(let error) { + print("error: \(error.localizedDescription)") + } + } + + func printPDF(from url: URL) { + let printInfo = UIPrintInfo(dictionary:nil) + printInfo.jobName = url.lastPathComponent + printInfo.outputType = .general + + let printController = UIPrintInteractionController.shared + printController.printInfo = printInfo + + let pdfData = try? Data(contentsOf: url) + if pdfData != nil { + printController.printingItem = pdfData + } + + printController.present(animated: true, completionHandler: nil) + } + + @IBAction func whatsappShare(_ sender: UIButton) { + activityIndicator.startAnimating() + DispatchQueue.main.async { + + Task { + await self.directShareWith(extensionBundleIdentifier: ShareOptions.whatsapp) + } + self.activityIndicator.stopAnimating() + } + } + @IBAction func telegramTapped(_ sender: UIButton) { + activityIndicator.startAnimating() + DispatchQueue.main.async { + + Task { + await self.directShareWith(extensionBundleIdentifier: ShareOptions.telegram) + } + self.activityIndicator.stopAnimating() + } + } + @IBAction func gmailTapped(_ sender: UIButton) { + activityIndicator.startAnimating() + DispatchQueue.main.async { + Task { + await self.directShareWith(extensionBundleIdentifier: ShareOptions.gmail) + self.activityIndicator.stopAnimating() + } + } + } + @IBAction func printTapped(_ sender: UIButton) { + DispatchQueue.main.async { + self.printPDF(from: self.payload[0] as! URL) + } + } + @IBAction func moreTapped(_ sender: UIButton) { + DispatchQueue.main.async { + self.activityIndicator.startAnimating() + let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) + self.present(shareController, animated: true, completion: nil) + self.activityIndicator.stopAnimating() + } + + } +} + +// MARK: - BannerViewDelegate +extension EditViewController: BannerViewDelegate { + func updateSelectedIndex(index: Int) { + selectedIndex = index + updatePageLabel() + } } diff --git a/MiniScanner/Modules/EditViewController/EditViewController.xib b/MiniScanner/Modules/EditViewController/EditViewController.xib index 43e098f..a3a7a23 100644 --- a/MiniScanner/Modules/EditViewController/EditViewController.xib +++ b/MiniScanner/Modules/EditViewController/EditViewController.xib @@ -1,22 +1,193 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="System colors in document resources" minToolsVersion="11.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> + <customFonts key="customFonts"> + <array key="Poppins-Medium.ttf"> + <string>Poppins-Medium</string> + </array> + </customFonts> <objects> - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="EditViewController" customModuleProvider="target"> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="EditViewController" customModule="MiniScanner" customModuleProvider="target"> <connections> + <outlet property="banner" destination="4ep-ST-cZS" id="WFR-ov-H7F"/> + <outlet property="pageIndex" destination="cqF-h7-7PR" id="KbK-o3-cPN"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> </connections> </placeholder> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ep-ST-cZS" customClass="BannerView" customModule="MiniScanner" customModuleProvider="target"> + <rect key="frame" x="0.0" y="85" width="393" height="450"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="450" id="Lhx-9u-ceN"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Fw-PR-xtE"> + <rect key="frame" x="114.66666666666669" y="560" width="164" height="40"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="controller" translatesAutoresizingMaskIntoConstraints="NO" id="c82-Cp-Eo4"> + <rect key="frame" x="0.0" y="0.0" width="164" height="40"/> + </imageView> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Zhd-7n-Vkh"> + <rect key="frame" x="124" y="0.0" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="40" id="D2f-5b-aZ8"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <connections> + <action selector="nextIndex:" destination="-1" eventType="touchUpInside" id="nrV-wN-1Ee"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Oy-6E-tPl"> + <rect key="frame" x="0.0" y="0.0" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="40" id="9KN-fb-pri"/> + <constraint firstAttribute="width" constant="40" id="cEO-Jw-nEj"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <connections> + <action selector="backIndex:" destination="-1" eventType="touchUpInside" id="F5u-ng-VjG"/> + </connections> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1/4" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cqF-h7-7PR"> + <rect key="frame" x="39.999999999999986" y="0.0" width="84" height="40"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="c82-Cp-Eo4" secondAttribute="bottom" id="2d1-bT-5EI"/> + <constraint firstAttribute="trailing" secondItem="Zhd-7n-Vkh" secondAttribute="trailing" id="6bp-EB-meP"/> + <constraint firstItem="c82-Cp-Eo4" firstAttribute="leading" secondItem="7Fw-PR-xtE" secondAttribute="leading" id="7RC-iT-Vf0"/> + <constraint firstItem="cqF-h7-7PR" firstAttribute="leading" secondItem="3Oy-6E-tPl" secondAttribute="trailing" id="AcI-Y9-IDO"/> + <constraint firstItem="cqF-h7-7PR" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="top" id="C93-5G-WCi"/> + <constraint firstAttribute="bottom" secondItem="Zhd-7n-Vkh" secondAttribute="bottom" id="Fja-AQ-xAx"/> + <constraint firstItem="Zhd-7n-Vkh" firstAttribute="leading" secondItem="cqF-h7-7PR" secondAttribute="trailing" id="JcD-p2-dle"/> + <constraint firstAttribute="bottom" secondItem="3Oy-6E-tPl" secondAttribute="bottom" id="K3T-J0-1FG"/> + <constraint firstAttribute="trailing" secondItem="c82-Cp-Eo4" secondAttribute="trailing" id="KLD-VS-7QQ"/> + <constraint firstItem="c82-Cp-Eo4" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="top" id="LZd-UJ-Q5J"/> + <constraint firstAttribute="bottom" secondItem="cqF-h7-7PR" secondAttribute="bottom" id="Vgb-dH-wi7"/> + <constraint firstItem="Zhd-7n-Vkh" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="top" id="Xgg-ot-aB7"/> + <constraint firstAttribute="height" constant="40" id="ZQj-Kc-ocN"/> + <constraint firstItem="3Oy-6E-tPl" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="top" id="bWU-NK-37l"/> + <constraint firstAttribute="width" constant="164" id="gr9-CY-nP7"/> + <constraint firstItem="3Oy-6E-tPl" firstAttribute="leading" secondItem="7Fw-PR-xtE" secondAttribute="leading" id="x7d-hj-T82"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="s7Z-Yw-lu7"> + <rect key="frame" x="0.0" y="637" width="393" height="1"/> + <color key="backgroundColor" red="0.39215686274509803" green="0.39215686274509803" blue="0.39215686274509803" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="1" id="b33-Z4-kSQ"/> + </constraints> + </view> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Direct Share" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kl7-O6-xwc"> + <rect key="frame" x="147.33333333333334" y="650" width="98.333333333333343" height="22.666666666666629"/> + <fontDescription key="fontDescription" name="Poppins-Medium" family="Poppins" pointSize="16"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="12.5" translatesAutoresizingMaskIntoConstraints="NO" id="ZwN-3q-O93"> + <rect key="frame" x="51.666666666666657" y="687.66666666666663" width="290" height="48"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fla-g2-Pdd"> + <rect key="frame" x="0.0" y="0.0" width="47.666666666666664" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="more"/> + <connections> + <action selector="moreTapped:" destination="-1" eventType="touchUpInside" id="YbX-KR-hP2"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z1c-YS-zHn"> + <rect key="frame" x="60.333333333333343" y="0.0" width="48" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="print"/> + <connections> + <action selector="printTapped:" destination="-1" eventType="touchUpInside" id="yRu-RH-LWQ"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cU4-SH-dvs"> + <rect key="frame" x="121.00000000000001" y="0.0" width="47.666666666666671" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="gmail"/> + <connections> + <action selector="gmailTapped:" destination="-1" eventType="touchUpInside" id="poW-WI-acw"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Whx-iK-x70"> + <rect key="frame" x="181.33333333333334" y="0.0" width="48" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="telegram"/> + <connections> + <action selector="telegramTapped:" destination="-1" eventType="touchUpInside" id="YoB-5c-aP4"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tF8-Lh-ilb"> + <rect key="frame" x="242" y="0.0" width="48" height="48"/> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="whatsapp"/> + <connections> + <action selector="whatsappShare:" destination="-1" eventType="touchUpInside" id="DwL-37-TTO"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="height" constant="48" id="Z98-C8-xKI"/> + <constraint firstAttribute="width" constant="290" id="qa6-FY-tCL"/> + </constraints> + </stackView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z2A-Ww-p2a"> + <rect key="frame" x="0.0" y="748.66666666666663" width="393" height="1"/> + <color key="backgroundColor" red="0.3921568627" green="0.3921568627" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="1" id="XM1-pT-dSi"/> + </constraints> + </view> + </subviews> <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <constraints> + <constraint firstItem="Z2A-Ww-p2a" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="1Me-Z1-4pz"/> + <constraint firstItem="4ep-ST-cZS" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="5bx-89-IgC"/> + <constraint firstItem="7Fw-PR-xtE" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="63e-Me-RoR"/> + <constraint firstItem="4ep-ST-cZS" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="85" id="8Hd-pt-rYP"/> + <constraint firstItem="ZwN-3q-O93" firstAttribute="top" secondItem="Kl7-O6-xwc" secondAttribute="bottom" constant="15" id="DaI-bi-76l"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="s7Z-Yw-lu7" secondAttribute="trailing" id="JN5-8J-32W"/> + <constraint firstItem="Kl7-O6-xwc" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="OxI-gy-D1m"/> + <constraint firstItem="Z2A-Ww-p2a" firstAttribute="top" secondItem="ZwN-3q-O93" secondAttribute="bottom" constant="13" id="Suz-rh-hug"/> + <constraint firstAttribute="trailing" secondItem="Z2A-Ww-p2a" secondAttribute="trailing" id="gfx-Mq-f4P"/> + <constraint firstItem="ZwN-3q-O93" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="i57-eq-d1n"/> + <constraint firstItem="s7Z-Yw-lu7" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="ijP-xB-rji"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="4ep-ST-cZS" secondAttribute="trailing" id="k5T-1f-iEU"/> + <constraint firstItem="7Fw-PR-xtE" firstAttribute="top" secondItem="4ep-ST-cZS" secondAttribute="bottom" constant="25" id="qwO-vJ-TAZ"/> + <constraint firstItem="Kl7-O6-xwc" firstAttribute="top" secondItem="s7Z-Yw-lu7" secondAttribute="bottom" constant="12" id="vM8-xk-lNK"/> + <constraint firstItem="s7Z-Yw-lu7" firstAttribute="top" secondItem="7Fw-PR-xtE" secondAttribute="bottom" constant="37" id="w8y-bc-Noq"/> + </constraints> + <point key="canvasLocation" x="138.1679389312977" y="20.422535211267608"/> </view> </objects> + <resources> + <image name="controller" width="164" height="40"/> + <image name="gmail" width="48" height="48"/> + <image name="more" width="76" height="75"/> + <image name="print" width="68" height="67"/> + <image name="telegram" width="68" height="67"/> + <image name="whatsapp" width="68" height="67"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> </document> diff --git a/MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Contents.json b/MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Contents.json new file mode 100644 index 0000000..bff2205 --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Controller.svg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Controller.svg b/MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Controller.svg new file mode 100644 index 0000000..ea73dac --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/Controller.imageset/Controller.svg @@ -0,0 +1,5 @@ +<svg width="164" height="40" viewBox="0 0 164 40" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M16.5 24.5L12 20M12 20L16.5 15.5M12 20H24M4.5 20C4.5 27.4559 10.5441 33.5 18 33.5C25.4558 33.5 31.5 27.4559 31.5 20C31.5 12.5442 25.4558 6.5 18 6.5C10.5441 6.5 4.5 12.5442 4.5 20Z" stroke="#2C2727" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<rect x="50" width="64" height="40" rx="5" fill="#D9D9D9"/> +<path d="M147.5 24.5L152 20M152 20L147.5 15.5M152 20H140M159.5 20C159.5 27.4559 153.456 33.5 146 33.5C138.544 33.5 132.5 27.4559 132.5 20C132.5 12.5442 138.544 6.5 146 6.5C153.456 6.5 159.5 12.5442 159.5 20Z" stroke="#2C2727" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/Contents.json b/MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/Contents.json new file mode 100644 index 0000000..9dab6a6 --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "WhiteBar Ipad (1).svg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/WhiteBar Ipad (1).svg b/MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/WhiteBar Ipad (1).svg new file mode 100644 index 0000000..5ea6f6f --- /dev/null +++ b/MiniScanner/Supporting Files/Assets.xcassets/tabbarIpad.imageset/WhiteBar Ipad (1).svg @@ -0,0 +1,3 @@ +<svg width="834" height="94" viewBox="0 0 834 94" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M365.009 0H50C22.3858 0 0 22.3858 0 50V94H834V50C834 22.3858 811.614 0 784 0H468.991C468.458 28.2573 445.385 51 417 51C388.615 51 365.542 28.2573 365.009 0Z" fill="white"/> +</svg> diff --git a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift index 4c0d46f..81691ac 100644 --- a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift +++ b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift @@ -523,13 +523,16 @@ extension ScannerViewController: CustomTabBarViewDelegate { self.navigationController?.popViewController(animated: false) } func editButtonTapped() { - let alert = UIAlertController(title: "Alert!", message: "In progress and soon will be ready!!", preferredStyle: .alert) - - let okAction = UIAlertAction(title: "OK", style: .default) { (action) in - self.dismiss(animated: true) - } - alert.addAction(okAction) - self.present(alert, animated: true, completion: nil) +// let alert = UIAlertController(title: "Alert!", message: "In progress and soon will be ready!!", preferredStyle: .alert) +// +// let okAction = UIAlertAction(title: "OK", style: .default) { (action) in +// self.dismiss(animated: true) +// } +// alert.addAction(okAction) +// self.present(alert, animated: true, completion: nil) + print(multipageSession.scannedItems.count) + let editViewController = EditViewController(scanSession: self.multipageSession) + self.navigationController?.pushViewController(editViewController, animated: true) } func shareTapped() { @@ -562,15 +565,21 @@ extension ScannerViewController: CustomTabBarViewDelegate { // MARK: - ShareSheetViewControllerDelegate extension ScannerViewController: ShareSheetViewControllerDelegate { func whatsappTapped(name: String) { - saveFileAndShare(with: ShareOptions.whatsapp, name: name) + DispatchQueue.main.async { + self.saveFileAndShare(with: ShareOptions.whatsapp, name: name) + } } func telegramTapped(name: String) { - saveFileAndShare(with: ShareOptions.telegram, name: name) + DispatchQueue.main.async { + self.saveFileAndShare(with: ShareOptions.telegram, name: name) + } } func airdropTapped(name: String) { - saveFileAndShare(with: ShareOptions.gmail, name: name) + DispatchQueue.main.async { + self.saveFileAndShare(with: ShareOptions.gmail, name: name) + } } diff --git a/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.h b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.h new file mode 100755 index 0000000..ee8807e --- /dev/null +++ b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.h @@ -0,0 +1,74 @@ +// +// TYCyclePagerViewLayout.h +// TYCyclePagerViewDemo +// +// Created by tany on 2017/6/19. +// Copyright © 2017å¹´ tany. All rights reserved. +// + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, TYCyclePagerTransformLayoutType) { + TYCyclePagerTransformLayoutNormal, + TYCyclePagerTransformLayoutLinear, + TYCyclePagerTransformLayoutCoverflow, +}; + +@class TYCyclePagerTransformLayout; +@protocol TYCyclePagerTransformLayoutDelegate <NSObject> + +// initialize layout attributes +- (void)pagerViewTransformLayout:(TYCyclePagerTransformLayout *)pagerViewTransformLayout initializeTransformAttributes:(UICollectionViewLayoutAttributes *)attributes; + +// apply layout attributes +- (void)pagerViewTransformLayout:(TYCyclePagerTransformLayout *)pagerViewTransformLayout applyTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes; + +@end + + +@interface TYCyclePagerViewLayout : NSObject + +@property (nonatomic, assign) CGSize itemSize; +@property (nonatomic, assign) CGFloat itemSpacing; +@property (nonatomic, assign) UIEdgeInsets sectionInset; + +@property (nonatomic, assign) TYCyclePagerTransformLayoutType layoutType; + +@property (nonatomic, assign) CGFloat minimumScale; // sacle default 0.8 +@property (nonatomic, assign) CGFloat minimumAlpha; // alpha default 1.0 +@property (nonatomic, assign) CGFloat maximumAngle; // angle is % default 0.2 + +@property (nonatomic, assign) BOOL isInfiniteLoop; // infinte scroll +@property (nonatomic, assign) CGFloat rateOfChange; // scale and angle change rate +@property (nonatomic, assign) BOOL adjustSpacingWhenScroling; + +/** + pageView cell item vertical centering + */ +@property (nonatomic, assign) BOOL itemVerticalCenter; + +/** + first and last item horizontalc enter, when isInfiniteLoop is NO + */ +@property (nonatomic, assign) BOOL itemHorizontalCenter; + +// sectionInset +@property (nonatomic, assign, readonly) UIEdgeInsets onlyOneSectionInset; +@property (nonatomic, assign, readonly) UIEdgeInsets firstSectionInset; +@property (nonatomic, assign, readonly) UIEdgeInsets lastSectionInset; +@property (nonatomic, assign, readonly) UIEdgeInsets middleSectionInset; + +@end + + +@interface TYCyclePagerTransformLayout : UICollectionViewFlowLayout + +@property (nonatomic, strong) TYCyclePagerViewLayout *layout; + +@property (nonatomic, weak, nullable) id<TYCyclePagerTransformLayoutDelegate> delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.m b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.m new file mode 100755 index 0000000..8bd77ba --- /dev/null +++ b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerTransformLayout.m @@ -0,0 +1,300 @@ +// +// TYCyclePagerViewLayout.m +// TYCyclePagerViewDemo +// +// Created by tany on 2017/6/19. +// Copyright © 2017å¹´ tany. All rights reserved. +// + +#import "TYCyclePagerTransformLayout.h" + +typedef NS_ENUM(NSUInteger, TYTransformLayoutItemDirection) { + TYTransformLayoutItemLeft, + TYTransformLayoutItemCenter, + TYTransformLayoutItemRight, +}; + + +@interface TYCyclePagerTransformLayout () { + struct { + unsigned int applyTransformToAttributes :1; + unsigned int initializeTransformAttributes :1; + }_delegateFlags; +} + +@property (nonatomic, assign) BOOL applyTransformToAttributesDelegate; + +@end + + +@interface TYCyclePagerViewLayout () + +@property (nonatomic, weak) UIView *pageView; + +@end + + +@implementation TYCyclePagerTransformLayout + +- (instancetype)init { + if (self = [super init]) { + self.scrollDirection = UICollectionViewScrollDirectionHorizontal; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + self.scrollDirection = UICollectionViewScrollDirectionHorizontal; + } + return self; +} + +#pragma mark - getter setter + +- (void)setDelegate:(id<TYCyclePagerTransformLayoutDelegate>)delegate { + _delegate = delegate; + _delegateFlags.initializeTransformAttributes = [delegate respondsToSelector:@selector(pagerViewTransformLayout:initializeTransformAttributes:)]; + _delegateFlags.applyTransformToAttributes = [delegate respondsToSelector:@selector(pagerViewTransformLayout:applyTransformToAttributes:)]; +} + +- (void)setLayout:(TYCyclePagerViewLayout *)layout { + _layout = layout; + _layout.pageView = self.collectionView; + self.itemSize = _layout.itemSize; + self.minimumInteritemSpacing = _layout.itemSpacing; + self.minimumLineSpacing = _layout.itemSpacing; +} + +- (CGSize)itemSize { + if (!_layout) { + return [super itemSize]; + } + return _layout.itemSize; +} + +- (CGFloat)minimumLineSpacing { + if (!_layout) { + return [super minimumLineSpacing]; + } + return _layout.itemSpacing; +} + +- (CGFloat)minimumInteritemSpacing { + if (!_layout) { + return [super minimumInteritemSpacing]; + } + return _layout.itemSpacing; +} + +- (TYTransformLayoutItemDirection)directionWithCenterX:(CGFloat)centerX { + TYTransformLayoutItemDirection direction= TYTransformLayoutItemRight; + CGFloat contentCenterX = self.collectionView.contentOffset.x + CGRectGetWidth(self.collectionView.frame)/2; + if (ABS(centerX - contentCenterX) < 0.5) { + direction = TYTransformLayoutItemCenter; + }else if (centerX - contentCenterX < 0) { + direction = TYTransformLayoutItemLeft; + } + return direction; +} + +#pragma mark - layout + +-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds +{ + return _layout.layoutType == TYCyclePagerTransformLayoutNormal ? [super shouldInvalidateLayoutForBoundsChange:newBounds] : YES; +} + +- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect { + if (_delegateFlags.applyTransformToAttributes || _layout.layoutType != TYCyclePagerTransformLayoutNormal) { + NSArray *attributesArray = [[NSArray alloc] initWithArray:[super layoutAttributesForElementsInRect:rect] copyItems:YES]; + CGRect visibleRect = {self.collectionView.contentOffset,self.collectionView.bounds.size}; + for (UICollectionViewLayoutAttributes *attributes in attributesArray) { + if (!CGRectIntersectsRect(visibleRect, attributes.frame)) { + continue; + } + if (_delegateFlags.applyTransformToAttributes) { + [_delegate pagerViewTransformLayout:self applyTransformToAttributes:attributes]; + }else { + [self applyTransformToAttributes:attributes layoutType:_layout.layoutType]; + } + } + return attributesArray; + } + return [super layoutAttributesForElementsInRect:rect]; +} + +- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:indexPath]; + if (_delegateFlags.initializeTransformAttributes) { + [_delegate pagerViewTransformLayout:self initializeTransformAttributes:attributes]; + }else if(_layout.layoutType != TYCyclePagerTransformLayoutNormal){ + [self initializeTransformAttributes:attributes layoutType:_layout.layoutType]; + } + return attributes; +} + +#pragma mark - transform + +- (void)initializeTransformAttributes:(UICollectionViewLayoutAttributes *)attributes layoutType:(TYCyclePagerTransformLayoutType)layoutType { + switch (layoutType) { + case TYCyclePagerTransformLayoutLinear: + [self applyLinearTransformToAttributes:attributes scale:_layout.minimumScale alpha:_layout.minimumAlpha]; + break; + case TYCyclePagerTransformLayoutCoverflow: + { + [self applyCoverflowTransformToAttributes:attributes angle:_layout.maximumAngle alpha:_layout.minimumAlpha]; + break; + } + default: + break; + } +} + +- (void)applyTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes layoutType:(TYCyclePagerTransformLayoutType)layoutType { + switch (layoutType) { + case TYCyclePagerTransformLayoutLinear: + [self applyLinearTransformToAttributes:attributes]; + break; + case TYCyclePagerTransformLayoutCoverflow: + [self applyCoverflowTransformToAttributes:attributes]; + break; + default: + break; + } +} + +#pragma mark - LinearTransform + +- (void)applyLinearTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes { + CGFloat collectionViewWidth = self.collectionView.frame.size.width; + if (collectionViewWidth <= 0) { + return; + } + CGFloat centetX = self.collectionView.contentOffset.x + collectionViewWidth/2; + CGFloat delta = ABS(attributes.center.x - centetX); + CGFloat scale = MAX(1 - delta/collectionViewWidth*_layout.rateOfChange, _layout.minimumScale); + CGFloat alpha = MAX(1 - delta/collectionViewWidth, _layout.minimumAlpha); + [self applyLinearTransformToAttributes:attributes scale:scale alpha:alpha]; +} + +- (void)applyLinearTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes scale:(CGFloat)scale alpha:(CGFloat)alpha { + CGAffineTransform transform = CGAffineTransformMakeScale(scale, scale); + if (_layout.adjustSpacingWhenScroling) { + TYTransformLayoutItemDirection direction = [self directionWithCenterX:attributes.center.x]; + CGFloat translate = 0; + switch (direction) { + case TYTransformLayoutItemLeft: + translate = 1.15 * attributes.size.width*(1-scale)/2; + break; + case TYTransformLayoutItemRight: + translate = -1.15 * attributes.size.width*(1-scale)/2; + break; + default: + // center + scale = 1.0; + alpha = 1.0; + break; + } + transform = CGAffineTransformTranslate(transform,translate, 0); + } + attributes.transform = transform; + attributes.alpha = alpha; +} + +#pragma mark - CoverflowTransform + +- (void)applyCoverflowTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes{ + CGFloat collectionViewWidth = self.collectionView.frame.size.width; + if (collectionViewWidth <= 0) { + return; + } + CGFloat centetX = self.collectionView.contentOffset.x + collectionViewWidth/2; + CGFloat delta = ABS(attributes.center.x - centetX); + CGFloat angle = MIN(delta/collectionViewWidth*(1-_layout.rateOfChange), _layout.maximumAngle); + CGFloat alpha = MAX(1 - delta/collectionViewWidth, _layout.minimumAlpha); + [self applyCoverflowTransformToAttributes:attributes angle:angle alpha:alpha]; +} + +- (void)applyCoverflowTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes angle:(CGFloat)angle alpha:(CGFloat)alpha { + TYTransformLayoutItemDirection direction = [self directionWithCenterX:attributes.center.x]; + CATransform3D transform3D = CATransform3DIdentity; + transform3D.m34 = -0.002; + CGFloat translate = 0; + switch (direction) { + case TYTransformLayoutItemLeft: + translate = (1-cos(angle*1.2*M_PI))*attributes.size.width; + break; + case TYTransformLayoutItemRight: + translate = -(1-cos(angle*1.2*M_PI))*attributes.size.width; + angle = -angle; + break; + default: + // center + angle = 0; + alpha = 1; + break; + } + + transform3D = CATransform3DRotate(transform3D, M_PI*angle, 0, 1, 0); + if (_layout.adjustSpacingWhenScroling) { + transform3D = CATransform3DTranslate(transform3D, translate, 0, 0); + } + attributes.transform3D = transform3D; + attributes.alpha = alpha; + +} +@end + + +@implementation TYCyclePagerViewLayout + +- (instancetype)init { + if (self = [super init]) { + _itemVerticalCenter = YES; + _minimumScale = 0.8; + _minimumAlpha = 1.0; + _maximumAngle = 0.2; + _rateOfChange = 0.4; + _adjustSpacingWhenScroling = YES; + } + return self; +} + +#pragma mark - getter + +- (UIEdgeInsets)onlyOneSectionInset { + CGFloat leftSpace = _pageView && !_isInfiniteLoop && _itemHorizontalCenter ? (CGRectGetWidth(_pageView.frame) - _itemSize.width)/2 : _sectionInset.left; + CGFloat rightSpace = _pageView && !_isInfiniteLoop && _itemHorizontalCenter ? (CGRectGetWidth(_pageView.frame) - _itemSize.width)/2 : _sectionInset.right; + if (_itemVerticalCenter) { + CGFloat verticalSpace = (CGRectGetHeight(_pageView.frame) - _itemSize.height)/2; + return UIEdgeInsetsMake(verticalSpace, leftSpace, verticalSpace, rightSpace); + } + return UIEdgeInsetsMake(_sectionInset.top, leftSpace, _sectionInset.bottom, rightSpace); +} + +- (UIEdgeInsets)firstSectionInset { + if (_itemVerticalCenter) { + CGFloat verticalSpace = (CGRectGetHeight(_pageView.frame) - _itemSize.height)/2; + return UIEdgeInsetsMake(verticalSpace, _sectionInset.left, verticalSpace, _itemSpacing); + } + return UIEdgeInsetsMake(_sectionInset.top, _sectionInset.left, _sectionInset.bottom, _itemSpacing); +} + +- (UIEdgeInsets)lastSectionInset { + if (_itemVerticalCenter) { + CGFloat verticalSpace = (CGRectGetHeight(_pageView.frame) - _itemSize.height)/2; + return UIEdgeInsetsMake(verticalSpace, 0, verticalSpace, _sectionInset.right); + } + return UIEdgeInsetsMake(_sectionInset.top, 0, _sectionInset.bottom, _sectionInset.right); +} + +- (UIEdgeInsets)middleSectionInset { + if (_itemVerticalCenter) { + CGFloat verticalSpace = (CGRectGetHeight(_pageView.frame) - _itemSize.height)/2; + return UIEdgeInsetsMake(verticalSpace, 0, verticalSpace, _itemSpacing); + } + return _sectionInset; +} + +@end diff --git a/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.h b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.h new file mode 100755 index 0000000..c9c70a4 --- /dev/null +++ b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.h @@ -0,0 +1,180 @@ +// +// TYCyclePagerView.h +// TYCyclePagerViewDemo +// +// Created by tany on 2017/6/14. +// Copyright © 2017å¹´ tany. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import "TYCyclePagerTransformLayout.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef struct { + NSInteger index; + NSInteger section; +}TYIndexSection; + +// pagerView scrolling direction +typedef NS_ENUM(NSUInteger, TYPagerScrollDirection) { + TYPagerScrollDirectionLeft, + TYPagerScrollDirectionRight, +}; + +@class TYCyclePagerView; +@protocol TYCyclePagerViewDataSource <NSObject> + +- (NSInteger)numberOfItemsInPagerView:(TYCyclePagerView *)pageView; + +- (__kindof UICollectionViewCell *)pagerView:(TYCyclePagerView *)pagerView cellForItemAtIndex:(NSInteger)index; + +/** + return pagerView layout,and cache layout + */ +- (TYCyclePagerViewLayout *)layoutForPagerView:(TYCyclePagerView *)pageView; + +@end + +@protocol TYCyclePagerViewDelegate <NSObject> + +@optional + +/** + pagerView did scroll to new index page + */ +- (void)pagerView:(TYCyclePagerView *)pageView didScrollFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex; + +/** + pagerView did selected item cell + */ +- (void)pagerView:(TYCyclePagerView *)pageView didSelectedItemCell:(__kindof UICollectionViewCell *)cell atIndex:(NSInteger)index; +- (void)pagerView:(TYCyclePagerView *)pageView didSelectedItemCell:(__kindof UICollectionViewCell *)cell atIndexSection:(TYIndexSection)indexSection; + +// custom layout +- (void)pagerView:(TYCyclePagerView *)pageView initializeTransformAttributes:(UICollectionViewLayoutAttributes *)attributes; + +- (void)pagerView:(TYCyclePagerView *)pageView applyTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes; + + +// scrollViewDelegate + +- (void)pagerViewDidScroll:(TYCyclePagerView *)pageView; + +- (void)pagerViewWillBeginDragging:(TYCyclePagerView *)pageView; + +- (void)pagerViewDidEndDragging:(TYCyclePagerView *)pageView willDecelerate:(BOOL)decelerate; + +- (void)pagerViewWillBeginDecelerating:(TYCyclePagerView *)pageView; + +- (void)pagerViewDidEndDecelerating:(TYCyclePagerView *)pageView; + +- (void)pagerViewWillBeginScrollingAnimation:(TYCyclePagerView *)pageView; + +- (void)pagerViewDidEndScrollingAnimation:(TYCyclePagerView *)pageView; + +@end + + +@interface TYCyclePagerView : UIView + +// will be automatically resized to track the size of the pagerView +@property (nonatomic, strong, nullable) UIView *backgroundView; + +@property (nonatomic, weak, nullable) id<TYCyclePagerViewDataSource> dataSource; +@property (nonatomic, weak, nullable) id<TYCyclePagerViewDelegate> delegate; + +// pager view, don't set dataSource and delegate +@property (nonatomic, weak, readonly) UICollectionView *collectionView; +// pager view layout +@property (nonatomic, strong, readonly) TYCyclePagerViewLayout *layout; + +/** + is infinite cycle pageview + */ +@property (nonatomic, assign) BOOL isInfiniteLoop; + +/** + pagerView automatic scroll time interval, default 0,disable automatic + */ +@property (nonatomic, assign) CGFloat autoScrollInterval; + +@property (nonatomic, assign) BOOL reloadDataNeedResetIndex; + +/** + current page index + */ +@property (nonatomic, assign, readonly) NSInteger curIndex; +@property (nonatomic, assign, readonly) TYIndexSection indexSection; + +// scrollView property +@property (nonatomic, assign, readonly) CGPoint contentOffset; +@property (nonatomic, assign, readonly) BOOL tracking; +@property (nonatomic, assign, readonly) BOOL dragging; +@property (nonatomic, assign, readonly) BOOL decelerating; + + +/** + reload data, !!important!!: will clear layout and call delegate layoutForPagerView + */ +- (void)reloadData; + +/** + update data is reload data, but not clear layuot + */ +- (void)updateData; + +/** + if you only want update layout + */ +- (void)setNeedUpdateLayout; + +/** + will set layout nil and call delegate->layoutForPagerView + */ +- (void)setNeedClearLayout; + +/** + current index cell in pagerView + */ +- (__kindof UICollectionViewCell * _Nullable)curIndexCell; + +/** + visible cells in pageView + */ +- (NSArray<__kindof UICollectionViewCell *> *_Nullable)visibleCells; + + +/** + visible pageView indexs, maybe repeat index + */ +- (NSArray *)visibleIndexs; + +/** + scroll to item at index + */ +- (void)scrollToItemAtIndex:(NSInteger)index animate:(BOOL)animate; +- (void)scrollToItemAtIndexSection:(TYIndexSection)indexSection animate:(BOOL)animate; +/** + scroll to next or pre item + */ +- (void)scrollToNearlyIndexAtDirection:(TYPagerScrollDirection)direction animate:(BOOL)animate; + +/** + register pager view cell with class + */ +- (void)registerClass:(Class)Class forCellWithReuseIdentifier:(NSString *)identifier; + +/** + register pager view cell with nib + */ +- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier; + +/** + dequeue reusable cell for pagerView + */ +- (__kindof UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndex:(NSInteger)index; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.m b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.m new file mode 100755 index 0000000..a2f42d5 --- /dev/null +++ b/MiniScanner/Supporting Files/CyclePagerView/TYCyclePagerView.m @@ -0,0 +1,607 @@ +// +// TYCyclePagerView.m +// TYCyclePagerViewDemo +// +// Created by tany on 2017/6/14. +// Copyright © 2017å¹´ tany. All rights reserved. +// + +#import "TYCyclePagerView.h" + +NS_INLINE BOOL TYEqualIndexSection(TYIndexSection indexSection1,TYIndexSection indexSection2) { + return indexSection1.index == indexSection2.index && indexSection1.section == indexSection2.section; +} + +NS_INLINE TYIndexSection TYMakeIndexSection(NSInteger index, NSInteger section) { + TYIndexSection indexSection; + indexSection.index = index; + indexSection.section = section; + return indexSection; +} + +@interface TYCyclePagerView () <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, TYCyclePagerTransformLayoutDelegate> { + struct { + unsigned int pagerViewDidScroll :1; + unsigned int didScrollFromIndexToNewIndex :1; + unsigned int initializeTransformAttributes :1; + unsigned int applyTransformToAttributes :1; + }_delegateFlags; + struct { + unsigned int cellForItemAtIndex :1; + unsigned int layoutForPagerView :1; + }_dataSourceFlags; +} + +// UI +@property (nonatomic, weak) UICollectionView *collectionView; +@property (nonatomic, strong) TYCyclePagerViewLayout *layout; +@property (nonatomic, strong) NSTimer *timer; + +// Data +@property (nonatomic, assign) NSInteger numberOfItems; + +@property (nonatomic, assign) NSInteger dequeueSection; +@property (nonatomic, assign) TYIndexSection beginDragIndexSection; +@property (nonatomic, assign) NSInteger firstScrollIndex; + +@property (nonatomic, assign) BOOL needClearLayout; +@property (nonatomic, assign) BOOL didReloadData; +@property (nonatomic, assign) BOOL didLayout; +@property (nonatomic, assign) BOOL needResetIndex; + +@end + +#define kPagerViewMaxSectionCount 200 +#define kPagerViewMinSectionCount 18 + +@implementation TYCyclePagerView + +#pragma mark - life Cycle + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self configureProperty]; + + [self addCollectionView]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + [self configureProperty]; + + [self addCollectionView]; + } + return self; +} + +- (void)configureProperty { + _needResetIndex = NO; + _didReloadData = NO; + _didLayout = NO; + _autoScrollInterval = 0; + _isInfiniteLoop = YES; + _beginDragIndexSection.index = 0; + _beginDragIndexSection.section = 0; + _indexSection.index = -1; + _indexSection.section = -1; + _firstScrollIndex = -1; +} + +- (void)addCollectionView { + TYCyclePagerTransformLayout *layout = [[TYCyclePagerTransformLayout alloc]init]; + UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout]; + layout.delegate = _delegateFlags.applyTransformToAttributes ? self : nil;; + collectionView.backgroundColor = [UIColor clearColor]; + collectionView.dataSource = self; + collectionView.delegate = self; + collectionView.pagingEnabled = NO; + collectionView.decelerationRate = 1-0.0076; + if ([collectionView respondsToSelector:@selector(setPrefetchingEnabled:)]) { + collectionView.prefetchingEnabled = NO; + } + collectionView.showsHorizontalScrollIndicator = NO; + collectionView.showsVerticalScrollIndicator = NO; + [self addSubview:collectionView]; + _collectionView = collectionView; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + if (!newSuperview) { + [self removeTimer]; + }else { + [self removeTimer]; + if (_autoScrollInterval > 0) { + [self addTimer]; + } + } +} + + +#pragma mark - timer + +- (void)addTimer { + if (_timer || _autoScrollInterval <= 0) { + return; + } + _timer = [NSTimer timerWithTimeInterval:_autoScrollInterval target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; + [[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes]; +} + +- (void)removeTimer { + if (!_timer) { + return; + } + [_timer invalidate]; + _timer = nil; +} + +- (void)timerFired:(NSTimer *)timer { + if (!self.superview || !self.window || _numberOfItems == 0 || self.tracking) { + return; + } + + [self scrollToNearlyIndexAtDirection:TYPagerScrollDirectionRight animate:YES]; +} + +#pragma mark - getter + +- (TYCyclePagerViewLayout *)layout { + if (!_layout) { + if (_dataSourceFlags.layoutForPagerView) { + _layout = [_dataSource layoutForPagerView:self]; + _layout.isInfiniteLoop = _isInfiniteLoop; + } + if (_layout.itemSize.width <= 0 || _layout.itemSize.height <= 0) { + _layout = nil; + } + } + return _layout; +} + +- (NSInteger)curIndex { + return _indexSection.index; +} + +- (CGPoint)contentOffset { + return _collectionView.contentOffset; +} + +- (BOOL)tracking { + return _collectionView.tracking; +} + +- (BOOL)dragging { + return _collectionView.dragging; +} + +- (BOOL)decelerating { + return _collectionView.decelerating; +} + +- (UIView *)backgroundView { + return _collectionView.backgroundView; +} + +- (__kindof UICollectionViewCell *)curIndexCell { + return [_collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:_indexSection.index inSection:_indexSection.section]]; +} + +- (NSArray<__kindof UICollectionViewCell *> *)visibleCells { + return _collectionView.visibleCells; +} + +- (NSArray *)visibleIndexs { + NSMutableArray *indexs = [NSMutableArray array]; + for (NSIndexPath *indexPath in _collectionView.indexPathsForVisibleItems) { + [indexs addObject:@(indexPath.item)]; + } + return [indexs copy]; +} + +#pragma mark - setter + +- (void)setBackgroundView:(UIView *)backgroundView { + [_collectionView setBackgroundView:backgroundView]; +} + +- (void)setAutoScrollInterval:(CGFloat)autoScrollInterval { + _autoScrollInterval = autoScrollInterval; + [self removeTimer]; + if (autoScrollInterval > 0 && self.superview) { + [self addTimer]; + } +} + +- (void)setDelegate:(id<TYCyclePagerViewDelegate>)delegate { + _delegate = delegate; + _delegateFlags.pagerViewDidScroll = [delegate respondsToSelector:@selector(pagerViewDidScroll:)]; + _delegateFlags.didScrollFromIndexToNewIndex = [delegate respondsToSelector:@selector(pagerView:didScrollFromIndex:toIndex:)]; + _delegateFlags.initializeTransformAttributes = [delegate respondsToSelector:@selector(pagerView:initializeTransformAttributes:)]; + _delegateFlags.applyTransformToAttributes = [delegate respondsToSelector:@selector(pagerView:applyTransformToAttributes:)]; + if (self.collectionView && self.collectionView.collectionViewLayout) { + ((TYCyclePagerTransformLayout *)self.collectionView.collectionViewLayout).delegate = _delegateFlags.applyTransformToAttributes ? self : nil; + } +} + +- (void)setDataSource:(id<TYCyclePagerViewDataSource>)dataSource { + _dataSource = dataSource; + _dataSourceFlags.cellForItemAtIndex = [dataSource respondsToSelector:@selector(pagerView:cellForItemAtIndex:)]; + _dataSourceFlags.layoutForPagerView = [dataSource respondsToSelector:@selector(layoutForPagerView:)]; +} + +#pragma mark - public + +- (void)reloadData { + _didReloadData = YES; + _needResetIndex = YES; + [self setNeedClearLayout]; + [self clearLayout]; + [self updateData]; +} + +// not clear layout +- (void)updateData { + [self updateLayout]; + _numberOfItems = [_dataSource numberOfItemsInPagerView:self]; + [_collectionView reloadData]; + if (!_didLayout && !CGRectIsEmpty(self.collectionView.frame) && _indexSection.index < 0) { + _didLayout = YES; + } + BOOL needResetIndex = _needResetIndex && _reloadDataNeedResetIndex; + _needResetIndex = NO; + if (needResetIndex) { + [self removeTimer]; + } + [self resetPagerViewAtIndex:(_indexSection.index < 0 && !CGRectIsEmpty(self.collectionView.frame)) || needResetIndex ? 0 :_indexSection.index]; + if (needResetIndex) { + [self addTimer]; + } +} + +- (void)scrollToNearlyIndexAtDirection:(TYPagerScrollDirection)direction animate:(BOOL)animate { + TYIndexSection indexSection = [self nearlyIndexPathAtDirection:direction]; + [self scrollToItemAtIndexSection:indexSection animate:animate]; +} + +- (void)scrollToItemAtIndex:(NSInteger)index animate:(BOOL)animate { + if (!_didLayout && _didReloadData) { + _firstScrollIndex = index; + }else { + _firstScrollIndex = -1; + } + if (!_isInfiniteLoop) { + [self scrollToItemAtIndexSection:TYMakeIndexSection(index, 0) animate:animate]; + return; + } + + [self scrollToItemAtIndexSection:TYMakeIndexSection(index, index >= self.curIndex ? _indexSection.section : _indexSection.section+1) animate:animate]; +} + +- (void)scrollToItemAtIndexSection:(TYIndexSection)indexSection animate:(BOOL)animate { + if (_numberOfItems <= 0 || ![self isValidIndexSection:indexSection]) { + //NSLog(@"scrollToItemAtIndex: item indexSection is invalid!"); + return; + } + + if (animate && [_delegate respondsToSelector:@selector(pagerViewWillBeginScrollingAnimation:)]) { + [_delegate pagerViewWillBeginScrollingAnimation:self]; + } + CGFloat offset = [self caculateOffsetXAtIndexSection:indexSection]; + [_collectionView setContentOffset:CGPointMake(offset, _collectionView.contentOffset.y) animated:animate]; +} + +- (void)registerClass:(Class)Class forCellWithReuseIdentifier:(NSString *)identifier { + [_collectionView registerClass:Class forCellWithReuseIdentifier:identifier]; +} + +- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier { + [_collectionView registerNib:nib forCellWithReuseIdentifier:identifier]; +} + +- (__kindof UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndex:(NSInteger)index { + UICollectionViewCell *cell = [_collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:[NSIndexPath indexPathForItem:index inSection:_dequeueSection]]; + return cell; +} + +#pragma mark - configure layout + +- (void)updateLayout { + if (!self.layout) { + return; + } + self.layout.isInfiniteLoop = _isInfiniteLoop; + ((TYCyclePagerTransformLayout *)_collectionView.collectionViewLayout).layout = self.layout; +} + +- (void)clearLayout { + if (_needClearLayout) { + _layout = nil; + _needClearLayout = NO; + } +} + +- (void)setNeedClearLayout { + _needClearLayout = YES; +} + +- (void)setNeedUpdateLayout { + if (!self.layout) { + return; + } + [self clearLayout]; + [self updateLayout]; + [_collectionView.collectionViewLayout invalidateLayout]; + [self resetPagerViewAtIndex:_indexSection.index < 0 ? 0 :_indexSection.index]; +} + +#pragma mark - pager index + +- (BOOL)isValidIndexSection:(TYIndexSection)indexSection { + return indexSection.index >= 0 && indexSection.index < _numberOfItems && indexSection.section >= 0 && indexSection.section < kPagerViewMaxSectionCount; +} + +- (TYIndexSection)nearlyIndexPathAtDirection:(TYPagerScrollDirection)direction{ + return [self nearlyIndexPathForIndexSection:_indexSection direction:direction]; +} + +- (TYIndexSection)nearlyIndexPathForIndexSection:(TYIndexSection)indexSection direction:(TYPagerScrollDirection)direction { + if (indexSection.index < 0 || indexSection.index >= _numberOfItems) { + return indexSection; + } + + if (!_isInfiniteLoop) { + if (direction == TYPagerScrollDirectionRight && indexSection.index == _numberOfItems - 1) { + return _autoScrollInterval > 0 ? TYMakeIndexSection(0, 0) : indexSection; + } else if (direction == TYPagerScrollDirectionRight) { + return TYMakeIndexSection(indexSection.index+1, 0); + } + + if (indexSection.index == 0) { + return _autoScrollInterval > 0 ? TYMakeIndexSection(_numberOfItems - 1, 0) : indexSection; + } + return TYMakeIndexSection(indexSection.index-1, 0); + } + + if (direction == TYPagerScrollDirectionRight) { + if (indexSection.index < _numberOfItems-1) { + return TYMakeIndexSection(indexSection.index+1, indexSection.section); + } + if (indexSection.section >= kPagerViewMaxSectionCount-1) { + return TYMakeIndexSection(indexSection.index, kPagerViewMaxSectionCount-1); + } + return TYMakeIndexSection(0, indexSection.section+1); + } + + if (indexSection.index > 0) { + return TYMakeIndexSection(indexSection.index-1, indexSection.section); + } + if (indexSection.section <= 0) { + return TYMakeIndexSection(indexSection.index, 0); + } + return TYMakeIndexSection(_numberOfItems-1, indexSection.section-1); +} + +- (TYIndexSection)caculateIndexSectionWithOffsetX:(CGFloat)offsetX { + if (_numberOfItems <= 0) { + return TYMakeIndexSection(0, 0); + } + UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)_collectionView.collectionViewLayout; + CGFloat leftEdge = _isInfiniteLoop ? _layout.sectionInset.left : _layout.onlyOneSectionInset.left; + CGFloat width = CGRectGetWidth(_collectionView.frame); + CGFloat middleOffset = offsetX + width/2; + CGFloat itemWidth = layout.itemSize.width + layout.minimumInteritemSpacing; + NSInteger curIndex = 0; + NSInteger curSection = 0; + if (middleOffset - leftEdge >= 0) { + NSInteger itemIndex = (middleOffset - leftEdge+layout.minimumInteritemSpacing/2)/itemWidth; + if (itemIndex < 0) { + itemIndex = 0; + }else if (itemIndex >= _numberOfItems*kPagerViewMaxSectionCount) { + itemIndex = _numberOfItems*kPagerViewMaxSectionCount-1; + } + curIndex = itemIndex%_numberOfItems; + curSection = itemIndex/_numberOfItems; + } + return TYMakeIndexSection(curIndex, curSection); +} + +- (CGFloat)caculateOffsetXAtIndexSection:(TYIndexSection)indexSection{ + if (_numberOfItems == 0) { + return 0; + } + UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)_collectionView.collectionViewLayout; + UIEdgeInsets edge = _isInfiniteLoop ? _layout.sectionInset : _layout.onlyOneSectionInset; + CGFloat leftEdge = edge.left; + CGFloat rightEdge = edge.right; + CGFloat width = CGRectGetWidth(_collectionView.frame); + CGFloat itemWidth = layout.itemSize.width + layout.minimumInteritemSpacing; + CGFloat offsetX = 0; + if (!_isInfiniteLoop && !_layout.itemHorizontalCenter && indexSection.index == _numberOfItems - 1) { + offsetX = leftEdge + itemWidth*(indexSection.index + indexSection.section*_numberOfItems) - (width - itemWidth) - layout.minimumInteritemSpacing + rightEdge; + }else { + offsetX = leftEdge + itemWidth*(indexSection.index + indexSection.section*_numberOfItems) - layout.minimumInteritemSpacing/2 - (width - itemWidth)/2; + } + return MAX(offsetX, 0); +} + +- (void)resetPagerViewAtIndex:(NSInteger)index { + if (_didLayout && _firstScrollIndex >= 0) { + index = _firstScrollIndex; + _firstScrollIndex = -1; + } + if (index < 0) { + return; + } + if (index >= _numberOfItems) { + index = 0; + } + [self scrollToItemAtIndexSection:TYMakeIndexSection(index, _isInfiniteLoop ? kPagerViewMaxSectionCount/3 : 0) animate:NO]; + if (!_isInfiniteLoop && _indexSection.index < 0) { + [self scrollViewDidScroll:_collectionView]; + } +} + +- (void)recyclePagerViewIfNeed { + if (!_isInfiniteLoop) { + return; + } + if (_indexSection.section > kPagerViewMaxSectionCount - kPagerViewMinSectionCount || _indexSection.section < kPagerViewMinSectionCount) { + [self resetPagerViewAtIndex:_indexSection.index]; + } +} + +#pragma mark - UICollectionViewDataSource + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return _isInfiniteLoop ? kPagerViewMaxSectionCount : 1; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + _numberOfItems = [_dataSource numberOfItemsInPagerView:self]; + return _numberOfItems; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + _dequeueSection = indexPath.section; + if (_dataSourceFlags.cellForItemAtIndex) { + return [_dataSource pagerView:self cellForItemAtIndex:indexPath.row]; + } + NSAssert(NO, @"pagerView cellForItemAtIndex: is nil!"); + return nil; +} + +#pragma mark - UICollectionViewDelegateFlowLayout + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + if (!_isInfiniteLoop) { + return _layout.onlyOneSectionInset; + } + if (section == 0 ) { + return _layout.firstSectionInset; + }else if (section == kPagerViewMaxSectionCount -1) { + return _layout.lastSectionInset; + } + return _layout.middleSectionInset; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; + if ([_delegate respondsToSelector:@selector(pagerView:didSelectedItemCell:atIndex:)]) { + [_delegate pagerView:self didSelectedItemCell:cell atIndex:indexPath.item]; + } + if ([_delegate respondsToSelector:@selector(pagerView:didSelectedItemCell:atIndexSection:)]) { + [_delegate pagerView:self didSelectedItemCell:cell atIndexSection:TYMakeIndexSection(indexPath.item, indexPath.section)]; + } +} + +#pragma mark - UIScrollViewDelegate + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (!_didLayout) { + return; + } + TYIndexSection newIndexSection = [self caculateIndexSectionWithOffsetX:scrollView.contentOffset.x]; + if (_numberOfItems <= 0 || ![self isValidIndexSection:newIndexSection]) { + NSLog(@"inVlaidIndexSection:(%ld,%ld)!",(long)newIndexSection.index,(long)newIndexSection.section); + return; + } + TYIndexSection indexSection = _indexSection; + _indexSection = newIndexSection; + + if (_delegateFlags.pagerViewDidScroll) { + [_delegate pagerViewDidScroll:self]; + } + + if (_delegateFlags.didScrollFromIndexToNewIndex && !TYEqualIndexSection(_indexSection, indexSection)) { + //NSLog(@"curIndex %ld",(long)_indexSection.index); + [_delegate pagerView:self didScrollFromIndex:MAX(indexSection.index, 0) toIndex:_indexSection.index]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + if (_autoScrollInterval > 0) { + [self removeTimer]; + } + _beginDragIndexSection = [self caculateIndexSectionWithOffsetX:scrollView.contentOffset.x]; + if ([_delegate respondsToSelector:@selector(pagerViewWillBeginDragging:)]) { + [_delegate pagerViewWillBeginDragging:self]; + } +} + +- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { + if (fabs(velocity.x) < 0.35 || !TYEqualIndexSection(_beginDragIndexSection, _indexSection)) { + targetContentOffset->x = [self caculateOffsetXAtIndexSection:_indexSection]; + return; + } + TYPagerScrollDirection direction = TYPagerScrollDirectionRight; + if ((scrollView.contentOffset.x < 0 && targetContentOffset->x <= 0) || (targetContentOffset->x < scrollView.contentOffset.x && scrollView.contentOffset.x < scrollView.contentSize.width - scrollView.frame.size.width)) { + direction = TYPagerScrollDirectionLeft; + } + TYIndexSection indexSection = [self nearlyIndexPathForIndexSection:_indexSection direction:direction]; + targetContentOffset->x = [self caculateOffsetXAtIndexSection:indexSection]; +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (_autoScrollInterval > 0) { + [self addTimer]; + } + if ([_delegate respondsToSelector:@selector(pagerViewDidEndDragging:willDecelerate:)]) { + [_delegate pagerViewDidEndDragging:self willDecelerate:decelerate]; + } +} + +- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { + if ([_delegate respondsToSelector:@selector(pagerViewWillBeginDecelerating:)]) { + [_delegate pagerViewWillBeginDecelerating:self]; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + [self recyclePagerViewIfNeed]; + if ([_delegate respondsToSelector:@selector(pagerViewDidEndDecelerating:)]) { + [_delegate pagerViewDidEndDecelerating:self]; + } +} + +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + [self recyclePagerViewIfNeed]; + if ([_delegate respondsToSelector:@selector(pagerViewDidEndScrollingAnimation:)]) { + [_delegate pagerViewDidEndScrollingAnimation:self]; + } +} + +#pragma mark - TYCyclePagerTransformLayoutDelegate + +- (void)pagerViewTransformLayout:(TYCyclePagerTransformLayout *)pagerViewTransformLayout initializeTransformAttributes:(UICollectionViewLayoutAttributes *)attributes { + if (_delegateFlags.initializeTransformAttributes) { + [_delegate pagerView:self initializeTransformAttributes:attributes]; + } +} + +- (void)pagerViewTransformLayout:(TYCyclePagerTransformLayout *)pagerViewTransformLayout applyTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes { + if (_delegateFlags.applyTransformToAttributes) { + [_delegate pagerView:self applyTransformToAttributes:attributes]; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + BOOL needUpdateLayout = !CGRectEqualToRect(_collectionView.frame, self.bounds); + _collectionView.frame = self.bounds; + if ((_indexSection.section < 0 || needUpdateLayout) && (_numberOfItems > 0 || _didReloadData)) { + _didLayout = YES; + [self setNeedUpdateLayout]; + } +} + +- (void)dealloc { + ((TYCyclePagerTransformLayout *)_collectionView.collectionViewLayout).delegate = nil; + _collectionView.delegate = nil; + _collectionView.dataSource = nil; +} + +@end + + diff --git a/MiniScanner/Supporting Files/CyclePagerView/TYPageControl.h b/MiniScanner/Supporting Files/CyclePagerView/TYPageControl.h new file mode 100755 index 0000000..584596a --- /dev/null +++ b/MiniScanner/Supporting Files/CyclePagerView/TYPageControl.h @@ -0,0 +1,47 @@ +// +// TYPageControl.h +// TYCyclePagerViewDemo +// +// Created by tany on 2017/6/20. +// Copyright © 2017å¹´ tany. All rights reserved. +// + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@interface TYPageControl : UIControl + +@property (nonatomic, assign) NSInteger numberOfPages; // default is 0 +@property (nonatomic, assign) NSInteger currentPage; // default is 0. value pinned to 0..numberOfPages-1 + +@property (nonatomic, assign) BOOL hidesForSinglePage; // hide the the indicator if there is only one page. default is NO + +@property (nonatomic, assign) CGFloat pageIndicatorSpaing; +@property (nonatomic, assign) UIEdgeInsets contentInset; // center will ignore this +@property (nonatomic, assign ,readonly) CGSize contentSize; // real content size + +// override super +//@property (nonatomic, assign) UIControlContentVerticalAlignment contentVerticalAlignment; // how to position content vertically inside control. default is center +//@property (nonatomic, assign) UIControlContentHorizontalAlignment contentHorizontalAlignment; // how to position content hozontally inside control. default is center + +// indicatorTint color +@property (nullable, nonatomic,strong) UIColor *pageIndicatorTintColor; +@property (nullable, nonatomic,strong) UIColor *currentPageIndicatorTintColor; + +// indicator image +@property (nullable, nonatomic,strong) UIImage *pageIndicatorImage; +@property (nullable, nonatomic,strong) UIImage *currentPageIndicatorImage; + +@property (nonatomic, assign) UIViewContentMode indicatorImageContentMode; // default is UIViewContentModeCenter + +@property (nonatomic, assign) CGSize pageIndicatorSize; // indicator size +@property (nonatomic, assign) CGSize currentPageIndicatorSize; // default pageIndicatorSize + +@property (nonatomic, assign) CGFloat animateDuring; // default 0.3 + +- (void)setCurrentPage:(NSInteger)currentPage animate:(BOOL)animate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MiniScanner/Supporting Files/CyclePagerView/TYPageControl.m b/MiniScanner/Supporting Files/CyclePagerView/TYPageControl.m new file mode 100755 index 0000000..672998a --- /dev/null +++ b/MiniScanner/Supporting Files/CyclePagerView/TYPageControl.m @@ -0,0 +1,285 @@ +// +// TYPageControl.m +// TYCyclePagerViewDemo +// +// Created by tany on 2017/6/20. +// Copyright © 2017å¹´ tany. All rights reserved. +// + +#import "TYPageControl.h" + +@interface TYPageControl () +// UI +@property (nonatomic, strong) NSArray<UIImageView *> *indicatorViews; + +// Data +@property (nonatomic, assign) BOOL forceUpdate; + +@end + +@implementation TYPageControl + +#pragma mark - life cycle + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self configurePropertys]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + [self configurePropertys]; + } + return self; +} + +- (void)configurePropertys { + self.userInteractionEnabled = NO; + _forceUpdate = NO; + _animateDuring = 0.3; + _pageIndicatorSpaing = 10; + _indicatorImageContentMode = UIViewContentModeCenter; + _pageIndicatorSize = CGSizeMake(6,6); + _currentPageIndicatorSize = _pageIndicatorSize; + _pageIndicatorTintColor = [UIColor colorWithRed:128/255. green:128/255. blue:128/255. alpha:1]; + _currentPageIndicatorTintColor = [UIColor whiteColor]; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + if (newSuperview) { + _forceUpdate = YES; + [self updateIndicatorViews]; + _forceUpdate = NO; + } +} + +#pragma mark - getter setter + +- (CGSize)contentSize { + CGFloat width = (_indicatorViews.count - 1) * (_pageIndicatorSize.width + _pageIndicatorSpaing) + _pageIndicatorSize.width + _contentInset.left +_contentInset.right; + CGFloat height = _currentPageIndicatorSize.height + _contentInset.top + _contentInset.bottom; + return CGSizeMake(width, height); +} + +- (void)setNumberOfPages:(NSInteger)numberOfPages { + if (numberOfPages == _numberOfPages) { + return; + } + _numberOfPages = numberOfPages; + if (_currentPage >= numberOfPages) { + _currentPage = 0; + } + [self updateIndicatorViews]; + if (_indicatorViews.count > 0) { + [self setNeedsLayout]; + } +} + +- (void)setCurrentPage:(NSInteger)currentPage { + if (_currentPage == currentPage || _indicatorViews.count <= currentPage) { + return; + } + _currentPage = currentPage; + if (!CGSizeEqualToSize(_currentPageIndicatorSize, _pageIndicatorSize)) { + [self setNeedsLayout]; + } + [self updateIndicatorViewsBehavior]; + if (self.userInteractionEnabled) { + [self sendActionsForControlEvents:UIControlEventValueChanged]; + } +} + +- (void)setCurrentPage:(NSInteger)currentPage animate:(BOOL)animate { + if (animate) { + [UIView animateWithDuration:_animateDuring animations:^{ + [self setCurrentPage:currentPage]; + }]; + }else { + [self setCurrentPage:currentPage]; + } +} + +- (void)setPageIndicatorImage:(UIImage *)pageIndicatorImage { + _pageIndicatorImage = pageIndicatorImage; + [self updateIndicatorViewsBehavior]; +} + +- (void)setCurrentPageIndicatorImage:(UIImage *)currentPageIndicatorImage { + _currentPageIndicatorImage = currentPageIndicatorImage; + [self updateIndicatorViewsBehavior]; +} + +- (void)setPageIndicatorTintColor:(UIColor *)pageIndicatorTintColor { + _pageIndicatorTintColor = pageIndicatorTintColor; + [self updateIndicatorViewsBehavior]; +} + +- (void)setCurrentPageIndicatorTintColor:(UIColor *)currentPageIndicatorTintColor { + _currentPageIndicatorTintColor = currentPageIndicatorTintColor; + [self updateIndicatorViewsBehavior]; +} + +- (void)setPageIndicatorSize:(CGSize)pageIndicatorSize { + if (CGSizeEqualToSize(_pageIndicatorSize, pageIndicatorSize)) { + return; + } + _pageIndicatorSize = pageIndicatorSize; + if (CGSizeEqualToSize(_currentPageIndicatorSize, CGSizeZero) || (_currentPageIndicatorSize.width < pageIndicatorSize.width && _currentPageIndicatorSize.height < pageIndicatorSize.height)) { + _currentPageIndicatorSize = pageIndicatorSize; + } + if (_indicatorViews.count > 0) { + [self setNeedsLayout]; + } +} + +- (void)setPageIndicatorSpaing:(CGFloat)pageIndicatorSpaing { + _pageIndicatorSpaing = pageIndicatorSpaing; + if (_indicatorViews.count > 0) { + [self setNeedsLayout]; + } +} + +- (void)setCurrentPageIndicatorSize:(CGSize)currentPageIndicatorSize { + if (CGSizeEqualToSize(_currentPageIndicatorSize, currentPageIndicatorSize)) { + return; + } + _currentPageIndicatorSize = currentPageIndicatorSize; + if (_indicatorViews.count > 0) { + [self setNeedsLayout]; + } +} + +- (void)setContentHorizontalAlignment:(UIControlContentHorizontalAlignment)contentHorizontalAlignment { + [super setContentHorizontalAlignment:contentHorizontalAlignment]; + if (_indicatorViews.count > 0) { + [self setNeedsLayout]; + } +} + +- (void)setContentVerticalAlignment:(UIControlContentVerticalAlignment)contentVerticalAlignment { + [super setContentVerticalAlignment:contentVerticalAlignment]; + if (_indicatorViews.count > 0) { + [self setNeedsLayout]; + } +} + +#pragma mark - update indicator + +- (void)updateIndicatorViews { + if (!self.superview && !_forceUpdate) { + return; + } + if (_indicatorViews.count == _numberOfPages) { + [self updateIndicatorViewsBehavior]; + return; + } + NSMutableArray *indicatorViews = _indicatorViews ? [_indicatorViews mutableCopy] :[NSMutableArray array]; + if (indicatorViews.count < _numberOfPages) { + for (NSInteger idx = indicatorViews.count; idx < _numberOfPages; ++idx) { + UIImageView *indicatorView = [[UIImageView alloc]init]; + indicatorView.contentMode = _indicatorImageContentMode; + [self addSubview:indicatorView]; + [indicatorViews addObject:indicatorView]; + } + }else if (indicatorViews.count > _numberOfPages) { + for (NSInteger idx = indicatorViews.count - 1; idx >= _numberOfPages; --idx) { + UIImageView *indicatorView = indicatorViews[idx]; + [indicatorView removeFromSuperview]; + [indicatorViews removeObjectAtIndex:idx]; + } + } + _indicatorViews = [indicatorViews copy]; + [self updateIndicatorViewsBehavior]; +} + +- (void)updateIndicatorViewsBehavior { + if (_indicatorViews.count == 0 || (!self.superview && !_forceUpdate)) { + return; + } + if (_hidesForSinglePage && _indicatorViews.count == 1) { + UIImageView *indicatorView = _indicatorViews.lastObject; + indicatorView.hidden = YES; + return; + } + NSInteger index = 0; + for (UIImageView *indicatorView in _indicatorViews) { + if (_pageIndicatorImage) { + indicatorView.contentMode = _indicatorImageContentMode; + indicatorView.image = _currentPage == index ? _currentPageIndicatorImage : _pageIndicatorImage; + }else { + indicatorView.image = nil; + indicatorView.backgroundColor = _currentPage == index ? _currentPageIndicatorTintColor : _pageIndicatorTintColor; + } + indicatorView.hidden = NO; + ++index; + } +} + +#pragma mark - layout + +- (void)layoutIndicatorViews { + if (_indicatorViews.count == 0) { + return; + } + CGFloat orignX = 0; + CGFloat centerY = 0; + CGFloat pageIndicatorSpaing = _pageIndicatorSpaing; + switch (self.contentHorizontalAlignment) { + case UIControlContentHorizontalAlignmentCenter: + // ignore contentInset + orignX = (CGRectGetWidth(self.frame) - (_indicatorViews.count - 1) * (_pageIndicatorSize.width + _pageIndicatorSpaing) - _currentPageIndicatorSize.width)/2; + break; + case UIControlContentHorizontalAlignmentLeft: + orignX = _contentInset.left; + break; + case UIControlContentHorizontalAlignmentRight: + orignX = CGRectGetWidth(self.frame) - ((_indicatorViews.count - 1) * (_pageIndicatorSize.width + _pageIndicatorSpaing) + _currentPageIndicatorSize.width) - _contentInset.right; + break; + case UIControlContentHorizontalAlignmentFill: + orignX = _contentInset.left; + if (_indicatorViews.count > 1) { + pageIndicatorSpaing = (CGRectGetWidth(self.frame) - _contentInset.left - _contentInset.right - _pageIndicatorSize.width - (_indicatorViews.count - 1) * _pageIndicatorSize.width)/(_indicatorViews.count - 1); + } + break; + default: + break; + } + switch (self.contentVerticalAlignment) { + case UIControlContentVerticalAlignmentCenter: + centerY = CGRectGetHeight(self.frame)/2; + break; + case UIControlContentVerticalAlignmentTop: + centerY = _contentInset.top + _currentPageIndicatorSize.height/2; + break; + case UIControlContentVerticalAlignmentBottom: + centerY = CGRectGetHeight(self.frame) - _currentPageIndicatorSize.height/2 - _contentInset.bottom; + break; + case UIControlContentVerticalAlignmentFill: + centerY = (CGRectGetHeight(self.frame) - _contentInset.top - _contentInset.bottom)/2 + _contentInset.top; + break; + default: + break; + } + NSInteger index = 0; + for (UIImageView *indicatorView in _indicatorViews) { + if (_pageIndicatorImage) { + indicatorView.layer.cornerRadius = 0; + }else { + indicatorView.layer.cornerRadius = _currentPage == index ? _currentPageIndicatorSize.height/2 : _pageIndicatorSize.height/2; + } + CGSize size = index == _currentPage ? _currentPageIndicatorSize : _pageIndicatorSize; + indicatorView.frame = CGRectMake(orignX, centerY - size.height/2, size.width, size.height); + orignX += size.width + pageIndicatorSpaing; + ++index; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + [self layoutIndicatorViews]; +} + +@end diff --git a/MiniScanner/Supporting Files/Info.plist b/MiniScanner/Supporting Files/Info.plist index c0684c7..328f2af 100644 --- a/MiniScanner/Supporting Files/Info.plist +++ b/MiniScanner/Supporting Files/Info.plist @@ -5,7 +5,7 @@ <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleDisplayName</key> - <string>MiniScanner</string> + <string>BeinScanner</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> @@ -26,6 +26,19 @@ <string>Let the $(PRODUCT_NAME) use device camera in order to scan your documents</string> <key>NSPhotoLibraryUsageDescription</key> <string>Let the $(PRODUCT_NAME) use device photo library in order to scan your documents</string> + <key>UIAppFonts</key> + <array> + <string>Tajawal-ExtraBold.ttf</string> + <string>Tajawal-Light.ttf</string> + <string>Tajawal-Bold.ttf</string> + <string>Tajawal-ExtraLight.ttf</string> + <string>Tajawal-Regular.ttf</string> + <string>Tajawal-Medium.ttf</string> + <string>Tajawal-Black.ttf</string> + <string>Poppins-Regular.ttf</string> + <string>Poppins-Medium.ttf</string> + <string>Poppins-Bold.ttf</string> + </array> <key>UIApplicationSceneManifest</key> <dict> <key>UIApplicationSupportsMultipleScenes</key> @@ -56,29 +69,13 @@ <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationLandscapeRight</string> - <string>UIInterfaceOrientationPortraitUpsideDown</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> - <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> - </array> - <key>UIAppFonts</key> - <array> - <string>Tajawal-ExtraBold.ttf</string> - <string>Tajawal-Light.ttf</string> - <string>Tajawal-Bold.ttf</string> - <string>Tajawal-ExtraLight.ttf</string> - <string>Tajawal-Regular.ttf</string> - <string>Tajawal-Medium.ttf</string> - <string>Tajawal-Black.ttf</string> - <string>Poppins-Regular.ttf</string> - <string>Poppins-Medium.ttf</string> - <string>Poppins-Bold.ttf</string> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationPortraitUpsideDown</string> </array> </dict> </plist> diff --git a/MiniScanner/Supporting Files/MiniScanner_Bridging_Header.h b/MiniScanner/Supporting Files/MiniScanner_Bridging_Header.h new file mode 100644 index 0000000..448531c --- /dev/null +++ b/MiniScanner/Supporting Files/MiniScanner_Bridging_Header.h @@ -0,0 +1,15 @@ +// +// MiniScanner_Bridging_Header.h +// MiniScanner +// +// Created by George Makhoul on 11/06/2024. +// Copyright © 2024 AppsNectar. All rights reserved. +// + +#ifndef MiniScanner_Bridging_Header_h +#define MiniScanner_Bridging_Header_h + +#import "TYCyclePagerView.h" +#import "TYPageControl.h" + +#endif /* MiniScanner_Bridging_Header_h */ diff --git a/Podfile b/Podfile index 8ab3916..38f7522 100644 --- a/Podfile +++ b/Podfile @@ -10,6 +10,8 @@ target 'MiniScanner' do pod 'IQKeyboardManagerSwift' pod 'ImagePicker' pod 'NBBottomSheet' + pod 'FSPagerView' + post_install do |installer| diff --git a/Podfile.lock b/Podfile.lock index 96a76f0..1598683 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,10 +1,12 @@ PODS: + - FSPagerView (0.8.3) - ImagePicker (3.2.0) - IQKeyboardManagerSwift (7.0.3) - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) DEPENDENCIES: + - FSPagerView - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS @@ -12,17 +14,19 @@ DEPENDENCIES: SPEC REPOS: trunk: + - FSPagerView - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS - NBBottomSheet SPEC CHECKSUMS: + FSPagerView: 670405b2f18e2a87fa37f20b00de783e562c25a8 ImagePicker: 1d950bbb2422548ed58791b4ec7f42fe42920511 IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 -PODFILE CHECKSUM: 99d4cce8ced2a9accaa7e878545a1ac36d8bb5fc +PODFILE CHECKSUM: 52accaf9c5f2924a92fc166365082451576507fe COCOAPODS: 1.14.3 diff --git a/Pods/FSPagerView/LICENSE b/Pods/FSPagerView/LICENSE new file mode 100644 index 0000000..a1e3bb3 --- /dev/null +++ b/Pods/FSPagerView/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017 FSPagerView (https://github.com/WenchaoD/FSPagerView) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Pods/FSPagerView/README-OBJECTIVE-C.md b/Pods/FSPagerView/README-OBJECTIVE-C.md new file mode 100644 index 0000000..ee4cbd7 --- /dev/null +++ b/Pods/FSPagerView/README-OBJECTIVE-C.md @@ -0,0 +1,416 @@ + + +[](#) <br/> +[](http://cocoadocs.org/docsets/FSPagerView) +[](http://cocoadocs.org/docsets/FSPagerView) +[](https://github.com/Carthage/Carthage) +[](https://swift.org/package-manager/) + +|[<b>SWIFT</b>](https://github.com/WenchaoD/FSPagerView/blob/master/README.md)|<b>OBJECTIVE-C</b>| +|---|---| + +**FSPagerView** is an elegant Screen Slide Library implemented primarily with ***UICollectionView***. It is extremely helpful for making Bannerã€Product Showã€Welcome/Guide Pagesã€Screen/ViewController Sliders. + +## Features +* ***Infinite*** scrolling. +* ***Automatic*** Sliding. +* Support ***Horizontal*** and ***Vertical*** paging. +* Fully customizable item, with predefined banner-style item. +* Fully customizable ***page control***. +* Rich build-in 3D transformers. +* ***Simple*** and ***Delightful*** api usage. +* Support **SWIFT** and **OBJECTIVE-C**. + +## Demo1 Banner + +| Banner | +|---| +| | + +### automaticSlidingInterval +The time interval of automatic sliding. 0 means disabling automatic sliding. Default is 0. + +**e.g.** + +```objc +pagerView.automaticSlidingInterval = 3.0; +``` + + +### isInfinite +A boolean value indicates whether the pager view has infinite number of items. Default is false. + +**e.g.** + +```objc +pagerView.isInfinite = YES; +``` + +### decelerationDistance +An unsigned integer value that determines the paging distance of the pager view, which indicates the number of passing items during the deceleration. When the value of this property is FSPagerViewAutomaticDistance, the actual 'distance' is automatically calculated according to the scrolling speed of the pager view. Default is 1. + +**e.g.** + +```objc +pagerView.decelerationDistance = 2 +``` + +### itemSize +The item size of the pager view. When the value of this property is FSPagerViewAutomaticSize, the items fill the entire visible area of the pager view. Default is FSPagerViewAutomaticSize. + + +**e.g.** + +```objc +pagerView.itemSize = CGSizeMake(200, 180); +``` + +### interitemSpacing +The spacing to use between items in the pager view. Default is 0. + +**e.g.** + +```objc +pagerView.interitemSpacing = 10; +``` + +## Demo2 - Transformers + +|Cross Fading| +|---| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeCrossFading]; +``` +--- + + + +|Zoom Out| +|---| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeZoomOut]; +``` +--- + + +|Depth| +|---| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeDepth]; +``` +--- + + +|Linear| +|---| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeLinear]; +``` +--- + + +|Overlap| +|---| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeOverlap]; +``` +--- + + +|Ferris Wheel| +|------| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeFerrisWheel]; +``` +--- + + +|Inverted Ferris Wheel| +|------| +|  | + +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeInvertedFerrisWheel]; +``` +--- + + +|Cover Flow| +|------| +|  | +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeCoverFlow]; +``` +--- + +|Cubic| +|------| +|  | +```objc +pagerView.transformer = [[FSPagerViewTransformer alloc] initWithType:FSPagerViewTransformerTypeCubic]; +``` +--- + + +> Customize your own transformer by subclassing`FSPagerViewTransformer.` + + +## Demo3 Page Control +|Page Control| +|---| +| +| + +### numberOfPages +The number of page indicators of the page control. Default is 0. + +**e.g.** + +```objc +pageControl.numberOfPages = 5; +``` + +### currentPage +The current page, highlighted by the page control. Default is 0. + +**e.g.** + +```objc +pageControl.currentPage = 1; +``` +### contentHorizontalAlignment +The horizontal alignment of content within the control’s bounds. Default is center. + +**e.g.** + +```objc +pageControl.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight; +``` + +### setStrokeColor:forState: +Sets the stroke color for page indicators to use for the specified state. (selected/normal). + +**e.g.** + +```objc +[pageControl setStrokeColor:[UIColor greenColor] forState:UIControlStateNormal]; +[pageControl setStrokeColor:[UIColor yellowColor] forState:UIControlStateSelected]; +``` + + +### setFillColor:forState: +Sets the fill color for page indicators to use for the specified state. (selected/normal). + +**e.g.** + +```objc +[pageControl setFillColor:[UIColor grayColor] forState:UIControlStateNormal]; +[pageControl setFillColor:[UIColor whiteColor] forState:UIControlStateSelected]; +``` + +### setImage:forState: +Sets the image for page indicators to use for the specified state. (selected/normal). + +**e.g.** + +```objc +[pageControl setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateNormal]; +[pageControl setImage:[UIImage imageNamed:@"image2"] forState:UIControlStateSelected]; +``` + +### setPath:forState: +Sets the path for page indicators to use for the specified state. (selected/normal). + +**e.g.** + +```objc +[pageControl setPath:[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 8, 8)] forState:UIControlStateNormal]; +[pageControl setPath: [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 8, 8)] forState:UIControlStateSelected]; +``` + +## Installation +* Manually +* Cocoapods +* Carthage + +### Manually +1. ***[Download](#)*** the source code. +2. Extract the zip file, simply drag folder ***Sources*** into your project. +3. Make sure ***Copy items if needed*** is checked. + +### Cocoapods +```ruby +use_frameworks! +target '<Your Target Name>' do + pod 'FSPagerView' +end +``` + +### Carthage +```ruby +github "WenchaoD/FSPagerView" +``` + +## Tutorial +* [Getting started](#getting_started) +* [Implement FSPagerViewDataSource](#implement_fspagerviewdatasource) +* [Implement FSPagerViewDelegate](#implement_fspagerviewdelegate) + +### 1. Getting started <a id='getting_started'></a> + +* Getting started with code + +```objc +// Create a pager view +FSPagerView *pagerView = [[FSPagerView alloc] initWithFrame:frame1]; +pagerView.dataSource = self; +pagerView.delegate = self; +[pagerView registerClass:[FSPagerViewCell class] forCellWithReuseIdentifier:@"cell"]; +[self.view addSubview:pagerView]; +// Create a page control +FSPageControl *pageControl = [[FSPageControl alloc] initWithFrame:frame2]; +[self.view addSubview:pageControl]; +``` + +* Getting started with Interface Builder <br/> +1ã€Simply drag **UIView** instance into your View Controller, Change the `Custom Class` to `FSPagerView`. (Or `FSPageControl`) <br/> +2ã€Link the `dataSource` and `delegate` property of **FSPagerView** to your View Controller. <br/> +3ã€Register a cell class. + +```objc +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self.pagerView registerClass:[FSPagerViewCell class] forCellWithReuseIdentifier:@"cell"]; +} +``` + + +### 2. Implement FSPagerViewDataSource <a id='implement_fspagerviewdatasource'></a> +```objc +- (NSInteger)numberOfItemsInpagerView:(FSPagerView *)pagerView +{ + return numberOfItems; +} + +- (FSPagerViewCell *)pagerView:(FSPagerView *)pagerView cellForItemAtIndex:(NSInteger)index +{ + FSPagerViewCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:@"cell" atIndex:index]; + cell.imageView.image = ...; + cell.textLabel.text = ...; + return cell; +} +``` + +### 3. Implement FSPagerViewDelegate <a id='implement_fspagerviewdelegate'></a> + +```objc +- (BOOL)pagerView:(FSPagerView *)pagerView shouldHighlightItemAtIndex:(NSInteger)index; +``` +> Asks the delegate if the item should be highlighted during tracking. + +--- + +```objc +- (void)pagerView:(FSPagerView *)pagerView didHighlightItemAtIndex:(NSInteger)index; +``` +> Tells the delegate that the item at the specified index was highlighted. + +--- + +```objc +- (BOOL)pagerView:(FSPagerView *)pagerView shouldSelectItemAtIndex:(NSInteger)index; +``` +> Asks the delegate if the specified item should be selected. + +--- + +```objc +- (void)pagerView:(FSPagerView *)pagerView didSelectItemAtIndex:(NSInteger)index; +``` +> Tells the delegate that the item at the specified index was selected. + +--- + +```objc +- (void)pagerView:(FSPagerView *)pagerView willDisplayCell:(FSPagerViewCell *)cell forItemAtIndex:(NSInteger)index; +``` +> Tells the delegate that the specified cell is about to be displayed in the pager view. + +--- + +```objc +- (void)pagerView:(FSPagerView *)pagerView didEndDisplayingCell:(FSPagerViewCell *)cell forItemAtIndex:(NSInteger)index; +``` +> Tells the delegate that the specified cell was removed from the pager view. + +--- + +```objc +- (void)pagerViewWillBeginDragging:(FSPagerView *)pagerView; +``` +> Tells the delegate when the pager view is about to start scrolling the content. + +--- + +```objc +- (void)pagerViewWillEndDragging:(FSPagerView *) pagerView targetIndex:(NSInteger)index: +``` +> Tells the delegate when the user finishes scrolling the content. + +--- + +```objc +- (void)pagerViewDidScroll:(FSPagerView *)pagerView; +``` +> Tells the delegate when the user scrolls the content view within the receiver. + +--- + +```objc +- (void)pagerViewDidEndScrollAnimation:(FSPagerView *)pagerView; +``` +> Tells the delegate when a scrolling animation in the pager view concludes. + +--- + +```objc +- (void)pagerViewDidEndDecelerating:(FSPagerView *)pagerView; +``` +> Tells the delegate that the pager view has ended decelerating the scrolling movement. + +--- + +## <a id="support"></a>Support this repo +* ***Star*** this repo <a href="#"><img style="margin-bottom:-12px" width="72" alt="star" src="https://cloud.githubusercontent.com/assets/5186464/15383105/fcf9cdf0-1dc2-11e6-88db-bf221042a584.png"></a> +<br/> + +* Buy me a ***Coffee***. â˜•ï¸ + + <a href="https://www.paypal.me/WenchaoD" target="_blank"><img src="https://www.paypalobjects.com/webstatic/i/logo/rebrand/ppcom.svg" width="100" height="40" style="margin-bottom:-15px;"></a> | + <a href="https://user-images.githubusercontent.com/5186464/45949944-46960480-c030-11e8-9e90-30b015698cf6.png" target="_blank"><img src="http://a1.mzstatic.com/us/r30/Purple49/v4/50/16/b3/5016b341-39c1-b47b-2994-d7e23823baed/icon175x175.png" width="40" height="40" style="margin-bottom:-15px;-webkit-border-radius:10px;border:1px solid rgba(30, 154, 236, 1);"></a> | + <a href="https://cloud.githubusercontent.com/assets/5186464/15096872/b06f3a3a-153c-11e6-89f9-2e9c7b88ef42.png" target="_blank"><img src="http://a4.mzstatic.com/us/r30/Purple49/v4/23/31/14/233114f8-2e8d-7b63-8dc5-85d29893061e/icon175x175.jpeg" height="40" width="40" style="margin-bottom:-15px; -webkit-border-radius: 10px;border:1px solid rgba(43, 177, 0, 1)"></a> + +--- + +## Author +* ***å¾®åšï¼š[@WenchaoD](http://weibo.com/WenchaoD)*** +* ***Twitter: [@WenchaoD](https://twitter.com/WenchaoD)*** +* Other repos: + * ***[FSCalendar](https://github.com/WenchaoD/FSCalendar)*** + +--- + +# [Documentation](http://cocoadocs.org/docsets/FSPagerView) \ No newline at end of file diff --git a/Pods/FSPagerView/Sources/FSPageControl.swift b/Pods/FSPagerView/Sources/FSPageControl.swift new file mode 100644 index 0000000..e3bd745 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPageControl.swift @@ -0,0 +1,310 @@ +// +// FSPageControl.swift +// FSPagerView +// +// Created by Wenchao Ding on 17/12/2016. +// Copyright © 2016 Wenchao Ding. All rights reserved. +// + +import UIKit + +@IBDesignable +open class FSPageControl: UIControl { + + /// The number of page indicators of the page control. Default is 0. + @IBInspectable + open var numberOfPages: Int = 0 { + didSet { + self.setNeedsCreateIndicators() + } + } + + /// The current page, highlighted by the page control. Default is 0. + @IBInspectable + open var currentPage: Int = 0 { + didSet { + self.setNeedsUpdateIndicators() + } + } + + /// The spacing to use of page indicators in the page control. + @IBInspectable + open var itemSpacing: CGFloat = 6 { + didSet { + self.setNeedsUpdateIndicators() + } + } + + /// The spacing to use between page indicators in the page control. + @IBInspectable + open var interitemSpacing: CGFloat = 6 { + didSet { + self.setNeedsLayout() + } + } + + /// The distance that the page indicators is inset from the enclosing page control. + @IBInspectable + open var contentInsets: UIEdgeInsets = .zero { + didSet { + self.setNeedsLayout() + } + } + + /// The horizontal alignment of content within the control’s bounds. Default is center. + open override var contentHorizontalAlignment: UIControl.ContentHorizontalAlignment { + didSet { + self.setNeedsLayout() + } + } + + /// Hide the indicator if there is only one page. default is NO + @IBInspectable + open var hidesForSinglePage: Bool = false { + didSet { + self.setNeedsUpdateIndicators() + } + } + + internal var strokeColors: [UIControl.State: UIColor] = [:] + internal var fillColors: [UIControl.State: UIColor] = [:] + internal var paths: [UIControl.State: UIBezierPath] = [:] + internal var images: [UIControl.State: UIImage] = [:] + internal var alphas: [UIControl.State: CGFloat] = [:] + internal var transforms: [UIControl.State: CGAffineTransform] = [:] + + fileprivate weak var contentView: UIView! + + fileprivate var needsUpdateIndicators = false + fileprivate var needsCreateIndicators = false + fileprivate var indicatorLayers = [CAShapeLayer]() + + public override init(frame: CGRect) { + super.init(frame: frame) + commonInit() + } + + public required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + commonInit() + } + + open override func layoutSubviews() { + super.layoutSubviews() + self.contentView.frame = { + let x = self.contentInsets.left + let y = self.contentInsets.top + let width = self.frame.width - self.contentInsets.left - self.contentInsets.right + let height = self.frame.height - self.contentInsets.top - self.contentInsets.bottom + let frame = CGRect(x: x, y: y, width: width, height: height) + return frame + }() + } + + open override func layoutSublayers(of layer: CALayer) { + super.layoutSublayers(of: layer) + + let diameter = self.itemSpacing + let spacing = self.interitemSpacing + var x: CGFloat = { + switch self.contentHorizontalAlignment { + case .left, .leading: + return 0 + case .center, .fill: + let midX = self.contentView.bounds.midX + let amplitude = CGFloat(self.numberOfPages/2) * diameter + spacing*CGFloat((self.numberOfPages-1)/2) + return midX - amplitude + case .right, .trailing: + let contentWidth = diameter*CGFloat(self.numberOfPages) + CGFloat(self.numberOfPages-1)*spacing + return contentView.frame.width - contentWidth + default: + return 0 + } + }() + for (index,value) in self.indicatorLayers.enumerated() { + let state: UIControl.State = (index == self.currentPage) ? .selected : .normal + let image = self.images[state] + let size = image?.size ?? CGSize(width: diameter, height: diameter) + let origin = CGPoint(x: x - (size.width-diameter)*0.5, y: self.contentView.bounds.midY-size.height*0.5) + value.frame = CGRect(origin: origin, size: size) + x = x + spacing + diameter + } + + } + + /// Sets the stroke color for page indicators to use for the specified state. (selected/normal). + /// + /// - Parameters: + /// - strokeColor: The stroke color to use for the specified state. + /// - state: The state that uses the specified stroke color. + @objc(setStrokeColor:forState:) + open func setStrokeColor(_ strokeColor: UIColor?, for state: UIControl.State) { + guard self.strokeColors[state] != strokeColor else { + return + } + self.strokeColors[state] = strokeColor + self.setNeedsUpdateIndicators() + } + + /// Sets the fill color for page indicators to use for the specified state. (selected/normal). + /// + /// - Parameters: + /// - fillColor: The fill color to use for the specified state. + /// - state: The state that uses the specified fill color. + @objc(setFillColor:forState:) + open func setFillColor(_ fillColor: UIColor?, for state: UIControl.State) { + guard self.fillColors[state] != fillColor else { + return + } + self.fillColors[state] = fillColor + self.setNeedsUpdateIndicators() + } + + /// Sets the image for page indicators to use for the specified state. (selected/normal). + /// + /// - Parameters: + /// - image: The image to use for the specified state. + /// - state: The state that uses the specified image. + @objc(setImage:forState:) + open func setImage(_ image: UIImage?, for state: UIControl.State) { + guard self.images[state] != image else { + return + } + self.images[state] = image + self.setNeedsUpdateIndicators() + } + + @objc(setAlpha:forState:) + + /// Sets the alpha value for page indicators to use for the specified state. (selected/normal). + /// + /// - Parameters: + /// - alpha: The alpha value to use for the specified state. + /// - state: The state that uses the specified alpha. + open func setAlpha(_ alpha: CGFloat, for state: UIControl.State) { + guard self.alphas[state] != alpha else { + return + } + self.alphas[state] = alpha + self.setNeedsUpdateIndicators() + } + + /// Sets the path for page indicators to use for the specified state. (selected/normal). + /// + /// - Parameters: + /// - path: The path to use for the specified state. + /// - state: The state that uses the specified path. + @objc(setPath:forState:) + open func setPath(_ path: UIBezierPath?, for state: UIControl.State) { + guard self.paths[state] != path else { + return + } + self.paths[state] = path + self.setNeedsUpdateIndicators() + } + + // MARK: - Private functions + + fileprivate func commonInit() { + + // Content View + let view = UIView(frame: .zero) + view.backgroundColor = UIColor.clear + self.addSubview(view) + self.contentView = view + self.isUserInteractionEnabled = false + + } + + fileprivate func setNeedsUpdateIndicators() { + self.needsUpdateIndicators = true + self.setNeedsLayout() + DispatchQueue.main.async { + self.updateIndicatorsIfNecessary() + } + } + + fileprivate func updateIndicatorsIfNecessary() { + guard self.needsUpdateIndicators else { + return + } + guard self.indicatorLayers.count > 0 else { + return + } + self.needsUpdateIndicators = false + self.contentView.isHidden = self.hidesForSinglePage && self.numberOfPages <= 1 + if !self.contentView.isHidden { + self.indicatorLayers.forEach { (layer) in + layer.isHidden = false + self.updateIndicatorAttributes(for: layer) + } + } + } + + fileprivate func updateIndicatorAttributes(for layer: CAShapeLayer) { + let index = self.indicatorLayers.firstIndex(of: layer) + let state: UIControl.State = index == self.currentPage ? .selected : .normal + if let image = self.images[state] { + layer.strokeColor = nil + layer.fillColor = nil + layer.path = nil + layer.contents = image.cgImage + } else { + layer.contents = nil + let strokeColor = self.strokeColors[state] + let fillColor = self.fillColors[state] + if strokeColor == nil && fillColor == nil { + layer.fillColor = (state == .selected ? UIColor.white : UIColor.gray).cgColor + layer.strokeColor = nil + } else { + layer.strokeColor = strokeColor?.cgColor + layer.fillColor = fillColor?.cgColor + } + layer.path = self.paths[state]?.cgPath ?? UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: self.itemSpacing, height: self.itemSpacing)).cgPath + } + if let transform = self.transforms[state] { + layer.transform = CATransform3DMakeAffineTransform(transform) + } + layer.opacity = Float(self.alphas[state] ?? 1.0) + } + + fileprivate func setNeedsCreateIndicators() { + self.needsCreateIndicators = true + DispatchQueue.main.async { + self.createIndicatorsIfNecessary() + } + } + + fileprivate func createIndicatorsIfNecessary() { + guard self.needsCreateIndicators else { + return + } + self.needsCreateIndicators = false + CATransaction.begin() + CATransaction.setDisableActions(true) + if self.currentPage >= self.numberOfPages { + self.currentPage = self.numberOfPages - 1 + } + self.indicatorLayers.forEach { (layer) in + layer.removeFromSuperlayer() + } + self.indicatorLayers.removeAll() + for _ in 0..<self.numberOfPages { + let layer = CAShapeLayer() + layer.actions = ["bounds": NSNull()] + self.contentView.layer.addSublayer(layer) + self.indicatorLayers.append(layer) + } + self.setNeedsUpdateIndicators() + self.updateIndicatorsIfNecessary() + CATransaction.commit() + } + +} + +extension UIControl.State: Hashable { + public var hashValue: Int { + return Int((6777*self.rawValue+3777)%UInt(UInt16.max)) + } +} + diff --git a/Pods/FSPagerView/Sources/FSPageViewLayout.swift b/Pods/FSPagerView/Sources/FSPageViewLayout.swift new file mode 100644 index 0000000..9477ac4 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPageViewLayout.swift @@ -0,0 +1,296 @@ +// +// FSPagerViewLayout.swift +// FSPagerView +// +// Created by Wenchao Ding on 20/12/2016. +// Copyright © 2016 Wenchao Ding. All rights reserved. +// + +import UIKit + +class FSPagerViewLayout: UICollectionViewLayout { + + internal var contentSize: CGSize = .zero + internal var leadingSpacing: CGFloat = 0 + internal var itemSpacing: CGFloat = 0 + internal var needsReprepare = true + internal var scrollDirection: FSPagerView.ScrollDirection = .horizontal + + open override class var layoutAttributesClass: AnyClass { + return FSPagerViewLayoutAttributes.self + } + + fileprivate var pagerView: FSPagerView? { + return self.collectionView?.superview?.superview as? FSPagerView + } + + fileprivate var collectionViewSize: CGSize = .zero + fileprivate var numberOfSections = 1 + fileprivate var numberOfItems = 0 + fileprivate var actualInteritemSpacing: CGFloat = 0 + fileprivate var actualItemSize: CGSize = .zero + + override init() { + super.init() + self.commonInit() + } + + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + self.commonInit() + } + + deinit { + #if !os(tvOS) + NotificationCenter.default.removeObserver(self, name: UIDevice.orientationDidChangeNotification, object: nil) + #endif + } + + override open func prepare() { + guard let collectionView = self.collectionView, let pagerView = self.pagerView else { + return + } + guard self.needsReprepare || self.collectionViewSize != collectionView.frame.size else { + return + } + self.needsReprepare = false + + self.collectionViewSize = collectionView.frame.size + + // Calculate basic parameters/variables + self.numberOfSections = pagerView.numberOfSections(in: collectionView) + self.numberOfItems = pagerView.collectionView(collectionView, numberOfItemsInSection: 0) + self.actualItemSize = { + var size = pagerView.itemSize + if size == .zero { + size = collectionView.frame.size + } + return size + }() + + self.actualInteritemSpacing = { + if let transformer = pagerView.transformer { + return transformer.proposedInteritemSpacing() + } + return pagerView.interitemSpacing + }() + self.scrollDirection = pagerView.scrollDirection + self.leadingSpacing = self.scrollDirection == .horizontal ? (collectionView.frame.width-self.actualItemSize.width)*0.5 : (collectionView.frame.height-self.actualItemSize.height)*0.5 + self.itemSpacing = (self.scrollDirection == .horizontal ? self.actualItemSize.width : self.actualItemSize.height) + self.actualInteritemSpacing + + // Calculate and cache contentSize, rather than calculating each time + self.contentSize = { + let numberOfItems = self.numberOfItems*self.numberOfSections + switch self.scrollDirection { + case .horizontal: + var contentSizeWidth: CGFloat = self.leadingSpacing*2 // Leading & trailing spacing + contentSizeWidth += CGFloat(numberOfItems-1)*self.actualInteritemSpacing // Interitem spacing + contentSizeWidth += CGFloat(numberOfItems)*self.actualItemSize.width // Item sizes + let contentSize = CGSize(width: contentSizeWidth, height: collectionView.frame.height) + return contentSize + case .vertical: + var contentSizeHeight: CGFloat = self.leadingSpacing*2 // Leading & trailing spacing + contentSizeHeight += CGFloat(numberOfItems-1)*self.actualInteritemSpacing // Interitem spacing + contentSizeHeight += CGFloat(numberOfItems)*self.actualItemSize.height // Item sizes + let contentSize = CGSize(width: collectionView.frame.width, height: contentSizeHeight) + return contentSize + } + }() + self.adjustCollectionViewBounds() + } + + override open var collectionViewContentSize: CGSize { + return self.contentSize + } + + override open func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { + return true + } + + override open func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + var layoutAttributes = [UICollectionViewLayoutAttributes]() + guard self.itemSpacing > 0, !rect.isEmpty else { + return layoutAttributes + } + let rect = rect.intersection(CGRect(origin: .zero, size: self.contentSize)) + guard !rect.isEmpty else { + return layoutAttributes + } + // Calculate start position and index of certain rects + let numberOfItemsBefore = self.scrollDirection == .horizontal ? max(Int((rect.minX-self.leadingSpacing)/self.itemSpacing),0) : max(Int((rect.minY-self.leadingSpacing)/self.itemSpacing),0) + let startPosition = self.leadingSpacing + CGFloat(numberOfItemsBefore)*self.itemSpacing + let startIndex = numberOfItemsBefore + // Create layout attributes + var itemIndex = startIndex + + var origin = startPosition + let maxPosition = self.scrollDirection == .horizontal ? min(rect.maxX,self.contentSize.width-self.actualItemSize.width-self.leadingSpacing) : min(rect.maxY,self.contentSize.height-self.actualItemSize.height-self.leadingSpacing) + // https://stackoverflow.com/a/10335601/2398107 + while origin-maxPosition <= max(CGFloat(100.0) * .ulpOfOne * abs(origin+maxPosition), .leastNonzeroMagnitude) { + let indexPath = IndexPath(item: itemIndex%self.numberOfItems, section: itemIndex/self.numberOfItems) + let attributes = self.layoutAttributesForItem(at: indexPath) as! FSPagerViewLayoutAttributes + self.applyTransform(to: attributes, with: self.pagerView?.transformer) + layoutAttributes.append(attributes) + itemIndex += 1 + origin += self.itemSpacing + } + return layoutAttributes + + } + + override open func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + let attributes = FSPagerViewLayoutAttributes(forCellWith: indexPath) + attributes.indexPath = indexPath + let frame = self.frame(for: indexPath) + let center = CGPoint(x: frame.midX, y: frame.midY) + attributes.center = center + attributes.size = self.actualItemSize + return attributes + } + + override open func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint { + guard let collectionView = self.collectionView, let pagerView = self.pagerView else { + return proposedContentOffset + } + var proposedContentOffset = proposedContentOffset + + func calculateTargetOffset(by proposedOffset: CGFloat, boundedOffset: CGFloat) -> CGFloat { + var targetOffset: CGFloat + if pagerView.decelerationDistance == FSPagerView.automaticDistance { + if abs(velocity.x) >= 0.3 { + let vector: CGFloat = velocity.x >= 0 ? 1.0 : -1.0 + targetOffset = round(proposedOffset/self.itemSpacing+0.35*vector) * self.itemSpacing // Ceil by 0.15, rather than 0.5 + } else { + targetOffset = round(proposedOffset/self.itemSpacing) * self.itemSpacing + } + } else { + let extraDistance = max(pagerView.decelerationDistance-1, 0) + switch velocity.x { + case 0.3 ... CGFloat.greatestFiniteMagnitude: + targetOffset = ceil(collectionView.contentOffset.x/self.itemSpacing+CGFloat(extraDistance)) * self.itemSpacing + case -CGFloat.greatestFiniteMagnitude ... -0.3: + targetOffset = floor(collectionView.contentOffset.x/self.itemSpacing-CGFloat(extraDistance)) * self.itemSpacing + default: + targetOffset = round(proposedOffset/self.itemSpacing) * self.itemSpacing + } + } + targetOffset = max(0, targetOffset) + targetOffset = min(boundedOffset, targetOffset) + return targetOffset + } + let proposedContentOffsetX: CGFloat = { + if self.scrollDirection == .vertical { + return proposedContentOffset.x + } + let boundedOffset = collectionView.contentSize.width-self.itemSpacing + return calculateTargetOffset(by: proposedContentOffset.x, boundedOffset: boundedOffset) + }() + let proposedContentOffsetY: CGFloat = { + if self.scrollDirection == .horizontal { + return proposedContentOffset.y + } + let boundedOffset = collectionView.contentSize.height-self.itemSpacing + return calculateTargetOffset(by: proposedContentOffset.y, boundedOffset: boundedOffset) + }() + proposedContentOffset = CGPoint(x: proposedContentOffsetX, y: proposedContentOffsetY) + return proposedContentOffset + } + + // MARK:- Internal functions + + internal func forceInvalidate() { + self.needsReprepare = true + self.invalidateLayout() + } + + internal func contentOffset(for indexPath: IndexPath) -> CGPoint { + let origin = self.frame(for: indexPath).origin + guard let collectionView = self.collectionView else { + return origin + } + let contentOffsetX: CGFloat = { + if self.scrollDirection == .vertical { + return 0 + } + let contentOffsetX = origin.x - (collectionView.frame.width*0.5-self.actualItemSize.width*0.5) + return contentOffsetX + }() + let contentOffsetY: CGFloat = { + if self.scrollDirection == .horizontal { + return 0 + } + let contentOffsetY = origin.y - (collectionView.frame.height*0.5-self.actualItemSize.height*0.5) + return contentOffsetY + }() + let contentOffset = CGPoint(x: contentOffsetX, y: contentOffsetY) + return contentOffset + } + + internal func frame(for indexPath: IndexPath) -> CGRect { + let numberOfItems = self.numberOfItems*indexPath.section + indexPath.item + let originX: CGFloat = { + if self.scrollDirection == .vertical { + return (self.collectionView!.frame.width-self.actualItemSize.width)*0.5 + } + return self.leadingSpacing + CGFloat(numberOfItems)*self.itemSpacing + }() + let originY: CGFloat = { + if self.scrollDirection == .horizontal { + return (self.collectionView!.frame.height-self.actualItemSize.height)*0.5 + } + return self.leadingSpacing + CGFloat(numberOfItems)*self.itemSpacing + }() + let origin = CGPoint(x: originX, y: originY) + let frame = CGRect(origin: origin, size: self.actualItemSize) + return frame + } + + // MARK:- Notification + @objc + fileprivate func didReceiveNotification(notification: Notification) { + if self.pagerView?.itemSize == .zero { + self.adjustCollectionViewBounds() + } + } + + // MARK:- Private functions + + fileprivate func commonInit() { + #if !os(tvOS) + NotificationCenter.default.addObserver(self, selector: #selector(didReceiveNotification(notification:)), name: UIDevice.orientationDidChangeNotification, object: nil) + #endif + } + + fileprivate func adjustCollectionViewBounds() { + guard let collectionView = self.collectionView, let pagerView = self.pagerView else { + return + } + let currentIndex = pagerView.currentIndex + let newIndexPath = IndexPath(item: currentIndex, section: pagerView.isInfinite ? self.numberOfSections/2 : 0) + let contentOffset = self.contentOffset(for: newIndexPath) + let newBounds = CGRect(origin: contentOffset, size: collectionView.frame.size) + collectionView.bounds = newBounds + } + + fileprivate func applyTransform(to attributes: FSPagerViewLayoutAttributes, with transformer: FSPagerViewTransformer?) { + guard let collectionView = self.collectionView else { + return + } + guard let transformer = transformer else { + return + } + switch self.scrollDirection { + case .horizontal: + let ruler = collectionView.bounds.midX + attributes.position = (attributes.center.x-ruler)/self.itemSpacing + case .vertical: + let ruler = collectionView.bounds.midY + attributes.position = (attributes.center.y-ruler)/self.itemSpacing + } + attributes.zIndex = Int(self.numberOfItems)-Int(attributes.position) + transformer.applyTransform(to: attributes) + } + +} + + diff --git a/Pods/FSPagerView/Sources/FSPageViewTransformer.swift b/Pods/FSPagerView/Sources/FSPageViewTransformer.swift new file mode 100644 index 0000000..2878679 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPageViewTransformer.swift @@ -0,0 +1,273 @@ +// +// FSPagerViewTransformer.swift +// FSPagerView +// +// Created by Wenchao Ding on 05/01/2017. +// Copyright © 2017 Wenchao Ding. All rights reserved. +// + +import UIKit + +@objc +public enum FSPagerViewTransformerType: Int { + case crossFading + case zoomOut + case depth + case overlap + case linear + case coverFlow + case ferrisWheel + case invertedFerrisWheel + case cubic +} + +open class FSPagerViewTransformer: NSObject { + + open internal(set) weak var pagerView: FSPagerView? + open internal(set) var type: FSPagerViewTransformerType + + open var minimumScale: CGFloat = 0.65 + open var minimumAlpha: CGFloat = 0.6 + + @objc + public init(type: FSPagerViewTransformerType) { + self.type = type + switch type { + case .zoomOut: + self.minimumScale = 0.85 + case .depth: + self.minimumScale = 0.5 + default: + break + } + } + + // Apply transform to attributes - zIndex: Int, frame: CGRect, alpha: CGFloat, transform: CGAffineTransform or transform3D: CATransform3D. + open func applyTransform(to attributes: FSPagerViewLayoutAttributes) { + guard let pagerView = self.pagerView else { + return + } + let position = attributes.position + let scrollDirection = pagerView.scrollDirection + let itemSpacing = (scrollDirection == .horizontal ? attributes.bounds.width : attributes.bounds.height) + self.proposedInteritemSpacing() + switch self.type { + case .crossFading: + var zIndex = 0 + var alpha: CGFloat = 0 + var transform = CGAffineTransform.identity + switch scrollDirection { + case .horizontal: + transform.tx = -itemSpacing * position + case .vertical: + transform.ty = -itemSpacing * position + } + if (abs(position) < 1) { // [-1,1] + // Use the default slide transition when moving to the left page + alpha = 1 - abs(position) + zIndex = 1 + } else { // (1,+Infinity] + // This page is way off-screen to the right. + alpha = 0 + zIndex = Int.min + } + attributes.alpha = alpha + attributes.transform = transform + attributes.zIndex = zIndex + case .zoomOut: + var alpha: CGFloat = 0 + var transform = CGAffineTransform.identity + switch position { + case -CGFloat.greatestFiniteMagnitude ..< -1 : // [-Infinity,-1) + // This page is way off-screen to the left. + alpha = 0 + case -1 ... 1 : // [-1,1] + // Modify the default slide transition to shrink the page as well + let scaleFactor = max(self.minimumScale, 1 - abs(position)) + transform.a = scaleFactor + transform.d = scaleFactor + switch scrollDirection { + case .horizontal: + let vertMargin = attributes.bounds.height * (1 - scaleFactor) / 2; + let horzMargin = itemSpacing * (1 - scaleFactor) / 2; + transform.tx = position < 0 ? (horzMargin - vertMargin*2) : (-horzMargin + vertMargin*2) + case .vertical: + let horzMargin = attributes.bounds.width * (1 - scaleFactor) / 2; + let vertMargin = itemSpacing * (1 - scaleFactor) / 2; + transform.ty = position < 0 ? (vertMargin - horzMargin*2) : (-vertMargin + horzMargin*2) + } + // Fade the page relative to its size. + alpha = self.minimumAlpha + (scaleFactor-self.minimumScale)/(1-self.minimumScale)*(1-self.minimumAlpha) + case 1 ... CGFloat.greatestFiniteMagnitude : // (1,+Infinity] + // This page is way off-screen to the right. + alpha = 0 + default: + break + } + attributes.alpha = alpha + attributes.transform = transform + case .depth: + var transform = CGAffineTransform.identity + var zIndex = 0 + var alpha: CGFloat = 0.0 + switch position { + case -CGFloat.greatestFiniteMagnitude ..< -1: // [-Infinity,-1) + // This page is way off-screen to the left. + alpha = 0 + zIndex = 0 + case -1 ... 0: // [-1,0] + // Use the default slide transition when moving to the left page + alpha = 1 + transform.tx = 0 + transform.a = 1 + transform.d = 1 + zIndex = 1 + case 0 ..< 1: // (0,1) + // Fade the page out. + alpha = CGFloat(1.0) - position + // Counteract the default slide transition + switch scrollDirection { + case .horizontal: + transform.tx = itemSpacing * -position + case .vertical: + transform.ty = itemSpacing * -position + } + // Scale the page down (between minimumScale and 1) + let scaleFactor = self.minimumScale + + (1.0 - self.minimumScale) * (1.0 - abs(position)); + transform.a = scaleFactor + transform.d = scaleFactor + zIndex = 0 + case 1 ... CGFloat.greatestFiniteMagnitude: // [1,+Infinity) + // This page is way off-screen to the right. + alpha = 0 + zIndex = 0 + default: + break + } + attributes.alpha = alpha + attributes.transform = transform + attributes.zIndex = zIndex + case .overlap,.linear: + guard scrollDirection == .horizontal else { + // This type doesn't support vertical mode + return + } + let scale = max(1 - (1-self.minimumScale) * abs(position), self.minimumScale) + let transform = CGAffineTransform(scaleX: scale, y: scale) + attributes.transform = transform + let alpha = (self.minimumAlpha + (1-abs(position))*(1-self.minimumAlpha)) + attributes.alpha = alpha + let zIndex = (1-abs(position)) * 10 + attributes.zIndex = Int(zIndex) + case .coverFlow: + guard scrollDirection == .horizontal else { + // This type doesn't support vertical mode + return + } + let position = min(max(-position,-1) ,1) + let rotation = sin(position*(.pi)*0.5)*(.pi)*0.25*1.5 + let translationZ = -itemSpacing * 0.5 * abs(position) + var transform3D = CATransform3DIdentity + transform3D.m34 = -0.002 + transform3D = CATransform3DRotate(transform3D, rotation, 0, 1, 0) + transform3D = CATransform3DTranslate(transform3D, 0, 0, translationZ) + attributes.zIndex = 100 - Int(abs(position)) + attributes.transform3D = transform3D + case .ferrisWheel, .invertedFerrisWheel: + guard scrollDirection == .horizontal else { + // This type doesn't support vertical mode + return + } + // http://ronnqvi.st/translate-rotate-translate/ + var zIndex = 0 + var transform = CGAffineTransform.identity + switch position { + case -5 ... 5: + let itemSpacing = attributes.bounds.width+self.proposedInteritemSpacing() + let count: CGFloat = 14 + let circle: CGFloat = .pi * 2.0 + let radius = itemSpacing * count / circle + let ty = radius * (self.type == .ferrisWheel ? 1 : -1) + let theta = circle / count + let rotation = position * theta * (self.type == .ferrisWheel ? 1 : -1) + transform = transform.translatedBy(x: -position*itemSpacing, y: ty) + transform = transform.rotated(by: rotation) + transform = transform.translatedBy(x: 0, y: -ty) + zIndex = Int((4.0-abs(position)*10)) + default: + break + } + attributes.alpha = abs(position) < 0.5 ? 1 : self.minimumAlpha + attributes.transform = transform + attributes.zIndex = zIndex + case .cubic: + switch position { + case -CGFloat.greatestFiniteMagnitude ... -1: + attributes.alpha = 0 + case -1 ..< 1: + attributes.alpha = 1 + attributes.zIndex = Int((1-position) * CGFloat(10)) + let direction: CGFloat = position < 0 ? 1 : -1 + let theta = position * .pi * 0.5 * (scrollDirection == .horizontal ? 1 : -1) + let radius = scrollDirection == .horizontal ? attributes.bounds.width : attributes.bounds.height + var transform3D = CATransform3DIdentity + transform3D.m34 = -0.002 + switch scrollDirection { + case .horizontal: + // ForwardX -> RotateY -> BackwardX + attributes.center.x += direction*radius*0.5 // ForwardX + transform3D = CATransform3DRotate(transform3D, theta, 0, 1, 0) // RotateY + transform3D = CATransform3DTranslate(transform3D,-direction*radius*0.5, 0, 0) // BackwardX + case .vertical: + // ForwardY -> RotateX -> BackwardY + attributes.center.y += direction*radius*0.5 // ForwardY + transform3D = CATransform3DRotate(transform3D, theta, 1, 0, 0) // RotateX + transform3D = CATransform3DTranslate(transform3D,0, -direction*radius*0.5, 0) // BackwardY + } + attributes.transform3D = transform3D + case 1 ... CGFloat.greatestFiniteMagnitude: + attributes.alpha = 0 + default: + attributes.alpha = 0 + attributes.zIndex = 0 + } + } + } + + // An interitem spacing proposed by transformer class. This will override the default interitemSpacing provided by the pager view. + open func proposedInteritemSpacing() -> CGFloat { + guard let pagerView = self.pagerView else { + return 0 + } + let scrollDirection = pagerView.scrollDirection + switch self.type { + case .overlap: + guard scrollDirection == .horizontal else { + return 0 + } + return pagerView.itemSize.width * -self.minimumScale * 0.6 + case .linear: + guard scrollDirection == .horizontal else { + return 0 + } + return pagerView.itemSize.width * -self.minimumScale * 0.2 + case .coverFlow: + guard scrollDirection == .horizontal else { + return 0 + } + return -pagerView.itemSize.width * sin(.pi*0.25*0.25*3.0) + case .ferrisWheel,.invertedFerrisWheel: + guard scrollDirection == .horizontal else { + return 0 + } + return -pagerView.itemSize.width * 0.15 + case .cubic: + return 0 + default: + break + } + return pagerView.interitemSpacing + } + +} + diff --git a/Pods/FSPagerView/Sources/FSPagerCollectionView.swift b/Pods/FSPagerView/Sources/FSPagerCollectionView.swift new file mode 100644 index 0000000..0f366cf --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPagerCollectionView.swift @@ -0,0 +1,66 @@ +// +// FSPagerCollectionView.swift +// FSPagerView +// +// Created by Wenchao Ding on 24/12/2016. +// Copyright © 2016 Wenchao Ding. All rights reserved. +// +// 1. Reject -[UIScrollView(UIScrollViewInternal) _adjustContentOffsetIfNecessary] +// 2. Group initialized features + +import UIKit + +class FSPagerCollectionView: UICollectionView { + + #if !os(tvOS) + override var scrollsToTop: Bool { + set { + super.scrollsToTop = false + } + get { + return false + } + } + #endif + + override var contentInset: UIEdgeInsets { + set { + super.contentInset = .zero + if (newValue.top > 0) { + let contentOffset = CGPoint(x:self.contentOffset.x, y:self.contentOffset.y+newValue.top); + self.contentOffset = contentOffset + } + } + get { + return super.contentInset + } + } + + override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) { + super.init(frame: frame, collectionViewLayout: layout) + self.commonInit() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + self.commonInit() + } + + fileprivate func commonInit() { + self.contentInset = .zero + self.decelerationRate = UIScrollView.DecelerationRate.fast + self.showsVerticalScrollIndicator = false + self.showsHorizontalScrollIndicator = false + if #available(iOS 10.0, *) { + self.isPrefetchingEnabled = false + } + if #available(iOS 11.0, *) { + self.contentInsetAdjustmentBehavior = .never + } + #if !os(tvOS) + self.scrollsToTop = false + self.isPagingEnabled = false + #endif + } + +} diff --git a/Pods/FSPagerView/Sources/FSPagerView.swift b/Pods/FSPagerView/Sources/FSPagerView.swift new file mode 100644 index 0000000..7fb17d9 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPagerView.swift @@ -0,0 +1,636 @@ +// +// FSPagerView.swift +// FSPagerView +// +// Created by Wenchao Ding on 17/12/2016. +// Copyright © 2016 Wenchao Ding. All rights reserved. +// +// https://github.com/WenchaoD +// +// FSPagerView is an elegant Screen Slide Library implemented primarily with UICollectionView. It is extremely helpful for making Bannerã€Product Showã€Welcome/Guide Pagesã€Screen/ViewController Sliders. +// + +import UIKit + +@objc +public protocol FSPagerViewDataSource: NSObjectProtocol { + + /// Asks your data source object for the number of items in the pager view. + @objc(numberOfItemsInPagerView:) + func numberOfItems(in pagerView: FSPagerView) -> Int + + /// Asks your data source object for the cell that corresponds to the specified item in the pager view. + @objc(pagerView:cellForItemAtIndex:) + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell + +} + +@objc +public protocol FSPagerViewDelegate: NSObjectProtocol { + + /// Asks the delegate if the item should be highlighted during tracking. + @objc(pagerView:shouldHighlightItemAtIndex:) + optional func pagerView(_ pagerView: FSPagerView, shouldHighlightItemAt index: Int) -> Bool + + /// Tells the delegate that the item at the specified index was highlighted. + @objc(pagerView:didHighlightItemAtIndex:) + optional func pagerView(_ pagerView: FSPagerView, didHighlightItemAt index: Int) + + /// Asks the delegate if the specified item should be selected. + @objc(pagerView:shouldSelectItemAtIndex:) + optional func pagerView(_ pagerView: FSPagerView, shouldSelectItemAt index: Int) -> Bool + + /// Tells the delegate that the item at the specified index was selected. + @objc(pagerView:didSelectItemAtIndex:) + optional func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) + + /// Tells the delegate that the specified cell is about to be displayed in the pager view. + @objc(pagerView:willDisplayCell:forItemAtIndex:) + optional func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewCell, forItemAt index: Int) + + /// Tells the delegate that the specified cell was removed from the pager view. + @objc(pagerView:didEndDisplayingCell:forItemAtIndex:) + optional func pagerView(_ pagerView: FSPagerView, didEndDisplaying cell: FSPagerViewCell, forItemAt index: Int) + + /// Tells the delegate when the pager view is about to start scrolling the content. + @objc(pagerViewWillBeginDragging:) + optional func pagerViewWillBeginDragging(_ pagerView: FSPagerView) + + /// Tells the delegate when the user finishes scrolling the content. + @objc(pagerViewWillEndDragging:targetIndex:) + optional func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) + + /// Tells the delegate when the user scrolls the content view within the receiver. + @objc(pagerViewDidScroll:) + optional func pagerViewDidScroll(_ pagerView: FSPagerView) + + /// Tells the delegate when a scrolling animation in the pager view concludes. + @objc(pagerViewDidEndScrollAnimation:) + optional func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) + + /// Tells the delegate that the pager view has ended decelerating the scrolling movement. + @objc(pagerViewDidEndDecelerating:) + optional func pagerViewDidEndDecelerating(_ pagerView: FSPagerView) + +} + +@IBDesignable +open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelegate { + + // MARK: - Public properties + + /// The object that acts as the data source of the pager view. + @IBOutlet open weak var dataSource: FSPagerViewDataSource? + + /// The object that acts as the delegate of the pager view. + @IBOutlet open weak var delegate: FSPagerViewDelegate? + + /// The scroll direction of the pager view. Default is horizontal. + @objc + open var scrollDirection: FSPagerView.ScrollDirection = .horizontal { + didSet { + self.collectionViewLayout.forceInvalidate() + } + } + + /// The time interval of automatic sliding. 0 means disabling automatic sliding. Default is 0. + @IBInspectable + open var automaticSlidingInterval: CGFloat = 0.0 { + didSet { + self.cancelTimer() + if self.automaticSlidingInterval > 0 { + self.startTimer() + } + } + } + + /// The spacing to use between items in the pager view. Default is 0. + @IBInspectable + open var interitemSpacing: CGFloat = 0 { + didSet { + self.collectionViewLayout.forceInvalidate() + } + } + + /// The item size of the pager view. When the value of this property is FSPagerView.automaticSize, the items fill the entire visible area of the pager view. Default is FSPagerView.automaticSize. + @IBInspectable + open var itemSize: CGSize = automaticSize { + didSet { + self.collectionViewLayout.forceInvalidate() + } + } + + /// A Boolean value indicates that whether the pager view has infinite items. Default is false. + @IBInspectable + open var isInfinite: Bool = false { + didSet { + self.collectionViewLayout.needsReprepare = true + self.collectionView.reloadData() + } + } + + /// An unsigned integer value that determines the deceleration distance of the pager view, which indicates the number of passing items during the deceleration. When the value of this property is FSPagerView.automaticDistance, the actual 'distance' is automatically calculated according to the scrolling speed of the pager view. Default is 1. + @IBInspectable + open var decelerationDistance: UInt = 1 + + /// A Boolean value that determines whether scrolling is enabled. + @IBInspectable + open var isScrollEnabled: Bool { + set { self.collectionView.isScrollEnabled = newValue } + get { return self.collectionView.isScrollEnabled } + } + + /// A Boolean value that controls whether the pager view bounces past the edge of content and back again. + @IBInspectable + open var bounces: Bool { + set { self.collectionView.bounces = newValue } + get { return self.collectionView.bounces } + } + + /// A Boolean value that determines whether bouncing always occurs when horizontal scrolling reaches the end of the content view. + @IBInspectable + open var alwaysBounceHorizontal: Bool { + set { self.collectionView.alwaysBounceHorizontal = newValue } + get { return self.collectionView.alwaysBounceHorizontal } + } + + /// A Boolean value that determines whether bouncing always occurs when vertical scrolling reaches the end of the content view. + @IBInspectable + open var alwaysBounceVertical: Bool { + set { self.collectionView.alwaysBounceVertical = newValue } + get { return self.collectionView.alwaysBounceVertical } + } + + /// A Boolean value that controls whether the infinite loop is removed if there is only one item. Default is false. + @IBInspectable + open var removesInfiniteLoopForSingleItem: Bool = false { + didSet { + self.reloadData() + } + } + + /// The background view of the pager view. + @IBInspectable + open var backgroundView: UIView? { + didSet { + if let backgroundView = self.backgroundView { + if backgroundView.superview != nil { + backgroundView.removeFromSuperview() + } + self.insertSubview(backgroundView, at: 0) + self.setNeedsLayout() + } + } + } + + /// The transformer of the pager view. + @objc + open var transformer: FSPagerViewTransformer? { + didSet { + self.transformer?.pagerView = self + self.collectionViewLayout.forceInvalidate() + } + } + + // MARK: - Public readonly-properties + + /// Returns whether the user has touched the content to initiate scrolling. + @objc + open var isTracking: Bool { + return self.collectionView.isTracking + } + + /// The percentage of x position at which the origin of the content view is offset from the origin of the pagerView view. + @objc + open var scrollOffset: CGFloat { + let contentOffset = max(self.collectionView.contentOffset.x, self.collectionView.contentOffset.y) + let scrollOffset = Double(contentOffset/self.collectionViewLayout.itemSpacing) + return fmod(CGFloat(scrollOffset), CGFloat(self.numberOfItems)) + } + + /// The underlying gesture recognizer for pan gestures. + @objc + open var panGestureRecognizer: UIPanGestureRecognizer { + return self.collectionView.panGestureRecognizer + } + + @objc open fileprivate(set) dynamic var currentIndex: Int = 0 + + // MARK: - Private properties + + internal weak var collectionViewLayout: FSPagerViewLayout! + internal weak var collectionView: FSPagerCollectionView! + internal weak var contentView: UIView! + internal var timer: Timer? + internal var numberOfItems: Int = 0 + internal var numberOfSections: Int = 0 + + fileprivate var dequeingSection = 0 + fileprivate var centermostIndexPath: IndexPath { + guard self.numberOfItems > 0, self.collectionView.contentSize != .zero else { + return IndexPath(item: 0, section: 0) + } + let sortedIndexPaths = self.collectionView.indexPathsForVisibleItems.sorted { (l, r) -> Bool in + let leftFrame = self.collectionViewLayout.frame(for: l) + let rightFrame = self.collectionViewLayout.frame(for: r) + var leftCenter: CGFloat,rightCenter: CGFloat,ruler: CGFloat + switch self.scrollDirection { + case .horizontal: + leftCenter = leftFrame.midX + rightCenter = rightFrame.midX + ruler = self.collectionView.bounds.midX + case .vertical: + leftCenter = leftFrame.midY + rightCenter = rightFrame.midY + ruler = self.collectionView.bounds.midY + } + return abs(ruler-leftCenter) < abs(ruler-rightCenter) + } + let indexPath = sortedIndexPaths.first + if let indexPath = indexPath { + return indexPath + } + return IndexPath(item: 0, section: 0) + } + fileprivate var isPossiblyRotating: Bool { + guard let animationKeys = self.contentView.layer.animationKeys() else { + return false + } + let rotationAnimationKeys = ["position", "bounds.origin", "bounds.size"] + return animationKeys.contains(where: { rotationAnimationKeys.contains($0) }) + } + fileprivate var possibleTargetingIndexPath: IndexPath? + + // MARK: - Overriden functions + + public override init(frame: CGRect) { + super.init(frame: frame) + self.commonInit() + } + + public required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + self.commonInit() + } + + open override func layoutSubviews() { + super.layoutSubviews() + self.backgroundView?.frame = self.bounds + self.contentView.frame = self.bounds + self.collectionView.frame = self.contentView.bounds + } + + open override func willMove(toWindow newWindow: UIWindow?) { + super.willMove(toWindow: newWindow) + if newWindow != nil { + self.startTimer() + } else { + self.cancelTimer() + } + } + + #if TARGET_INTERFACE_BUILDER + + open override func prepareForInterfaceBuilder() { + super.prepareForInterfaceBuilder() + self.contentView.layer.borderWidth = 1 + self.contentView.layer.cornerRadius = 5 + self.contentView.layer.masksToBounds = true + self.contentView.frame = self.bounds + let label = UILabel(frame: self.contentView.bounds) + label.textAlignment = .center + label.font = UIFont.boldSystemFont(ofSize: 25) + label.text = "FSPagerView" + self.contentView.addSubview(label) + } + + #endif + + deinit { + self.collectionView.dataSource = nil + self.collectionView.delegate = nil + } + + // MARK: - UICollectionViewDataSource + + public func numberOfSections(in collectionView: UICollectionView) -> Int { + guard let dataSource = self.dataSource else { + return 1 + } + self.numberOfItems = dataSource.numberOfItems(in: self) + guard self.numberOfItems > 0 else { + return 0; + } + self.numberOfSections = self.isInfinite && (self.numberOfItems > 1 || !self.removesInfiniteLoopForSingleItem) ? Int(Int16.max)/self.numberOfItems : 1 + return self.numberOfSections + } + + public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return self.numberOfItems + } + + public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let index = indexPath.item + self.dequeingSection = indexPath.section + let cell = self.dataSource!.pagerView(self, cellForItemAt: index) + return cell + } + + // MARK: - UICollectionViewDelegate + + public func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool { + guard let function = self.delegate?.pagerView(_:shouldHighlightItemAt:) else { + return true + } + let index = indexPath.item % self.numberOfItems + return function(self,index) + } + + public func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) { + guard let function = self.delegate?.pagerView(_:didHighlightItemAt:) else { + return + } + let index = indexPath.item % self.numberOfItems + function(self,index) + } + + public func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { + guard let function = self.delegate?.pagerView(_:shouldSelectItemAt:) else { + return true + } + let index = indexPath.item % self.numberOfItems + return function(self,index) + } + + public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + guard let function = self.delegate?.pagerView(_:didSelectItemAt:) else { + return + } + self.possibleTargetingIndexPath = indexPath + defer { + self.possibleTargetingIndexPath = nil + } + let index = indexPath.item % self.numberOfItems + function(self,index) + } + + public func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { + guard let function = self.delegate?.pagerView(_:willDisplay:forItemAt:) else { + return + } + let index = indexPath.item % self.numberOfItems + function(self,cell as! FSPagerViewCell,index) + } + + public func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { + guard let function = self.delegate?.pagerView(_:didEndDisplaying:forItemAt:) else { + return + } + let index = indexPath.item % self.numberOfItems + function(self,cell as! FSPagerViewCell,index) + } + + public func scrollViewDidScroll(_ scrollView: UIScrollView) { + if !self.isPossiblyRotating && self.numberOfItems > 0 { + // In case someone is using KVO + let currentIndex = lround(Double(self.scrollOffset)) % self.numberOfItems + if (currentIndex != self.currentIndex) { + self.currentIndex = currentIndex + } + } + guard let function = self.delegate?.pagerViewDidScroll else { + return + } + function(self) + } + + public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { + if let function = self.delegate?.pagerViewWillBeginDragging(_:) { + function(self) + } + if self.automaticSlidingInterval > 0 { + self.cancelTimer() + } + } + + public func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { + if let function = self.delegate?.pagerViewWillEndDragging(_:targetIndex:) { + let contentOffset = self.scrollDirection == .horizontal ? targetContentOffset.pointee.x : targetContentOffset.pointee.y + let targetItem = lround(Double(contentOffset/self.collectionViewLayout.itemSpacing)) + function(self, targetItem % self.numberOfItems) + } + if self.automaticSlidingInterval > 0 { + self.startTimer() + } + } + + public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { + if let function = self.delegate?.pagerViewDidEndDecelerating { + function(self) + } + } + + public func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { + if let function = self.delegate?.pagerViewDidEndScrollAnimation { + function(self) + } + } + + // MARK: - Public functions + + /// Register a class for use in creating new pager view cells. + /// + /// - Parameters: + /// - cellClass: The class of a cell that you want to use in the pager view. + /// - identifier: The reuse identifier to associate with the specified class. This parameter must not be nil and must not be an empty string. + @objc(registerClass:forCellWithReuseIdentifier:) + open func register(_ cellClass: Swift.AnyClass?, forCellWithReuseIdentifier identifier: String) { + self.collectionView.register(cellClass, forCellWithReuseIdentifier: identifier) + } + + /// Register a nib file for use in creating new pager view cells. + /// + /// - Parameters: + /// - nib: The nib object containing the cell object. The nib file must contain only one top-level object and that object must be of the type FSPagerViewCell. + /// - identifier: The reuse identifier to associate with the specified nib file. This parameter must not be nil and must not be an empty string. + @objc(registerNib:forCellWithReuseIdentifier:) + open func register(_ nib: UINib?, forCellWithReuseIdentifier identifier: String) { + self.collectionView.register(nib, forCellWithReuseIdentifier: identifier) + } + + /// Returns a reusable cell object located by its identifier + /// + /// - Parameters: + /// - identifier: The reuse identifier for the specified cell. This parameter must not be nil. + /// - index: The index specifying the location of the cell. + /// - Returns: A valid FSPagerViewCell object. + @objc(dequeueReusableCellWithReuseIdentifier:atIndex:) + open func dequeueReusableCell(withReuseIdentifier identifier: String, at index: Int) -> FSPagerViewCell { + let indexPath = IndexPath(item: index, section: self.dequeingSection) + let cell = self.collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) + guard cell.isKind(of: FSPagerViewCell.self) else { + fatalError("Cell class must be subclass of FSPagerViewCell") + } + return cell as! FSPagerViewCell + } + + /// Reloads all of the data for the collection view. + @objc(reloadData) + open func reloadData() { + self.collectionViewLayout.needsReprepare = true; + self.collectionView.reloadData() + } + + /// Selects the item at the specified index and optionally scrolls it into view. + /// + /// - Parameters: + /// - index: The index path of the item to select. + /// - animated: Specify true to animate the change in the selection or false to make the change without animating it. + @objc(selectItemAtIndex:animated:) + open func selectItem(at index: Int, animated: Bool) { + let indexPath = self.nearbyIndexPath(for: index) + let scrollPosition: UICollectionView.ScrollPosition = self.scrollDirection == .horizontal ? .centeredHorizontally : .centeredVertically + self.collectionView.selectItem(at: indexPath, animated: animated, scrollPosition: scrollPosition) + } + + /// Deselects the item at the specified index. + /// + /// - Parameters: + /// - index: The index of the item to deselect. + /// - animated: Specify true to animate the change in the selection or false to make the change without animating it. + @objc(deselectItemAtIndex:animated:) + open func deselectItem(at index: Int, animated: Bool) { + let indexPath = self.nearbyIndexPath(for: index) + self.collectionView.deselectItem(at: indexPath, animated: animated) + } + + /// Scrolls the pager view contents until the specified item is visible. + /// + /// - Parameters: + /// - index: The index of the item to scroll into view. + /// - animated: Specify true to animate the scrolling behavior or false to adjust the pager view’s visible content immediately. + @objc(scrollToItemAtIndex:animated:) + open func scrollToItem(at index: Int, animated: Bool) { + guard index < self.numberOfItems else { + fatalError("index \(index) is out of range [0...\(self.numberOfItems-1)]") + } + let indexPath = { () -> IndexPath in + if let indexPath = self.possibleTargetingIndexPath, indexPath.item == index { + defer { + self.possibleTargetingIndexPath = nil + } + return indexPath + } + return self.numberOfSections > 1 ? self.nearbyIndexPath(for: index) : IndexPath(item: index, section: 0) + }() + let contentOffset = self.collectionViewLayout.contentOffset(for: indexPath) + self.collectionView.setContentOffset(contentOffset, animated: animated) + } + + /// Returns the index of the specified cell. + /// + /// - Parameter cell: The cell object whose index you want. + /// - Returns: The index of the cell or NSNotFound if the specified cell is not in the pager view. + @objc(indexForCell:) + open func index(for cell: FSPagerViewCell) -> Int { + guard let indexPath = self.collectionView.indexPath(for: cell) else { + return NSNotFound + } + return indexPath.item + } + + /// Returns the visible cell at the specified index. + /// + /// - Parameter index: The index that specifies the position of the cell. + /// - Returns: The cell object at the corresponding position or nil if the cell is not visible or index is out of range. + @objc(cellForItemAtIndex:) + open func cellForItem(at index: Int) -> FSPagerViewCell? { + let indexPath = self.nearbyIndexPath(for: index) + return self.collectionView.cellForItem(at: indexPath) as? FSPagerViewCell + } + + // MARK: - Private functions + + fileprivate func commonInit() { + + // Content View + let contentView = UIView(frame:CGRect.zero) + contentView.backgroundColor = UIColor.clear + self.addSubview(contentView) + self.contentView = contentView + + // UICollectionView + let collectionViewLayout = FSPagerViewLayout() + let collectionView = FSPagerCollectionView(frame: CGRect.zero, collectionViewLayout: collectionViewLayout) + collectionView.dataSource = self + collectionView.delegate = self + collectionView.backgroundColor = UIColor.clear + self.contentView.addSubview(collectionView) + self.collectionView = collectionView + self.collectionViewLayout = collectionViewLayout + + } + + fileprivate func startTimer() { + guard self.automaticSlidingInterval > 0 && self.timer == nil else { + return + } + self.timer = Timer.scheduledTimer(timeInterval: TimeInterval(self.automaticSlidingInterval), target: self, selector: #selector(self.flipNext(sender:)), userInfo: nil, repeats: true) + RunLoop.current.add(self.timer!, forMode: .common) + } + + @objc + fileprivate func flipNext(sender: Timer?) { + guard let _ = self.superview, let _ = self.window, self.numberOfItems > 0, !self.isTracking else { + return + } + let contentOffset: CGPoint = { + let indexPath = self.centermostIndexPath + let section = self.numberOfSections > 1 ? (indexPath.section+(indexPath.item+1)/self.numberOfItems) : 0 + let item = (indexPath.item+1) % self.numberOfItems + return self.collectionViewLayout.contentOffset(for: IndexPath(item: item, section: section)) + }() + self.collectionView.setContentOffset(contentOffset, animated: true) + } + + fileprivate func cancelTimer() { + guard self.timer != nil else { + return + } + self.timer!.invalidate() + self.timer = nil + } + + fileprivate func nearbyIndexPath(for index: Int) -> IndexPath { + // Is there a better algorithm? + let currentIndex = self.currentIndex + let currentSection = self.centermostIndexPath.section + if abs(currentIndex-index) <= self.numberOfItems/2 { + return IndexPath(item: index, section: currentSection) + } else if (index-currentIndex >= 0) { + return IndexPath(item: index, section: currentSection-1) + } else { + return IndexPath(item: index, section: currentSection+1) + } + } + +} + +extension FSPagerView { + + /// Constants indicating the direction of scrolling for the pager view. + @objc + public enum ScrollDirection: Int { + /// The pager view scrolls content horizontally + case horizontal + /// The pager view scrolls content vertically + case vertical + } + + /// Requests that FSPagerView use the default value for a given distance. + public static let automaticDistance: UInt = 0 + + /// Requests that FSPagerView use the default value for a given size. + public static let automaticSize: CGSize = .zero + +} diff --git a/Pods/FSPagerView/Sources/FSPagerViewCell.swift b/Pods/FSPagerView/Sources/FSPagerViewCell.swift new file mode 100644 index 0000000..9885524 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPagerViewCell.swift @@ -0,0 +1,175 @@ +// +// FSPagerViewCell.swift +// FSPagerView +// +// Created by Wenchao Ding on 17/12/2016. +// Copyright © 2016 Wenchao Ding. All rights reserved. +// + +import UIKit +public protocol FSPagerViewCellDelegate { + func delete(at: Int) +} +open class FSPagerViewCell: UICollectionViewCell { + var topLeftButton: UIButton! + open var delegate: FSPagerViewCellDelegate? + open var index: Int? + + /// Returns the label used for the main textual content of the pager view cell. + @objc + open var textLabel: UILabel? { + if let _ = _textLabel { + return _textLabel + } + let view = UIView(frame: .zero) + view.isUserInteractionEnabled = false + view.backgroundColor = UIColor.black.withAlphaComponent(0.6) + + let textLabel = UILabel(frame: .zero) + textLabel.textColor = .white + textLabel.font = UIFont.preferredFont(forTextStyle: .body) + self.contentView.addSubview(view) + view.addSubview(textLabel) + + textLabel.addObserver(self, forKeyPath: "font", options: [.old,.new], context: kvoContext) + + _textLabel = textLabel + return textLabel + } + + /// Returns the image view of the pager view cell. Default is nil. + @objc + open var imageView: UIImageView? { + if let _ = _imageView { + return _imageView + } + let imageView = UIImageView(frame: .zero) + self.contentView.addSubview(imageView) + _imageView = imageView + + let xPosition = ((self.contentView.bounds.width) - 50) / 2 + let yPosition = (self.contentView.bounds.height) - 70 + + topLeftButton = UIButton(frame: CGRect(x: xPosition, y: yPosition, width: 50, height: 50)) // Adjust frame as needed + self.contentView.addSubview(topLeftButton) // Add the button to the cell's contentView + topLeftButton.setImage(UIImage(systemName: "trash.fill"), for: .normal) + topLeftButton.addTarget(self, action: #selector(topLeftButtonTapped), for: .touchUpInside) // Set the button action + topLeftButton.tintColor = .white + topLeftButton.layer.cornerRadius = 25 + topLeftButton.layer.borderColor = UIColor.white.cgColor + topLeftButton.layer.borderWidth = 2 + + return imageView + } + + fileprivate weak var _textLabel: UILabel? + fileprivate weak var _imageView: UIImageView? + + fileprivate let kvoContext = UnsafeMutableRawPointer(bitPattern: 0) + fileprivate let selectionColor = UIColor(white: 0.2, alpha: 0.2) + + fileprivate weak var _selectedForegroundView: UIView? + fileprivate var selectedForegroundView: UIView? { + guard _selectedForegroundView == nil else { + return _selectedForegroundView + } + guard let imageView = _imageView else { + return nil + } + let view = UIView(frame: imageView.bounds) + imageView.addSubview(view) + _selectedForegroundView = view + return view + } + + open override var isHighlighted: Bool { + set { + super.isHighlighted = newValue + if newValue { + self.selectedForegroundView?.layer.backgroundColor = self.selectionColor.cgColor + } else if !super.isSelected { + self.selectedForegroundView?.layer.backgroundColor = UIColor.clear.cgColor + } + } + get { + return super.isHighlighted + } + } + + open override var isSelected: Bool { + set { + super.isSelected = newValue + self.selectedForegroundView?.layer.backgroundColor = newValue ? self.selectionColor.cgColor : UIColor.clear.cgColor + } + get { + return super.isSelected + } + } + + public override init(frame: CGRect) { + super.init(frame: frame) + commonInit() + } + + public required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + commonInit() + } + + fileprivate func commonInit() { + self.contentView.backgroundColor = UIColor.clear + self.backgroundColor = UIColor.clear + self.contentView.layer.shadowColor = UIColor.black.cgColor + self.contentView.layer.shadowRadius = 5 + self.contentView.layer.shadowOpacity = 0.75 + self.contentView.layer.shadowOffset = .zero + + } + + @objc func topLeftButtonTapped() { + delegate?.delete(at: index ?? -1) + } + + deinit { + if let textLabel = _textLabel { + textLabel.removeObserver(self, forKeyPath: "font", context: kvoContext) + } + } + + override open func layoutSubviews() { + super.layoutSubviews() + if let imageView = _imageView { + imageView.frame = self.contentView.bounds + } + if let textLabel = _textLabel { + textLabel.superview!.frame = { + var rect = self.contentView.bounds + let height = textLabel.font.pointSize*1.5 + rect.size.height = height + rect.origin.y = self.contentView.frame.height-height + return rect + }() + textLabel.frame = { + var rect = textLabel.superview!.bounds + rect = rect.insetBy(dx: 8, dy: 0) + rect.size.height -= 1 + rect.origin.y += 1 + return rect + }() + } + if let selectedForegroundView = _selectedForegroundView { + selectedForegroundView.frame = self.contentView.bounds + } + } + + open override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if context == kvoContext { + if keyPath == "font" { + self.setNeedsLayout() + } + } else { + super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) + } + } + +} diff --git a/Pods/FSPagerView/Sources/FSPagerViewLayoutAttributes.swift b/Pods/FSPagerView/Sources/FSPagerViewLayoutAttributes.swift new file mode 100644 index 0000000..d93cb33 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPagerViewLayoutAttributes.swift @@ -0,0 +1,30 @@ +// +// FSPagerViewLayoutAttributes.swift +// FSPagerViewExample +// +// Created by Wenchao Ding on 26/02/2017. +// Copyright © 2017 Wenchao Ding. All rights reserved. +// + +import UIKit + +open class FSPagerViewLayoutAttributes: UICollectionViewLayoutAttributes { + + open var position: CGFloat = 0 + + open override func isEqual(_ object: Any?) -> Bool { + guard let object = object as? FSPagerViewLayoutAttributes else { + return false + } + var isEqual = super.isEqual(object) + isEqual = isEqual && (self.position == object.position) + return isEqual + } + + open override func copy(with zone: NSZone? = nil) -> Any { + let copy = super.copy(with: zone) as! FSPagerViewLayoutAttributes + copy.position = self.position + return copy + } + +} diff --git a/Pods/FSPagerView/Sources/FSPagerViewObjcCompat.h b/Pods/FSPagerView/Sources/FSPagerViewObjcCompat.h new file mode 100644 index 0000000..755f30f --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPagerViewObjcCompat.h @@ -0,0 +1,23 @@ +// +// FSPagerViewObjcCompat.h +// FSPagerView +// +// Created by 䏿–‡è¶… on 2018/9/18. +// Copyright © 2018 Wenchao Ding. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <Foundation/Foundation.h> + +#define FSPagerViewExtern extern + +/** + Requests that FSPagerView use the default value for a given distance. + */ +FSPagerViewExtern NSUInteger const FSPagerViewAutomaticDistance; + +/** + Requests that FSPagerView use the default value for a given size. + */ +FSPagerViewExtern CGSize const FSPagerViewAutomaticSize; + diff --git a/Pods/FSPagerView/Sources/FSPagerViewObjcCompat.m b/Pods/FSPagerView/Sources/FSPagerViewObjcCompat.m new file mode 100644 index 0000000..7851649 --- /dev/null +++ b/Pods/FSPagerView/Sources/FSPagerViewObjcCompat.m @@ -0,0 +1,12 @@ +// +// FSPagerViewObjcCompat.m +// FSPagerView +// +// Created by Wenchao Ding on 2018/9/24. +// Copyright © 2018 Wenchao Ding. All rights reserved. +// + +#import "FSPagerViewObjcCompat.h" + +NSUInteger const FSPagerViewAutomaticDistance = 0; +CGSize const FSPagerViewAutomaticSize = { .width = 0, .height = 0 }; diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 96a76f0..1598683 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,10 +1,12 @@ PODS: + - FSPagerView (0.8.3) - ImagePicker (3.2.0) - IQKeyboardManagerSwift (7.0.3) - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) DEPENDENCIES: + - FSPagerView - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS @@ -12,17 +14,19 @@ DEPENDENCIES: SPEC REPOS: trunk: + - FSPagerView - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS - NBBottomSheet SPEC CHECKSUMS: + FSPagerView: 670405b2f18e2a87fa37f20b00de783e562c25a8 ImagePicker: 1d950bbb2422548ed58791b4ec7f42fe42920511 IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 -PODFILE CHECKSUM: 99d4cce8ced2a9accaa7e878545a1ac36d8bb5fc +PODFILE CHECKSUM: 52accaf9c5f2924a92fc166365082451576507fe COCOAPODS: 1.14.3 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 8b9c049..7d4c6a3 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,302 +7,339 @@ objects = { /* Begin PBXBuildFile section */ - 028F3BD1F76536182769D7FA2BB26457 /* ImageStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4BC9C4AEF4B7509AFF6B6DAA85157F1 /* ImageStack.swift */; }; - 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20382F7CEA0A2FF24E600822E96AA7EC /* IQTextFieldViewInfo.swift */; }; - 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA73FF47AD2E401229886E164A016157 /* LanguageManager.swift */; }; - 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4506BEE76EF98148A28CD87EE773134 /* IQKeyboardManager+Internal.swift */; }; - 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B12A19FA505C37ACEDAB545EDD4C324 /* IQUIView+IQKeyboardToolbarDeprecated.swift */; }; - 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056020DCD7EE4DB784B0EB1B1F7CB59C /* IQTextFieldViewListener.swift */; }; - 1021FCA162D086E55DE8D6926F8DA215 /* ImageGalleryViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A967C4C563E4504346C2013BED0CB222 /* ImageGalleryViewCell.swift */; }; - 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291BB5586E07ADC8AFF3AB7CA09E3C84 /* IQUIView+Hierarchy.swift */; }; - 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD5BCA1FBF25DA15C2AE9337BD05C406 /* UIImageView+Direction.swift */; }; - 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C8F9D764EEB7EEDEDF45F7C7CC55C33 /* IQPreviousNextView.swift */; }; - 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6795D74469E29BB8CF88805CFB060AFF /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */; }; - 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F787D1084E76059C7D81AD88BC26B28E /* NBBottomSheetPresentationController.swift */; }; - 1948830F0F143F2897657B9D75895EFA /* VideoInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C50F60479109C53DD1F7C301694D48A1 /* VideoInfoView.swift */; }; + 028F3BD1F76536182769D7FA2BB26457 /* ImageStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAD7C2211C4367AD4461C65ABCCE4B4D /* ImageStack.swift */; }; + 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3550E18ADF3EF705F4700FC56EA51321 /* IQTextFieldViewInfo.swift */; }; + 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E7F6859EDFDF3E322CAB934188C105 /* LanguageManager.swift */; }; + 077139FE9B0F01A087099D1DEEA43C6F /* AUTO@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 73CB09935F781BCB817A05DA1DAA1020 /* AUTO@3x.png */; }; + 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C5ED23D8DA6C61EF94C1ADA43ADBED7 /* IQKeyboardManager+Internal.swift */; }; + 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE26B4E0FA2A7EB069ECA092637ADB2B /* IQUIView+IQKeyboardToolbarDeprecated.swift */; }; + 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C5AD611F2819B6A087C4E533D669C2 /* IQTextFieldViewListener.swift */; }; + 1021FCA162D086E55DE8D6926F8DA215 /* ImageGalleryViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58468F905BF54F1BB6F1379778747E4A /* ImageGalleryViewCell.swift */; }; + 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6929AC0AE377312BD04644294A15EC42 /* IQUIView+Hierarchy.swift */; }; + 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186046B555C68EDF4D8B264B7310A49F /* UIImageView+Direction.swift */; }; + 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C974A91C05893EDB6D9C54E85336A9B /* IQPreviousNextView.swift */; }; + 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70730B6AC4F7CFA336195B8FD8BFA5A3 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */; }; + 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F54D487A85CBB9867A9D40D6C520A091 /* NBBottomSheetPresentationController.swift */; }; + 18874BB7E65438A4A83A05A86904B3D2 /* video@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 629D33431B1A6A7BD331EA4D4836896E /* video@3x.png */; }; + 1948830F0F143F2897657B9D75895EFA /* VideoInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F50249C139F076BB49CF9DC780080CB /* VideoInfoView.swift */; }; 1BBD42E84E62842B6EA186CEF24BBF45 /* ImagePicker-ImagePicker in Resources */ = {isa = PBXBuildFile; fileRef = 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */; }; - 1BBED45FEDD4AF437A762909E4937019 /* CameraMan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A535B048E99AD006404076AEFBB03C /* CameraMan.swift */; }; - 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CD85F8FE5988FBAA6E8BC1DC380C2C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */; }; - 1D5090C638CFC6ABA603A73B2D890CC7 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE9C6C08B1735F0F717130FCC08BDA9 /* Helper.swift */; }; + 1BBED45FEDD4AF437A762909E4937019 /* CameraMan.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9DD740680FA210D5DAB6BE252AB4EF1 /* CameraMan.swift */; }; + 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89F5F3DB1CD795822ECF03A3BF322570 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */; }; + 1D5090C638CFC6ABA603A73B2D890CC7 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE279F36DEA7F9799201FBED80DE1579 /* Helper.swift */; }; 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86E4E0BDBE48394EB9813E4999877362 /* IQKeyboardInfo.swift */; }; - 267C4C6C182CC853990C78F13C5318CE /* TopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ED7D7EDA19CDAE346E3AE6A5C8BB84 /* TopView.swift */; }; - 2BC4A6DBF3FFADA37FBD3DD6E7FF7DF5 /* video@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 15C8486B0FEF983C5B8781637A943491 /* video@3x.png */; }; - 2CE68F64419AE1091FEC8A5F75C29DCC /* cameraIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F5CB977FC46BAB3CEE64355EC9A19AC3 /* cameraIcon@3x.png */; }; - 32766BC7B540C537C3EE147C018D8A02 /* selectedImageGallery@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 29F03ED2CD860C1429379A22D209D161 /* selectedImageGallery@3x.png */; }; - 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9748A2A58F64F03A23B2752179897C3D /* NBBottomSheetTransitioningDelegate.swift */; }; - 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A860EAF32F2B3C4C7F95F3E1B2D01C3 /* IQUICollectionView+Additions.swift */; }; - 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30EAF9D343ACF607F9D9719F907EC3EA /* IQToolbarPlaceholderConfiguration.swift */; }; - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FB35C3ECFA7953FFD378F42A4E4FB69 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3806469B2739BBFA16083760004ED9B4 /* ImageGalleryViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 601C0200A96E4B609579FBD7C1B9CDB8 /* ImageGalleryViewDataSource.swift */; }; - 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94FB65BF2E12942E08FD28D02B196063 /* IQTextView.swift */; }; - 38FD95DCC2D02D5B78BE9AEE48DBDF25 /* ConstraintsSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C819EBB7C5175DF511CF00A578B7B24 /* ConstraintsSetup.swift */; }; + 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850DF479EFFD8725D082462C3E5C53C0 /* IQKeyboardInfo.swift */; }; + 267C4C6C182CC853990C78F13C5318CE /* TopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48F3385D99D520F36A9C28AE3AFA44A9 /* TopView.swift */; }; + 29C03EAF5C27DC851118AEC88ABEC151 /* FSPagerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C49B18419A5350E2FF0519E3E2F6AE1 /* FSPagerView.swift */; }; + 2E4A914423BA1B263C96C3BBC43E2245 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */; }; + 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6C861DA278A5D245DA21D0329434D78 /* NBBottomSheetTransitioningDelegate.swift */; }; + 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07BB2FCA4E9BAB2B85EDB57C2DEDEE86 /* IQUICollectionView+Additions.swift */; }; + 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82675B0AA9E14C3B813886B00BAE7B56 /* IQToolbarPlaceholderConfiguration.swift */; }; + 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 10D23B759B9D7AAD7FF8636994E570FF /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3806469B2739BBFA16083760004ED9B4 /* ImageGalleryViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4854795675642F9D2170DC3945BA5CCE /* ImageGalleryViewDataSource.swift */; }; + 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C50EF13DE5ADE34DBF289032C4FD68F5 /* IQTextView.swift */; }; + 38FD95DCC2D02D5B78BE9AEE48DBDF25 /* ConstraintsSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663CA458AFC6B3F550F1ED7A98EB1718 /* ConstraintsSetup.swift */; }; + 3AAA88A0DA1A4C83DE80CF06DAE842BE /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 7182925D2F6410484CED5BA08649E799 /* PrivacyInfo.xcprivacy */; }; 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A65B7383E73A602FC92334219CC2F4 /* UIView+Direction.swift */; }; - 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 977093DD69FC042131EE7AFA9CB64D54 /* IQKeyboardManager+UIKeyboardNotification.swift */; }; - 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AEABCA2EFA835BAB7FCD6AD66F96C96 /* IQKeyboardReturnKeyHandler.swift */; }; - 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E717421FDE87ECE8BD075C4C0DCD677 /* UIView+Swizzling.swift */; }; - 49F467E673A926683C4B3B56FB0B3805 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; + 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C9C60CA3B8DB21A9CA54DE050F8F651 /* UIView+Direction.swift */; }; + 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261499A1227131B89CE68BBA9C645617 /* IQKeyboardManager+UIKeyboardNotification.swift */; }; + 40987E046BAD603A58CA00B9A7648588 /* FSPageViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6381DE79278633AE97412B34DEA61A9 /* FSPageViewLayout.swift */; }; + 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2436A50C4518FAFDBB1C7958F150B /* IQKeyboardReturnKeyHandler.swift */; }; + 488A767CF7494D169BFB886EDC470F5D /* FSPageViewTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF0AFCBFFE0F0AC4056B467DFD3AAAE /* FSPageViewTransformer.swift */; }; + 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA4D9FC5676F5CB290D0B030862CDC /* UIView+Swizzling.swift */; }; 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */ = {isa = PBXBuildFile; fileRef = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; }; - 50374D59C8ED3AE3E41C30F25859F981 /* ImagePickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0695BAE8FAA193DA575E4D83469826A /* ImagePickerController.swift */; }; - 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D26C00E0D91C11489799747334F6B83 /* IQNSArray+Sort.swift */; }; - 578627027C10D3A455E9F1DC2BAE38DB /* OFF@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2043A7C5F8AE63209E4935ABE46E4DE2 /* OFF@3x.png */; }; - 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 862A62B35CB4A7FCCD78CDC63C79FE00 /* IQKeyboardManagerCompatible.swift */; }; - 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3444CFC5D1A192201D71D9AD68E2C80 /* IQPlaceholderable.swift */; }; - 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C60BE9866DE0F494BE98A0D610983E5 /* IQTextFieldViewInfoModel.swift */; }; - 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 289D379893DAFB4C3F91B8DC45FEE96B /* LanguageManager-iOS-dummy.m */; }; - 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E7504E9B38B126A1FE4CDCD1F6B5CDF /* IQKeyboardManager+Debug.swift */; }; - 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDD2F875F3224637E8647D321D57CDC /* DefaultsKeys.swift */; }; - 6F201AA2CEBCF262922C81580D5F6869 /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; - 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CFD7880A243F4083C1631C6F44B0C0 /* String+Localiz.swift */; }; - 6FAA62F8C663AAEDAB170956E9A298CC /* ImageGalleryLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 716CB388FC696AF7CCFC6B84221B8B7E /* ImageGalleryLayout.swift */; }; - 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B1DFF1A793B246DA3C40DDAECABE99 /* IQToolbar.swift */; }; - 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9A7E67F21C913E63FC39339C1A34EDF /* IQKeyboardManagerSwift-dummy.m */; }; - 743ED1DCEC16DC2E7FAD8FBDD276EC8F /* ImagePicker-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D96B518E8F4EF4B01A14DB607E5728A5 /* ImagePicker-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50374D59C8ED3AE3E41C30F25859F981 /* ImagePickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D8BFE264593E61F913A8B5B7BFBE0F /* ImagePickerController.swift */; }; + 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1385EA4B73C794E0C6B84F4886A2CC5 /* IQNSArray+Sort.swift */; }; + 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D8A157D7952E7CD278A89DB1EE312E /* IQKeyboardManagerCompatible.swift */; }; + 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D158F541F3CBD663BCD2F2A65D3E0C3 /* IQPlaceholderable.swift */; }; + 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11EF2D1F813F931138D6E82511E04949 /* IQTextFieldViewInfoModel.swift */; }; + 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 53544CF5676171AA127FD31C20A35BF1 /* LanguageManager-iOS-dummy.m */; }; + 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 449244F55B8088C827AD4787D03C7A37 /* IQKeyboardManager+Debug.swift */; }; + 69C7244F5E0D41CF59E5ADC8952F8D0D /* FSPagerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FB0228AF9177F654C13A7EC58B65414 /* FSPagerViewCell.swift */; }; + 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45848AD4380C3F81E612637A06D74516 /* DefaultsKeys.swift */; }; + 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582327A9A4DA4D82BEFB195FD92F4B2E /* String+Localiz.swift */; }; + 6FAA62F8C663AAEDAB170956E9A298CC /* ImageGalleryLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11D6BF4A7EE6C01C6AD9233D0986DA5 /* ImageGalleryLayout.swift */; }; + 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78AE0362F9BE43843B5E482BC8607E4B /* IQToolbar.swift */; }; + 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E86527F73AEB9E16F8FA507E95F54A /* IQKeyboardManagerSwift-dummy.m */; }; + 7399F0854271981516AA79727A0A06C8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; + 743ED1DCEC16DC2E7FAD8FBDD276EC8F /* ImagePicker-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A0D2A794776C30796425F42DDE5F36A /* ImagePicker-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */; }; - 784DF7F278DC988FEEECB999A9ADFCBB /* BottomContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0658924A19160F383D82E03A19918A8 /* BottomContainerView.swift */; }; - 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A1EA42CD913213E491331A02F772F77B /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 784DF7F278DC988FEEECB999A9ADFCBB /* BottomContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BF4FDDCDF3959514F7E4844C446B4E6 /* BottomContainerView.swift */; }; + 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = C36669888D89E20D89BDF4F1246671ED /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */; }; - 7DB7E0E519A315B78D72BF7C63C64E30 /* ButtonPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 263E5DFD01305ED7A2E14D5AA268113B /* ButtonPicker.swift */; }; - 7E21F9F8960AE60029BB764D2B371277 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F7FEF197B2124809DF009FE2F894546E /* PrivacyInfo.xcprivacy */; }; - 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5B75448D0B982844A56F3E38FFC5C4 /* IQUITextFieldView+Additions.swift */; }; - 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0242BCD9DCECF2E1893F122E132B9420 /* NBConfiguration.swift */; }; - 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AD9E89B936B222489C91787D4FE88A7 /* IQKeyboardManager+UITextFieldViewNotification.swift */; }; - 829A79A8C324697D5A619C029AEB0063 /* CameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4B4C52CBF38490F4AA48F16DF2F0CE8 /* CameraView.swift */; }; - 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D84B693516050AF9587ABB880A4C673 /* Languages.swift */; }; - 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88370D7F3B222EDE41FA71466C63DA1D /* NBBottomSheetDismissalTransition.swift */; }; - 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E56204315A31A820258FD80789F1967 /* IQBarButtonItem.swift */; }; - 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A95315CDACAED5D1C09122017965AF4 /* IQKeyboardListener.swift */; }; - 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9013F524E32E062B14DA4772DE8A003F /* IQBarButtonItemConfiguration.swift */; }; - 920DAFAA05D6AEE35D1C4B1E5B72E53A /* AUTO@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 215A93E8B8D35FC8C0FE9136FCAED2CD /* AUTO@3x.png */; }; - 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43717B490B462ACA5B2524D38A8D85A1 /* IQUIScrollView+Additions.swift */; }; + 7DB7E0E519A315B78D72BF7C63C64E30 /* ButtonPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B88917F2F7C1A72A04FA85624C3DEFF /* ButtonPicker.swift */; }; + 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D6BEBA675F56179275B2E4335F5C926 /* IQUITextFieldView+Additions.swift */; }; + 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6960427DCEE975DA8C892E3FD37397 /* NBConfiguration.swift */; }; + 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC9B8BC1831AE71D4A3E3399C6D7CEB /* IQKeyboardManager+UITextFieldViewNotification.swift */; }; + 829A79A8C324697D5A619C029AEB0063 /* CameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391991FCCD7C3163955756BE5F24E0B6 /* CameraView.swift */; }; + 84CD0E0DCAD6593350AA864342338120 /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; + 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AF876CE5C67756C63AB2D1B6C244D51 /* Languages.swift */; }; + 8A2B2068FC39EB1AEB76D3DCC8BC6EC4 /* selectedImageGallery@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D1B09D1AFAB4C057139EF408248FB039 /* selectedImageGallery@3x.png */; }; + 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEBACB3D1E9B957E79A8E8DB40C8FF19 /* NBBottomSheetDismissalTransition.swift */; }; + 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB6C6E6068769143E709E93481E6F1A /* IQBarButtonItem.swift */; }; + 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 610191544EEAD197032191BA9FC6A4BA /* IQKeyboardListener.swift */; }; + 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9FB297F85430CCD6E4BF32C102F32CC /* IQBarButtonItemConfiguration.swift */; }; + 91611428D06F5E61CECF70A53E6DA6C6 /* FSPagerViewObjcCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = A9B7321D9EFF744C9C4029D6879D984C /* FSPagerViewObjcCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C6FBE022DD17007165E204314587DF2 /* IQUIScrollView+Additions.swift */; }; + 970338AEDE475A68CFFB0D162B7C4A51 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3DF46AD6E25D68DB361974528992221 /* CoreGraphics.framework */; }; - 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E90398CF3BD4545F2E6C9AC46BB2F7 /* IQKeyboardConfiguration.swift */; }; - 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 534680B4399C935BB122047C4F15F69F /* LanguageManager-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F9F81C96DDC9B56C34A0E6D7C645E22 /* IQKeyboardManager+ToolbarActions.swift */; }; - A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB51AFFCD4B39F79707FB09B42ED4464 /* IQUITableView+Additions.swift */; }; - AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711571167DFF1C3D3C0E94EFCCC0CF67 /* IQKeyboardManagerConstants.swift */; }; - AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645D05593EA9E5A0AA34FFF2E53FF66B /* UIButton+Direction.swift */; }; - B0E87F4E370B3A0CD14B50D219AE7B0B /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99DE0EC73DF2C605E373AA84080710B6 /* StackView.swift */; }; + 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1E4CC36A055577A0E55615D5E942AAE /* IQKeyboardConfiguration.swift */; }; + 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FACF36010BFCB447C18555FE06FB3998 /* LanguageManager-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C78127B028ED64AEA102D7A53AF6C180 /* IQKeyboardManager+ToolbarActions.swift */; }; + A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2117351B73CD63629B006A8EDA630B87 /* IQUITableView+Additions.swift */; }; + AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BB9EE1F19AB969730E96727C45644A3 /* IQKeyboardManagerConstants.swift */; }; + AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6349A9899C7B2CD06A8CD9D85A55096 /* UIButton+Direction.swift */; }; + B0E87F4E370B3A0CD14B50D219AE7B0B /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA3096AB78C69396BEB49F0A58B41C /* StackView.swift */; }; B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE6749FC108D414ECB83B77EF11BD86 /* QuartzCore.framework */; }; - B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6186F4433DF874D9D682B69E4B9692BF /* IQActiveConfiguration.swift */; }; - B5917BEC7AED79CE3393A40E8CB00C92 /* focusIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 06DB7F25D68C95F46140AAF75BE7B2D9 /* focusIcon@3x.png */; }; - B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 326C56A2910292830ACB66D6AC2F0043 /* IQTitleBarButtonItem.swift */; }; + B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5477B53916433C6C9207EAFDD8DD96 /* IQActiveConfiguration.swift */; }; + B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2729357D2F7C6A9A64C2602DAD22CE6E /* IQTitleBarButtonItem.swift */; }; BD0139B5F1C96514CB66C4310AAF1DF5 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56B28C4E9F718651E6E1B010F31566EB /* AVFoundation.framework */; }; - CA8CFC49D2338D41DA4E83F941867CEB /* ImagePicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AFA6A88904B0288563135DBDF949AA6A /* ImagePicker-dummy.m */; }; + C43469D6FD925CAAD4F5E0E4A76E44FA /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C85C11573FFE927A84AD0C8BE456AD81 /* FSPagerViewLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B44DB1CA9AEFD39AB320FC434F4D5CF /* FSPagerViewLayoutAttributes.swift */; }; + CA8CFC49D2338D41DA4E83F941867CEB /* ImagePicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0686A6CDA651BBF2C5B47698FD1897B4 /* ImagePicker-dummy.m */; }; CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4005F31A049034527E5C53DB638ABA67 /* IQUIViewController+Additions.swift */; }; - D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B8AC4C58FBC098E1C3013D497F49700 /* Storage.swift */; }; - D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF24A475CC7A858E5C29677907CD02EC /* IQKeyboardManager+Deprecated.swift */; }; - D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4449DCA01F0FAA18DA31E34CA6E8A3DE /* NBBottomSheet-dummy.m */; }; + CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C9E7FCA694AF091E1380AFFC063B0CB /* IQUIViewController+Additions.swift */; }; + CE2C6FD104092EA3F2F0A357C72460A8 /* FSPagerView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 125C173AFCC25297EFA8933F73F0E07B /* FSPagerView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFFB3F1E1F4674AE420BC66278B8F182 /* OFF@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E75A0FB9E184426E1D8B314F77FD6BC /* OFF@3x.png */; }; + D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55D485F79966A1E73CD7E8FE775AF3AA /* Storage.swift */; }; + D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47213A20CC51FA450CDBAA7B9D82B79B /* IQKeyboardManager+Deprecated.swift */; }; + D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 50B8C2618C444EA6C533E0A028A40401 /* NBBottomSheet-dummy.m */; }; D4BB4D928CB44E6CE753BEA14E5AC918 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - D5F3E92E5A3412923CBA8DF657DB200E /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18F31FEEA7BC66636304805A3A9A4B08 /* IQUIView+IQKeyboardToolbar.swift */; }; - D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A78F8690931C4D43717D7BEB933643B /* IQKeyboardManager+Toolbar.swift */; }; - DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69B4ECFE4C236C4C7934D848AB816BEA /* IQRootControllerConfiguration.swift */; }; - E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A432BBFA3EC41432193F1BA4E8F5C7 /* UIImage+NextPrevious.swift */; }; - E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFAC6C52C912E471A716442152D7D99 /* IQToolbarConfiguration.swift */; }; - EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BACCBB72B2A572D9848F795451F28A7 /* IQKeyboardManager+Position.swift */; }; - ECFE64B0759EFA4F555994B6CDCED624 /* AssetManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FA3ABE6BD27E15D8013335461EEF9E /* AssetManager.swift */; }; - F1A6C2294A671BACFC919A4FC9576753 /* ON@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DF66E41F4A7A5BBD53D26B96702267F0 /* ON@3x.png */; }; - F2AF558F96F3C43C3E4C747E45E5637C /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3022F128AE1CFF88F2BC7FB7C6841048 /* LocationManager.swift */; }; - F2ED9C9337B84D1E42E67BF7F7DAD72C /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A70A5A384D7DA1AFF9BF25C746F455 /* Configuration.swift */; }; - F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71EDA53936756B122C07B02B38A07C32 /* NBBottomSheetConfiguration.swift */; }; - F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A168E01B41B0E8F15B95D9D58BDC2325 /* IQScrollViewConfiguration.swift */; }; - F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F4E12C26B5DAC43495F2BB6B79590D2 /* ViewDirection.swift */; }; - F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5503FBF58DE89968F04737B3C5E300D /* NBBottomSheetController.swift */; }; - F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21EE02C73BE1E329B7305249DAB09CC9 /* IQKeyboardManager.swift */; }; - FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B4836109A68D1FEAD11C1BBCDA727B1 /* NBBottomSheetPresentationTransition.swift */; }; - FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93202E4E9F1E05A6E4CE614860F52997 /* IQInvocation.swift */; }; - FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DD819B41E4207BCA0A1762DEC5DE7A12 /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FF8C6AC907C8F4B527F9A0CBDBCC7F92 /* ImageGalleryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 785C8370814C365365AABA3CB24224DE /* ImageGalleryView.swift */; }; + D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3B4AA730049734AC812A25BADAA3FF /* IQUIView+IQKeyboardToolbar.swift */; }; + D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4224E13F5E64B7C7ED26972CECCEF8 /* IQKeyboardManager+Toolbar.swift */; }; + DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE15B5E77B366A3841F60137841BD360 /* IQRootControllerConfiguration.swift */; }; + DFC166D6D9127F68B106B426C1987BEE /* cameraIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 643AAC5051F9ED3819D5583FEA4DA5B6 /* cameraIcon@3x.png */; }; + E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */ = {isa = PBXBuildFile; fileRef = 100DB09534605AB7B903CC6178562E6C /* UIImage+NextPrevious.swift */; }; + E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D54E2D6583C15003E804604338BA9F6 /* IQToolbarConfiguration.swift */; }; + EA89DFEFE15FAD82868C74E94F6F1B75 /* FSPagerViewObjcCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 76488B34BAAD9317550CB27A39510A82 /* FSPagerViewObjcCompat.m */; }; + EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A2058EC0A4223F67C47A162832B234 /* IQKeyboardManager+Position.swift */; }; + ECA11CD4E20DFCA3327CB006B10A3DB8 /* FSPagerCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D41FAF09B7FF66C2B3ED69436FAD56A /* FSPagerCollectionView.swift */; }; + ECFE64B0759EFA4F555994B6CDCED624 /* AssetManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F660610295E85CB8BC6BB3BFE0FB06E8 /* AssetManager.swift */; }; + F2562CFCEC42E2989BADC7E823F2C9C3 /* FSPageControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73151BB74FF19C87B98805C922968D9B /* FSPageControl.swift */; }; + F2AF558F96F3C43C3E4C747E45E5637C /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE7DC77106671C740F9DBB7CD35316B1 /* LocationManager.swift */; }; + F2ED9C9337B84D1E42E67BF7F7DAD72C /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A82E5C2AB35A91C11A2164845AF66C0B /* Configuration.swift */; }; + F38157F1C724E5D0542A774916F5FE5E /* focusIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 94897EC17A759429C47FB12A7A11680B /* focusIcon@3x.png */; }; + F430D726D95E472A0F080B87D2FFB84C /* ON@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A2BCCDE18C4FD7594F74F094794225A9 /* ON@3x.png */; }; + F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8C5A6FCC53D04A60F40DA8C98D2257 /* NBBottomSheetConfiguration.swift */; }; + F6702D89104E55C112FE16943BE7D41A /* FSPagerView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BA3E2B1D13CBA35E2E620BCF1932656D /* FSPagerView-dummy.m */; }; + F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606CE67CFC56302B4A052F22DC3C5F13 /* IQScrollViewConfiguration.swift */; }; + F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC781C550C08C706A954A36B003A831 /* ViewDirection.swift */; }; + F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DAED38A5CEBD25FBE676E7B349FCD3C /* NBBottomSheetController.swift */; }; + F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1952ADCDAFFBC0348561AA70A54E8A4B /* IQKeyboardManager.swift */; }; + FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8739C327EB1C414723BDEC1E9820968A /* NBBottomSheetPresentationTransition.swift */; }; + FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD6976DA8F5F0B93DF1A78AA06B575E /* IQInvocation.swift */; }; + FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E6B1EF389C6993B71B0FA018E28B620C /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FF8C6AC907C8F4B527F9A0CBDBCC7F92 /* ImageGalleryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BBFD0B142EAB580225A2260825A319 /* ImageGalleryView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 116BF15D4BA9D5DF3FBE736AB2A1B5C7 /* PBXContainerItemProxy */ = { + 12E3A5CD5E6DE1ECCB4DF5ECCE07C96A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 614D1818852890AC7D3CDF68D512C370; - remoteInfo = "ImagePicker-ImagePicker"; + remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; + remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; }; - 25379AE4BB757484F80ECB623924015E /* PBXContainerItemProxy */ = { + 2CEC145C5550F170FF334AB1D080D715 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 727C2007A89D1AD73613E3E2E22998E5; - remoteInfo = NBBottomSheet; + remoteGlobalIDString = D4F8239FB329387A8476B964D92D92E7; + remoteInfo = FSPagerView; }; - 6617C4BD9FA13DEFFC4365339E6EC546 /* PBXContainerItemProxy */ = { + 5436BBF127AFBF237F0BF4013AB47A1F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 75F1EA88CB9544AB5CBE20DEC9A011AE; remoteInfo = "LanguageManager-iOS"; }; - 79FF0B0D8F347987ED026E1A2F50BCD3 /* PBXContainerItemProxy */ = { + 87015586216C7D11B5258C93B5401791 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 01CB8D6098C21E12CE735619344DE81E; - remoteInfo = ImagePicker; + remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; + remoteInfo = IQKeyboardManagerSwift; }; - D9BAF53C009DA5292853103F98DDC510 /* PBXContainerItemProxy */ = { + 99B44F1AF6FC0DCBE7658D053454307A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; - remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; + remoteGlobalIDString = 614D1818852890AC7D3CDF68D512C370; + remoteInfo = "ImagePicker-ImagePicker"; }; - FC92B3EDB540B30648F41E65A8C077D3 /* PBXContainerItemProxy */ = { + A256C976BD8FEC8914D21C55BFA8759A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; - remoteInfo = IQKeyboardManagerSwift; + remoteGlobalIDString = 01CB8D6098C21E12CE735619344DE81E; + remoteInfo = ImagePicker; + }; + D8E9EFB62C84F2451393D3033CCD69EB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 727C2007A89D1AD73613E3E2E22998E5; + remoteInfo = NBBottomSheet; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0242BCD9DCECF2E1893F122E132B9420 /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; - 02F53E93D2F24BD6EF53601F1DBA5615 /* LanguageManager-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.release.xcconfig"; sourceTree = "<group>"; }; - 056020DCD7EE4DB784B0EB1B1F7CB59C /* IQTextFieldViewListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift; sourceTree = "<group>"; }; - 06DB7F25D68C95F46140AAF75BE7B2D9 /* focusIcon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "focusIcon@3x.png"; path = "Images/focusIcon@3x.png"; sourceTree = "<group>"; }; - 07D747573A57982F6B7EF9A1B8CCCC60 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; - 0A4841D8820C46BF7A845722F4418489 /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; - 0A95315CDACAED5D1C09122017965AF4 /* IQKeyboardListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift; sourceTree = "<group>"; }; - 0AD9E89B936B222489C91787D4FE88A7 /* IQKeyboardManager+UITextFieldViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UITextFieldViewNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift"; sourceTree = "<group>"; }; + 00E86527F73AEB9E16F8FA507E95F54A /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = "<group>"; }; + 04AAE1A7C530A72A63D68F4AB6FE8BFB /* LanguageManager-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "LanguageManager-iOS.modulemap"; sourceTree = "<group>"; }; + 05FB11A6738CC7DF06C0C1D2A628C533 /* ImagePicker.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ImagePicker.modulemap; sourceTree = "<group>"; }; + 0686A6CDA651BBF2C5B47698FD1897B4 /* ImagePicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ImagePicker-dummy.m"; sourceTree = "<group>"; }; + 07BB2FCA4E9BAB2B85EDB57C2DEDEE86 /* IQUICollectionView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUICollectionView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift"; sourceTree = "<group>"; }; + 0A4224E13F5E64B7C7ED26972CECCEF8 /* IQKeyboardManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Toolbar.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift"; sourceTree = "<group>"; }; 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MiniScanner-umbrella.h"; sourceTree = "<group>"; }; - 107D647DF3C7BECC04AD906F3B3330E7 /* ImagePicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-prefix.pch"; sourceTree = "<group>"; }; - 10B1DFF1A793B246DA3C40DDAECABE99 /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = "<group>"; }; + 0F47FB5E28EE8C8342B1776D813D1A4C /* FSPagerView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FSPagerView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 100DB09534605AB7B903CC6178562E6C /* UIImage+NextPrevious.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+NextPrevious.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift"; sourceTree = "<group>"; }; + 10D23B759B9D7AAD7FF8636994E570FF /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = "<group>"; }; + 11EF2D1F813F931138D6E82511E04949 /* IQTextFieldViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfoModel.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift; sourceTree = "<group>"; }; 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MiniScanner-dummy.m"; sourceTree = "<group>"; }; - 15C8486B0FEF983C5B8781637A943491 /* video@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "video@3x.png"; path = "Images/video@3x.png"; sourceTree = "<group>"; }; - 18F31FEEA7BC66636304805A3A9A4B08 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = "<group>"; }; - 1B4836109A68D1FEAD11C1BBCDA727B1 /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; + 125C173AFCC25297EFA8933F73F0E07B /* FSPagerView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FSPagerView-umbrella.h"; sourceTree = "<group>"; }; + 159A2D6A6013D2B5450DB2751437E610 /* FSPagerView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FSPagerView.release.xcconfig; sourceTree = "<group>"; }; + 186046B555C68EDF4D8B264B7310A49F /* UIImageView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImageView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift"; sourceTree = "<group>"; }; + 1952ADCDAFFBC0348561AA70A54E8A4B /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = "<group>"; }; + 19A2058EC0A4223F67C47A162832B234 /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = "<group>"; }; + 1C5ED23D8DA6C61EF94C1ADA43ADBED7 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = "<group>"; }; 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 1E7504E9B38B126A1FE4CDCD1F6B5CDF /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift"; sourceTree = "<group>"; }; - 20382F7CEA0A2FF24E600822E96AA7EC /* IQTextFieldViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift; sourceTree = "<group>"; }; - 2043A7C5F8AE63209E4935ABE46E4DE2 /* OFF@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "OFF@3x.png"; path = "Images/OFF@3x.png"; sourceTree = "<group>"; }; - 215A93E8B8D35FC8C0FE9136FCAED2CD /* AUTO@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "AUTO@3x.png"; path = "Images/AUTO@3x.png"; sourceTree = "<group>"; }; + 1C6FBE022DD17007165E204314587DF2 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift"; sourceTree = "<group>"; }; + 1F5477B53916433C6C9207EAFDD8DD96 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift; sourceTree = "<group>"; }; + 2117351B73CD63629B006A8EDA630B87 /* IQUITableView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITableView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift"; sourceTree = "<group>"; }; 21A62BB316C6336F03408E50D730FD01 /* Pods-MiniScanner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-MiniScanner.modulemap"; sourceTree = "<group>"; }; - 21EE02C73BE1E329B7305249DAB09CC9 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = "<group>"; }; - 263E5DFD01305ED7A2E14D5AA268113B /* ButtonPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ButtonPicker.swift; path = Source/BottomView/ButtonPicker.swift; sourceTree = "<group>"; }; - 289D379893DAFB4C3F91B8DC45FEE96B /* LanguageManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LanguageManager-iOS-dummy.m"; sourceTree = "<group>"; }; - 291BB5586E07ADC8AFF3AB7CA09E3C84 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift"; sourceTree = "<group>"; }; - 29F03ED2CD860C1429379A22D209D161 /* selectedImageGallery@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "selectedImageGallery@3x.png"; path = "Images/selectedImageGallery@3x.png"; sourceTree = "<group>"; }; - 2A860EAF32F2B3C4C7F95F3E1B2D01C3 /* IQUICollectionView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUICollectionView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift"; sourceTree = "<group>"; }; - 2C0FEF81EEE0C683645B5B9664402DD6 /* LanguageManager-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LanguageManager-iOS-Info.plist"; sourceTree = "<group>"; }; - 2DFAC6C52C912E471A716442152D7D99 /* IQToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift; sourceTree = "<group>"; }; + 261499A1227131B89CE68BBA9C645617 /* IQKeyboardManager+UIKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UIKeyboardNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift"; sourceTree = "<group>"; }; + 2729357D2F7C6A9A64C2602DAD22CE6E /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = "<group>"; }; + 2AF876CE5C67756C63AB2D1B6C244D51 /* Languages.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Languages.swift; path = "LanguageManager-iOS/Classes/Constants/Languages.swift"; sourceTree = "<group>"; }; + 2C974A91C05893EDB6D9C54E85336A9B /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = "<group>"; }; 2EE6749FC108D414ECB83B77EF11BD86 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 3022F128AE1CFF88F2BC7FB7C6841048 /* LocationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LocationManager.swift; path = Source/LocationManager.swift; sourceTree = "<group>"; }; - 30EAF9D343ACF607F9D9719F907EC3EA /* IQToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarPlaceholderConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift; sourceTree = "<group>"; }; - 326C56A2910292830ACB66D6AC2F0043 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = "<group>"; }; + 2FA2436A50C4518FAFDBB1C7958F150B /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift; sourceTree = "<group>"; }; + 31BBFD0B142EAB580225A2260825A319 /* ImageGalleryView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryView.swift; path = Source/ImageGallery/ImageGalleryView.swift; sourceTree = "<group>"; }; 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-MiniScanner"; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 38B26CBA4B26D2190D5F2AF049902DB9 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = "<group>"; }; + 3550E18ADF3EF705F4700FC56EA51321 /* IQTextFieldViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift; sourceTree = "<group>"; }; + 38D8BFE264593E61F913A8B5B7BFBE0F /* ImagePickerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePickerController.swift; path = Source/ImagePickerController.swift; sourceTree = "<group>"; }; + 391991FCCD7C3163955756BE5F24E0B6 /* CameraView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CameraView.swift; path = Source/CameraView/CameraView.swift; sourceTree = "<group>"; }; 3B6258C4E2C1059AABC67D66F9314FE8 /* Pods-MiniScanner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MiniScanner-acknowledgements.markdown"; sourceTree = "<group>"; }; - 3BACCBB72B2A572D9848F795451F28A7 /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = "<group>"; }; - 3FB35C3ECFA7953FFD378F42A4E4FB69 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = "<group>"; }; - 4005F31A049034527E5C53DB638ABA67 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift"; sourceTree = "<group>"; }; - 43717B490B462ACA5B2524D38A8D85A1 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift"; sourceTree = "<group>"; }; - 4449DCA01F0FAA18DA31E34CA6E8A3DE /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; - 44A535B048E99AD006404076AEFBB03C /* CameraMan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CameraMan.swift; path = Source/CameraView/CameraMan.swift; sourceTree = "<group>"; }; - 46ED7D7EDA19CDAE346E3AE6A5C8BB84 /* TopView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopView.swift; path = Source/TopView/TopView.swift; sourceTree = "<group>"; }; - 4C819EBB7C5175DF511CF00A578B7B24 /* ConstraintsSetup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintsSetup.swift; path = Source/Extensions/ConstraintsSetup.swift; sourceTree = "<group>"; }; - 4CDD2F875F3224637E8647D321D57CDC /* DefaultsKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultsKeys.swift; path = "LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift"; sourceTree = "<group>"; }; - 4DF1F4C3122C9F4F8DBDA8ADC11DC015 /* LanguageManager-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "LanguageManager-iOS.modulemap"; sourceTree = "<group>"; }; - 4E56204315A31A820258FD80789F1967 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = "<group>"; }; - 534680B4399C935BB122047C4F15F69F /* LanguageManager-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-umbrella.h"; sourceTree = "<group>"; }; - 55E90398CF3BD4545F2E6C9AC46BB2F7 /* IQKeyboardConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift; sourceTree = "<group>"; }; + 3BF4FDDCDF3959514F7E4844C446B4E6 /* BottomContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BottomContainerView.swift; path = Source/BottomView/BottomContainerView.swift; sourceTree = "<group>"; }; + 3E75A0FB9E184426E1D8B314F77FD6BC /* OFF@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "OFF@3x.png"; path = "Images/OFF@3x.png"; sourceTree = "<group>"; }; + 3F50249C139F076BB49CF9DC780080CB /* VideoInfoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VideoInfoView.swift; path = Source/ImageGallery/VideoInfoView.swift; sourceTree = "<group>"; }; + 41AA3096AB78C69396BEB49F0A58B41C /* StackView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StackView.swift; path = Source/BottomView/StackView.swift; sourceTree = "<group>"; }; + 449244F55B8088C827AD4787D03C7A37 /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift"; sourceTree = "<group>"; }; + 44C5AD611F2819B6A087C4E533D669C2 /* IQTextFieldViewListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift; sourceTree = "<group>"; }; + 45848AD4380C3F81E612637A06D74516 /* DefaultsKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultsKeys.swift; path = "LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift"; sourceTree = "<group>"; }; + 47213A20CC51FA450CDBAA7B9D82B79B /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift"; sourceTree = "<group>"; }; + 477B22B950B9A74F737148237E4CC057 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; + 4854795675642F9D2170DC3945BA5CCE /* ImageGalleryViewDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryViewDataSource.swift; path = Source/ImageGallery/ImageGalleryViewDataSource.swift; sourceTree = "<group>"; }; + 48F3385D99D520F36A9C28AE3AFA44A9 /* TopView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopView.swift; path = Source/TopView/TopView.swift; sourceTree = "<group>"; }; + 4BB6C6E6068769143E709E93481E6F1A /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = "<group>"; }; + 4C49B18419A5350E2FF0519E3E2F6AE1 /* FSPagerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPagerView.swift; path = Sources/FSPagerView.swift; sourceTree = "<group>"; }; + 50B8C2618C444EA6C533E0A028A40401 /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; + 52D8A157D7952E7CD278A89DB1EE312E /* IQKeyboardManagerCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerCompatible.swift; path = IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift; sourceTree = "<group>"; }; + 53544CF5676171AA127FD31C20A35BF1 /* LanguageManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LanguageManager-iOS-dummy.m"; sourceTree = "<group>"; }; + 55D485F79966A1E73CD7E8FE775AF3AA /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = "LanguageManager-iOS/Classes/Helpers/Storage.swift"; sourceTree = "<group>"; }; + 55E4D22BA0F35C3448A2A9A27C0342C6 /* ImagePicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-prefix.pch"; sourceTree = "<group>"; }; 56B28C4E9F718651E6E1B010F31566EB /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; - 56CC66AF6340E998DCCA050EEE9B556E /* ImagePicker.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImagePicker.debug.xcconfig; sourceTree = "<group>"; }; - 57A65B7383E73A602FC92334219CC2F4 /* UIView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift"; sourceTree = "<group>"; }; - 5C0AF0735D8A7EDEAB791C4AF317C58E /* ResourceBundle-ImagePicker-ImagePicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ImagePicker-ImagePicker-Info.plist"; sourceTree = "<group>"; }; - 5C5B75448D0B982844A56F3E38FFC5C4 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift"; sourceTree = "<group>"; }; - 5D26C00E0D91C11489799747334F6B83 /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift"; sourceTree = "<group>"; }; - 5D65452C5F1840661750AB48C6E061B7 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - 5E717421FDE87ECE8BD075C4C0DCD677 /* UIView+Swizzling.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Swizzling.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift"; sourceTree = "<group>"; }; - 5F4E12C26B5DAC43495F2BB6B79590D2 /* ViewDirection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewDirection.swift; path = "LanguageManager-iOS/Classes/Constants/ViewDirection.swift"; sourceTree = "<group>"; }; - 5F9F81C96DDC9B56C34A0E6D7C645E22 /* IQKeyboardManager+ToolbarActions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarActions.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift"; sourceTree = "<group>"; }; - 601C0200A96E4B609579FBD7C1B9CDB8 /* ImageGalleryViewDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryViewDataSource.swift; path = Source/ImageGallery/ImageGalleryViewDataSource.swift; sourceTree = "<group>"; }; - 6186F4433DF874D9D682B69E4B9692BF /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift; sourceTree = "<group>"; }; - 645D05593EA9E5A0AA34FFF2E53FF66B /* UIButton+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift"; sourceTree = "<group>"; }; + 576FA84316DCF9D03FB6455F5417CDD1 /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = "<group>"; }; + 582327A9A4DA4D82BEFB195FD92F4B2E /* String+Localiz.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Localiz.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift"; sourceTree = "<group>"; }; + 58468F905BF54F1BB6F1379778747E4A /* ImageGalleryViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryViewCell.swift; path = Source/ImageGallery/ImageGalleryViewCell.swift; sourceTree = "<group>"; }; + 5B88917F2F7C1A72A04FA85624C3DEFF /* ButtonPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ButtonPicker.swift; path = Source/BottomView/ButtonPicker.swift; sourceTree = "<group>"; }; + 5D6BEBA675F56179275B2E4335F5C926 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift"; sourceTree = "<group>"; }; + 5DAED38A5CEBD25FBE676E7B349FCD3C /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; + 5FB0228AF9177F654C13A7EC58B65414 /* FSPagerViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPagerViewCell.swift; path = Sources/FSPagerViewCell.swift; sourceTree = "<group>"; }; + 606CE67CFC56302B4A052F22DC3C5F13 /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift; sourceTree = "<group>"; }; + 610191544EEAD197032191BA9FC6A4BA /* IQKeyboardListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift; sourceTree = "<group>"; }; + 629D33431B1A6A7BD331EA4D4836896E /* video@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "video@3x.png"; path = "Images/video@3x.png"; sourceTree = "<group>"; }; + 643AAC5051F9ED3819D5583FEA4DA5B6 /* cameraIcon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "cameraIcon@3x.png"; path = "Images/cameraIcon@3x.png"; sourceTree = "<group>"; }; 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "LanguageManager-iOS"; path = LanguageManager_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6795D74469E29BB8CF88805CFB060AFF /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; sourceTree = "<group>"; }; - 6976A54EFB18220EBAC17EDBE7BD5C91 /* ImagePicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ImagePicker-Info.plist"; sourceTree = "<group>"; }; - 69B4ECFE4C236C4C7934D848AB816BEA /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift; sourceTree = "<group>"; }; - 6B12A19FA505C37ACEDAB545EDD4C324 /* IQUIView+IQKeyboardToolbarDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbarDeprecated.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift"; sourceTree = "<group>"; }; - 6E7ADC88875ACAB4A6A9A6D06FE0A595 /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = "<group>"; }; - 711571167DFF1C3D3C0E94EFCCC0CF67 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = "<group>"; }; - 716CB388FC696AF7CCFC6B84221B8B7E /* ImageGalleryLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryLayout.swift; path = Source/ImageGallery/ImageGalleryLayout.swift; sourceTree = "<group>"; }; - 71EDA53936756B122C07B02B38A07C32 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; - 73A70A5A384D7DA1AFF9BF25C746F455 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Source/Configuration.swift; sourceTree = "<group>"; }; - 785C8370814C365365AABA3CB24224DE /* ImageGalleryView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryView.swift; path = Source/ImageGallery/ImageGalleryView.swift; sourceTree = "<group>"; }; + 663CA458AFC6B3F550F1ED7A98EB1718 /* ConstraintsSetup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintsSetup.swift; path = Source/Extensions/ConstraintsSetup.swift; sourceTree = "<group>"; }; + 6929AC0AE377312BD04644294A15EC42 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift"; sourceTree = "<group>"; }; + 6A8CA0840E5D0BB8C6566FBD0C8CCDC7 /* ImagePicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ImagePicker-Info.plist"; sourceTree = "<group>"; }; + 6C9E7FCA694AF091E1380AFFC063B0CB /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift"; sourceTree = "<group>"; }; + 6CE6C81B3DBADD63B91C912BB54C2F3B /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; + 6D158F541F3CBD663BCD2F2A65D3E0C3 /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift; sourceTree = "<group>"; }; + 6D41FAF09B7FF66C2B3ED69436FAD56A /* FSPagerCollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPagerCollectionView.swift; path = Sources/FSPagerCollectionView.swift; sourceTree = "<group>"; }; + 6D54E2D6583C15003E804604338BA9F6 /* IQToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift; sourceTree = "<group>"; }; + 70730B6AC4F7CFA336195B8FD8BFA5A3 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; sourceTree = "<group>"; }; + 7182925D2F6410484CED5BA08649E799 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; + 73151BB74FF19C87B98805C922968D9B /* FSPageControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPageControl.swift; path = Sources/FSPageControl.swift; sourceTree = "<group>"; }; + 73CB09935F781BCB817A05DA1DAA1020 /* AUTO@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "AUTO@3x.png"; path = "Images/AUTO@3x.png"; sourceTree = "<group>"; }; + 76488B34BAAD9317550CB27A39510A82 /* FSPagerViewObjcCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSPagerViewObjcCompat.m; path = Sources/FSPagerViewObjcCompat.m; sourceTree = "<group>"; }; + 78AE0362F9BE43843B5E482BC8607E4B /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = "<group>"; }; 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; - 7A78F8690931C4D43717D7BEB933643B /* IQKeyboardManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Toolbar.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift"; sourceTree = "<group>"; }; + 7A0D2A794776C30796425F42DDE5F36A /* ImagePicker-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-umbrella.h"; sourceTree = "<group>"; }; + 7B364470B802D2E80AF8122B4F49BFA1 /* ImagePicker.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImagePicker.debug.xcconfig; sourceTree = "<group>"; }; + 7C8C5A6FCC53D04A60F40DA8C98D2257 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; + 7C9C60CA3B8DB21A9CA54DE050F8F651 /* UIView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift"; sourceTree = "<group>"; }; 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.debug.xcconfig"; sourceTree = "<group>"; }; - 7EFAA485C1714D0F9B8695DA8C81E5C2 /* LanguageManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-prefix.pch"; sourceTree = "<group>"; }; - 81FA3ABE6BD27E15D8013335461EEF9E /* AssetManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetManager.swift; path = Source/AssetManager.swift; sourceTree = "<group>"; }; - 862A62B35CB4A7FCCD78CDC63C79FE00 /* IQKeyboardManagerCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerCompatible.swift; path = IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift; sourceTree = "<group>"; }; - 86E4E0BDBE48394EB9813E4999877362 /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift; sourceTree = "<group>"; }; - 88370D7F3B222EDE41FA71466C63DA1D /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; + 82675B0AA9E14C3B813886B00BAE7B56 /* IQToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarPlaceholderConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift; sourceTree = "<group>"; }; + 850DF479EFFD8725D082462C3E5C53C0 /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift; sourceTree = "<group>"; }; + 8739C327EB1C414723BDEC1E9820968A /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; + 878768697FDBDA249601A7E23B958714 /* ImagePicker.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImagePicker.release.xcconfig; sourceTree = "<group>"; }; 89194C84FD5E62D9D2C9F2157676FF5C /* Pods-MiniScanner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-acknowledgements.plist"; sourceTree = "<group>"; }; - 8B8AC4C58FBC098E1C3013D497F49700 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = "LanguageManager-iOS/Classes/Helpers/Storage.swift"; sourceTree = "<group>"; }; - 8C60BE9866DE0F494BE98A0D610983E5 /* IQTextFieldViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfoModel.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift; sourceTree = "<group>"; }; - 8C8F9D764EEB7EEDEDF45F7C7CC55C33 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = "<group>"; }; + 89F5F3DB1CD795822ECF03A3BF322570 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; sourceTree = "<group>"; }; + 8B44DB1CA9AEFD39AB320FC434F4D5CF /* FSPagerViewLayoutAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPagerViewLayoutAttributes.swift; path = Sources/FSPagerViewLayoutAttributes.swift; sourceTree = "<group>"; }; 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; path = IQKeyboardManagerSwift.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D84B693516050AF9587ABB880A4C673 /* Languages.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Languages.swift; path = "LanguageManager-iOS/Classes/Constants/Languages.swift"; sourceTree = "<group>"; }; - 9013F524E32E062B14DA4772DE8A003F /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift; sourceTree = "<group>"; }; - 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NBBottomSheet; path = NBBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 93202E4E9F1E05A6E4CE614860F52997 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = "<group>"; }; - 94FB65BF2E12942E08FD28D02B196063 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = "<group>"; }; - 9748A2A58F64F03A23B2752179897C3D /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; - 977093DD69FC042131EE7AFA9CB64D54 /* IQKeyboardManager+UIKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UIKeyboardNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift"; sourceTree = "<group>"; }; + 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NBBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 94897EC17A759429C47FB12A7A11680B /* focusIcon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "focusIcon@3x.png"; path = "Images/focusIcon@3x.png"; sourceTree = "<group>"; }; + 96200B324321AFBD0B649D1B2C9C95DB /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "ImagePicker-ImagePicker"; path = ImagePicker.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 987CD19BC0CE18F2E00B0AD5ABF8670D /* ImagePicker */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ImagePicker; path = ImagePicker.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 99DE0EC73DF2C605E373AA84080710B6 /* StackView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StackView.swift; path = Source/BottomView/StackView.swift; sourceTree = "<group>"; }; - 9AEABCA2EFA835BAB7FCD6AD66F96C96 /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift; sourceTree = "<group>"; }; - 9C59271DF8D3B3D948789114BD2502D4 /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9EE9C6C08B1735F0F717130FCC08BDA9 /* Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helper.swift; path = Source/Helper.swift; sourceTree = "<group>"; }; - A168E01B41B0E8F15B95D9D58BDC2325 /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift; sourceTree = "<group>"; }; - A1EA42CD913213E491331A02F772F77B /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; - A4B4C52CBF38490F4AA48F16DF2F0CE8 /* CameraView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CameraView.swift; path = Source/CameraView/CameraView.swift; sourceTree = "<group>"; }; - A5A432BBFA3EC41432193F1BA4E8F5C7 /* UIImage+NextPrevious.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+NextPrevious.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift"; sourceTree = "<group>"; }; + 9B3B4AA730049734AC812A25BADAA3FF /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = "<group>"; }; + 9BB9EE1F19AB969730E96727C45644A3 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = "<group>"; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9EC9B8BC1831AE71D4A3E3399C6D7CEB /* IQKeyboardManager+UITextFieldViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UITextFieldViewNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift"; sourceTree = "<group>"; }; + A2BCCDE18C4FD7594F74F094794225A9 /* ON@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "ON@3x.png"; path = "Images/ON@3x.png"; sourceTree = "<group>"; }; + A432A5D595D6137843DFA26A74543559 /* FSPagerView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FSPagerView-Info.plist"; sourceTree = "<group>"; }; + A47C01AE0A7C8A69421589DB99E4EA93 /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; + A82E5C2AB35A91C11A2164845AF66C0B /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Source/Configuration.swift; sourceTree = "<group>"; }; A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A967C4C563E4504346C2013BED0CB222 /* ImageGalleryViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryViewCell.swift; path = Source/ImageGallery/ImageGalleryViewCell.swift; sourceTree = "<group>"; }; - AA73FF47AD2E401229886E164A016157 /* LanguageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LanguageManager.swift; path = "LanguageManager-iOS/Classes/Main/LanguageManager.swift"; sourceTree = "<group>"; }; - AAB5B6E98707F2ADF3A9845874D055F4 /* LanguageManager-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.debug.xcconfig"; sourceTree = "<group>"; }; - AFA6A88904B0288563135DBDF949AA6A /* ImagePicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ImagePicker-dummy.m"; sourceTree = "<group>"; }; - B0658924A19160F383D82E03A19918A8 /* BottomContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BottomContainerView.swift; path = Source/BottomView/BottomContainerView.swift; sourceTree = "<group>"; }; + A9B7321D9EFF744C9C4029D6879D984C /* FSPagerViewObjcCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSPagerViewObjcCompat.h; path = Sources/FSPagerViewObjcCompat.h; sourceTree = "<group>"; }; + AE279F36DEA7F9799201FBED80DE1579 /* Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helper.swift; path = Source/Helper.swift; sourceTree = "<group>"; }; B2968141E72EA49CC006DD4020E3386D /* Pods-MiniScanner-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MiniScanner-frameworks.sh"; sourceTree = "<group>"; }; - B507677B457247BB90B0E386AF24A63A /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; - BB51AFFCD4B39F79707FB09B42ED4464 /* IQUITableView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITableView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift"; sourceTree = "<group>"; }; - BD5BCA1FBF25DA15C2AE9337BD05C406 /* UIImageView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImageView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift"; sourceTree = "<group>"; }; - C4506BEE76EF98148A28CD87EE773134 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = "<group>"; }; - C4CE220A4C9571A7B0A597C16F19BBA9 /* ImagePicker.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImagePicker.release.xcconfig; sourceTree = "<group>"; }; - C50F60479109C53DD1F7C301694D48A1 /* VideoInfoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VideoInfoView.swift; path = Source/ImageGallery/VideoInfoView.swift; sourceTree = "<group>"; }; + B2B0C08E0F7C8BAEEF2D80915408CA4E /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; + B334A3A67AC8668DEA2DC48989817DE9 /* LanguageManager-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.release.xcconfig"; sourceTree = "<group>"; }; + B51A76981D5307579DAA52AF1DC3FDC7 /* FSPagerView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FSPagerView-prefix.pch"; sourceTree = "<group>"; }; + B5E7F6859EDFDF3E322CAB934188C105 /* LanguageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LanguageManager.swift; path = "LanguageManager-iOS/Classes/Main/LanguageManager.swift"; sourceTree = "<group>"; }; + B6381DE79278633AE97412B34DEA61A9 /* FSPageViewLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPageViewLayout.swift; path = Sources/FSPageViewLayout.swift; sourceTree = "<group>"; }; + B6C861DA278A5D245DA21D0329434D78 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; + B790A64229049FDE2E49A3464FA794A0 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = "<group>"; }; + B9DD740680FA210D5DAB6BE252AB4EF1 /* CameraMan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CameraMan.swift; path = Source/CameraView/CameraMan.swift; sourceTree = "<group>"; }; + BA3E2B1D13CBA35E2E620BCF1932656D /* FSPagerView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FSPagerView-dummy.m"; sourceTree = "<group>"; }; + BB27F7558FAEB9835885CF21253F9512 /* LanguageManager-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.debug.xcconfig"; sourceTree = "<group>"; }; + BB34736DAECFEF1A71A9D96199C98E97 /* LanguageManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-prefix.pch"; sourceTree = "<group>"; }; + BBC781C550C08C706A954A36B003A831 /* ViewDirection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewDirection.swift; path = "LanguageManager-iOS/Classes/Constants/ViewDirection.swift"; sourceTree = "<group>"; }; + BE062E09E144721D09D60E635B370160 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; + BE26B4E0FA2A7EB069ECA092637ADB2B /* IQUIView+IQKeyboardToolbarDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbarDeprecated.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift"; sourceTree = "<group>"; }; + BE7DC77106671C740F9DBB7CD35316B1 /* LocationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LocationManager.swift; path = Source/LocationManager.swift; sourceTree = "<group>"; }; + C36669888D89E20D89BDF4F1246671ED /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; + C50EF13DE5ADE34DBF289032C4FD68F5 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = "<group>"; }; C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - C8CFD7880A243F4083C1631C6F44B0C0 /* String+Localiz.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Localiz.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift"; sourceTree = "<group>"; }; - D0695BAE8FAA193DA575E4D83469826A /* ImagePickerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePickerController.swift; path = Source/ImagePickerController.swift; sourceTree = "<group>"; }; - D0CD85F8FE5988FBAA6E8BC1DC380C2C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; sourceTree = "<group>"; }; - D4BC9C4AEF4B7509AFF6B6DAA85157F1 /* ImageStack.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageStack.swift; path = Source/BottomView/ImageStack.swift; sourceTree = "<group>"; }; - D5503FBF58DE89968F04737B3C5E300D /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; - D96B518E8F4EF4B01A14DB607E5728A5 /* ImagePicker-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-umbrella.h"; sourceTree = "<group>"; }; - D9C5DA27C1FDF4419C1FEDDAF4A9A4BF /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - DD819B41E4207BCA0A1762DEC5DE7A12 /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; - DF66E41F4A7A5BBD53D26B96702267F0 /* ON@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "ON@3x.png"; path = "Images/ON@3x.png"; sourceTree = "<group>"; }; - E9A7E67F21C913E63FC39339C1A34EDF /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = "<group>"; }; + C6349A9899C7B2CD06A8CD9D85A55096 /* UIButton+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift"; sourceTree = "<group>"; }; + C78127B028ED64AEA102D7A53AF6C180 /* IQKeyboardManager+ToolbarActions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarActions.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift"; sourceTree = "<group>"; }; + CAD7C2211C4367AD4461C65ABCCE4B4D /* ImageStack.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageStack.swift; path = Source/BottomView/ImageStack.swift; sourceTree = "<group>"; }; + CBF0AFCBFFE0F0AC4056B467DFD3AAAE /* FSPageViewTransformer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FSPageViewTransformer.swift; path = Sources/FSPageViewTransformer.swift; sourceTree = "<group>"; }; + CD43D1DEAE8D6B89DA79F89F090AEB40 /* FSPagerView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FSPagerView.debug.xcconfig; sourceTree = "<group>"; }; + CD6960427DCEE975DA8C892E3FD37397 /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; + CDD6976DA8F5F0B93DF1A78AA06B575E /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = "<group>"; }; + CE15B5E77B366A3841F60137841BD360 /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift; sourceTree = "<group>"; }; + CFCA4D9FC5676F5CB290D0B030862CDC /* UIView+Swizzling.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Swizzling.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift"; sourceTree = "<group>"; }; + D192CB80EEF5B776A22DFD320E872AF0 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + D1B09D1AFAB4C057139EF408248FB039 /* selectedImageGallery@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "selectedImageGallery@3x.png"; path = "Images/selectedImageGallery@3x.png"; sourceTree = "<group>"; }; + D9FB297F85430CCD6E4BF32C102F32CC /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift; sourceTree = "<group>"; }; + DEBACB3D1E9B957E79A8E8DB40C8FF19 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; + E11D6BF4A7EE6C01C6AD9233D0986DA5 /* ImageGalleryLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryLayout.swift; path = Source/ImageGallery/ImageGalleryLayout.swift; sourceTree = "<group>"; }; + E2AA22DDF3562B8FFA232724C0228ECB /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = "<group>"; }; + E6B1EF389C6993B71B0FA018E28B620C /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; + E98D45A404F47D0392CDE16A921641EA /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = "<group>"; }; + EBA06E50EB7E89A679552BB137A18468 /* FSPagerView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FSPagerView.modulemap; sourceTree = "<group>"; }; ED8E7C0ED656254925E918D5509B655C /* Pods-MiniScanner-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-Info.plist"; sourceTree = "<group>"; }; - EF24A475CC7A858E5C29677907CD02EC /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift"; sourceTree = "<group>"; }; - F3444CFC5D1A192201D71D9AD68E2C80 /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift; sourceTree = "<group>"; }; - F354B1F1A402BFF28D1BC4E0300C1899 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + F1385EA4B73C794E0C6B84F4886A2CC5 /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift"; sourceTree = "<group>"; }; + F1E4CC36A055577A0E55615D5E942AAE /* IQKeyboardConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift; sourceTree = "<group>"; }; + F291F28222B0C43AEC7C7C41136F489F /* LanguageManager-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LanguageManager-iOS-Info.plist"; sourceTree = "<group>"; }; F3DF46AD6E25D68DB361974528992221 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - F594AE9D9A5FE5CBBEFBB3A2AA80F649 /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = "<group>"; }; - F5CB977FC46BAB3CEE64355EC9A19AC3 /* cameraIcon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "cameraIcon@3x.png"; path = "Images/cameraIcon@3x.png"; sourceTree = "<group>"; }; - F5D77B18F54FCA886E79FE7772C967AE /* ImagePicker.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ImagePicker.modulemap; sourceTree = "<group>"; }; - F787D1084E76059C7D81AD88BC26B28E /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; - F7FEF197B2124809DF009FE2F894546E /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - FE02CCF0052887593F538DBF9A842227 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = "<group>"; }; + F54D487A85CBB9867A9D40D6C520A091 /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; + F660610295E85CB8BC6BB3BFE0FB06E8 /* AssetManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetManager.swift; path = Source/AssetManager.swift; sourceTree = "<group>"; }; + FA12FC908784B631E6E77A3A8BD8C0F4 /* ResourceBundle-ImagePicker-ImagePicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ImagePicker-ImagePicker-Info.plist"; sourceTree = "<group>"; }; + FACF36010BFCB447C18555FE06FB3998 /* LanguageManager-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-umbrella.h"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -326,42 +363,51 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 51AA6D129D5EBE2BD4592335B41F7D88 /* Frameworks */ = { + 37679FC713FDE44C229DEA3D0E3C687B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5ADC324C52D011EAFCDD0673A368D24E /* Frameworks */ = { + A576A6B66E7FF54F0F06CD54397C2528 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A576A6B66E7FF54F0F06CD54397C2528 /* Frameworks */ = { + A84948CC16232EA7760DD790F66BA178 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */, + 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */, + 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A84948CC16232EA7760DD790F66BA178 /* Frameworks */ = { + B560DBD1EB21CD84EE3CF89592F20A58 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */, - 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B80B15C3089A204C2637CFEF7CF4E427 /* Frameworks */ = { + E5ACBBCF353041B05D869DB1467D16B1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7399F0854271981516AA79727A0A06C8 /* Foundation.framework in Frameworks */, + 2E4A914423BA1B263C96C3BBC43E2245 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FD58926B077F9113DEBC96600422D0B7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 49F467E673A926683C4B3B56FB0B3805 /* Foundation.framework in Frameworks */, + 970338AEDE475A68CFFB0D162B7C4A51 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -380,161 +426,150 @@ name = iOS; sourceTree = "<group>"; }; - 0B2E2B01EAA694A0FEB46641D5D8B43B /* Support Files */ = { + 2004E19017DC059CA97F6C5CF09ED1C6 /* Support Files */ = { isa = PBXGroup; children = ( - B507677B457247BB90B0E386AF24A63A /* NBBottomSheet.modulemap */, - 4449DCA01F0FAA18DA31E34CA6E8A3DE /* NBBottomSheet-dummy.m */, - 9C59271DF8D3B3D948789114BD2502D4 /* NBBottomSheet-Info.plist */, - F354B1F1A402BFF28D1BC4E0300C1899 /* NBBottomSheet-prefix.pch */, - DD819B41E4207BCA0A1762DEC5DE7A12 /* NBBottomSheet-umbrella.h */, - 0A4841D8820C46BF7A845722F4418489 /* NBBottomSheet.debug.xcconfig */, - 07D747573A57982F6B7EF9A1B8CCCC60 /* NBBottomSheet.release.xcconfig */, + 05FB11A6738CC7DF06C0C1D2A628C533 /* ImagePicker.modulemap */, + 0686A6CDA651BBF2C5B47698FD1897B4 /* ImagePicker-dummy.m */, + 6A8CA0840E5D0BB8C6566FBD0C8CCDC7 /* ImagePicker-Info.plist */, + 55E4D22BA0F35C3448A2A9A27C0342C6 /* ImagePicker-prefix.pch */, + 7A0D2A794776C30796425F42DDE5F36A /* ImagePicker-umbrella.h */, + 7B364470B802D2E80AF8122B4F49BFA1 /* ImagePicker.debug.xcconfig */, + 878768697FDBDA249601A7E23B958714 /* ImagePicker.release.xcconfig */, + FA12FC908784B631E6E77A3A8BD8C0F4 /* ResourceBundle-ImagePicker-ImagePicker-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/NBBottomSheet"; + path = "../Target Support Files/ImagePicker"; sourceTree = "<group>"; }; - 25A7860C302D73DEB8070396C756BC9B /* Pods */ = { + 2B099D87FE394E029224D7EB55C23A82 /* Resources */ = { isa = PBXGroup; children = ( - 5549B00883DE214AD0D5E4C5B3C5193F /* ImagePicker */, - EE3DFE07989E3EAD33E52140D841497B /* IQKeyboardManagerSwift */, - 4A783AE7A4BBE53EF79208C642C63749 /* LanguageManager-iOS */, - CA64E667E5573CEE00E282A4D3D04837 /* NBBottomSheet */, + 73CB09935F781BCB817A05DA1DAA1020 /* AUTO@3x.png */, + 643AAC5051F9ED3819D5583FEA4DA5B6 /* cameraIcon@3x.png */, + 94897EC17A759429C47FB12A7A11680B /* focusIcon@3x.png */, + 3E75A0FB9E184426E1D8B314F77FD6BC /* OFF@3x.png */, + A2BCCDE18C4FD7594F74F094794225A9 /* ON@3x.png */, + D1B09D1AFAB4C057139EF408248FB039 /* selectedImageGallery@3x.png */, + 629D33431B1A6A7BD331EA4D4836896E /* video@3x.png */, ); - name = Pods; + name = Resources; sourceTree = "<group>"; }; - 4A783AE7A4BBE53EF79208C642C63749 /* LanguageManager-iOS */ = { + 3FE073907100B4FE2739D7080E7608F8 /* NBBottomSheet */ = { isa = PBXGroup; children = ( - 4CDD2F875F3224637E8647D321D57CDC /* DefaultsKeys.swift */, - AA73FF47AD2E401229886E164A016157 /* LanguageManager.swift */, - 8D84B693516050AF9587ABB880A4C673 /* Languages.swift */, - 8B8AC4C58FBC098E1C3013D497F49700 /* Storage.swift */, - C8CFD7880A243F4083C1631C6F44B0C0 /* String+Localiz.swift */, - 645D05593EA9E5A0AA34FFF2E53FF66B /* UIButton+Direction.swift */, - BD5BCA1FBF25DA15C2AE9337BD05C406 /* UIImageView+Direction.swift */, - 57A65B7383E73A602FC92334219CC2F4 /* UIView+Direction.swift */, - 5E717421FDE87ECE8BD075C4C0DCD677 /* UIView+Swizzling.swift */, - 5F4E12C26B5DAC43495F2BB6B79590D2 /* ViewDirection.swift */, - 9766C3B4AADAB469139CB2C34F6BA9E8 /* Support Files */, + C36669888D89E20D89BDF4F1246671ED /* NBBottomSheet.h */, + 7C8C5A6FCC53D04A60F40DA8C98D2257 /* NBBottomSheetConfiguration.swift */, + 5DAED38A5CEBD25FBE676E7B349FCD3C /* NBBottomSheetController.swift */, + DEBACB3D1E9B957E79A8E8DB40C8FF19 /* NBBottomSheetDismissalTransition.swift */, + F54D487A85CBB9867A9D40D6C520A091 /* NBBottomSheetPresentationController.swift */, + 8739C327EB1C414723BDEC1E9820968A /* NBBottomSheetPresentationTransition.swift */, + B6C861DA278A5D245DA21D0329434D78 /* NBBottomSheetTransitioningDelegate.swift */, + CD6960427DCEE975DA8C892E3FD37397 /* NBConfiguration.swift */, + D83FA587461E3333F20D309A5031883B /* Support Files */, ); - name = "LanguageManager-iOS"; - path = "LanguageManager-iOS"; + path = NBBottomSheet; sourceTree = "<group>"; }; - 5549B00883DE214AD0D5E4C5B3C5193F /* ImagePicker */ = { + 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 81FA3ABE6BD27E15D8013335461EEF9E /* AssetManager.swift */, - B0658924A19160F383D82E03A19918A8 /* BottomContainerView.swift */, - 263E5DFD01305ED7A2E14D5AA268113B /* ButtonPicker.swift */, - 44A535B048E99AD006404076AEFBB03C /* CameraMan.swift */, - A4B4C52CBF38490F4AA48F16DF2F0CE8 /* CameraView.swift */, - 73A70A5A384D7DA1AFF9BF25C746F455 /* Configuration.swift */, - 4C819EBB7C5175DF511CF00A578B7B24 /* ConstraintsSetup.swift */, - 9EE9C6C08B1735F0F717130FCC08BDA9 /* Helper.swift */, - 716CB388FC696AF7CCFC6B84221B8B7E /* ImageGalleryLayout.swift */, - 785C8370814C365365AABA3CB24224DE /* ImageGalleryView.swift */, - A967C4C563E4504346C2013BED0CB222 /* ImageGalleryViewCell.swift */, - 601C0200A96E4B609579FBD7C1B9CDB8 /* ImageGalleryViewDataSource.swift */, - D0695BAE8FAA193DA575E4D83469826A /* ImagePickerController.swift */, - D4BC9C4AEF4B7509AFF6B6DAA85157F1 /* ImageStack.swift */, - 3022F128AE1CFF88F2BC7FB7C6841048 /* LocationManager.swift */, - 99DE0EC73DF2C605E373AA84080710B6 /* StackView.swift */, - 46ED7D7EDA19CDAE346E3AE6A5C8BB84 /* TopView.swift */, - C50F60479109C53DD1F7C301694D48A1 /* VideoInfoView.swift */, - 6C080B593F93BCDDA0869DF5A45660AB /* Resources */, - FBF99861D4630C2864FB77FFD55787DE /* Support Files */, + EC99F10DC5C191754BE16B2F6AC739A8 /* Pods-MiniScanner */, ); - name = ImagePicker; - path = ImagePicker; + name = "Targets Support Files"; sourceTree = "<group>"; }; - 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */ = { + 7864EB5C013992C7536E24A0E51FB679 /* Products */ = { isa = PBXGroup; children = ( - EC99F10DC5C191754BE16B2F6AC739A8 /* Pods-MiniScanner */, + 0F47FB5E28EE8C8342B1776D813D1A4C /* FSPagerView.framework */, + 987CD19BC0CE18F2E00B0AD5ABF8670D /* ImagePicker */, + 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */, + A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, + 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, + 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */, + 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet.framework */, + 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, ); - name = "Targets Support Files"; + name = Products; sourceTree = "<group>"; }; - 6C080B593F93BCDDA0869DF5A45660AB /* Resources */ = { + 84212D36AF469A443396F3D2DE27ACC3 /* Support Files */ = { isa = PBXGroup; children = ( - 215A93E8B8D35FC8C0FE9136FCAED2CD /* AUTO@3x.png */, - F5CB977FC46BAB3CEE64355EC9A19AC3 /* cameraIcon@3x.png */, - 06DB7F25D68C95F46140AAF75BE7B2D9 /* focusIcon@3x.png */, - 2043A7C5F8AE63209E4935ABE46E4DE2 /* OFF@3x.png */, - DF66E41F4A7A5BBD53D26B96702267F0 /* ON@3x.png */, - 29F03ED2CD860C1429379A22D209D161 /* selectedImageGallery@3x.png */, - 15C8486B0FEF983C5B8781637A943491 /* video@3x.png */, + EBA06E50EB7E89A679552BB137A18468 /* FSPagerView.modulemap */, + BA3E2B1D13CBA35E2E620BCF1932656D /* FSPagerView-dummy.m */, + A432A5D595D6137843DFA26A74543559 /* FSPagerView-Info.plist */, + B51A76981D5307579DAA52AF1DC3FDC7 /* FSPagerView-prefix.pch */, + 125C173AFCC25297EFA8933F73F0E07B /* FSPagerView-umbrella.h */, + CD43D1DEAE8D6B89DA79F89F090AEB40 /* FSPagerView.debug.xcconfig */, + 159A2D6A6013D2B5450DB2751437E610 /* FSPagerView.release.xcconfig */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/FSPagerView"; sourceTree = "<group>"; }; - 9766C3B4AADAB469139CB2C34F6BA9E8 /* Support Files */ = { + 8EDA6CF7F4F5DB5A39F09A679B14D094 /* Pods */ = { isa = PBXGroup; children = ( - 4DF1F4C3122C9F4F8DBDA8ADC11DC015 /* LanguageManager-iOS.modulemap */, - 289D379893DAFB4C3F91B8DC45FEE96B /* LanguageManager-iOS-dummy.m */, - 2C0FEF81EEE0C683645B5B9664402DD6 /* LanguageManager-iOS-Info.plist */, - 7EFAA485C1714D0F9B8695DA8C81E5C2 /* LanguageManager-iOS-prefix.pch */, - 534680B4399C935BB122047C4F15F69F /* LanguageManager-iOS-umbrella.h */, - AAB5B6E98707F2ADF3A9845874D055F4 /* LanguageManager-iOS.debug.xcconfig */, - 02F53E93D2F24BD6EF53601F1DBA5615 /* LanguageManager-iOS.release.xcconfig */, + EDA8E84E9733F55E6D50BFE6CC5DE456 /* FSPagerView */, + DB86DFEFD34CDD3C9B7852E841C9B925 /* ImagePicker */, + F600A5C617EEC2A2F3E7BED83A22153C /* IQKeyboardManagerSwift */, + 96A9C6F8E2468A2DE52E60F254840523 /* LanguageManager-iOS */, + 3FE073907100B4FE2739D7080E7608F8 /* NBBottomSheet */, ); - name = "Support Files"; - path = "../Target Support Files/LanguageManager-iOS"; + name = Pods; sourceTree = "<group>"; }; - 97E1FF5A3F41A95EEFC08BA805BBE552 /* Resources */ = { + 96A9C6F8E2468A2DE52E60F254840523 /* LanguageManager-iOS */ = { isa = PBXGroup; children = ( - F7FEF197B2124809DF009FE2F894546E /* PrivacyInfo.xcprivacy */, + 45848AD4380C3F81E612637A06D74516 /* DefaultsKeys.swift */, + B5E7F6859EDFDF3E322CAB934188C105 /* LanguageManager.swift */, + 2AF876CE5C67756C63AB2D1B6C244D51 /* Languages.swift */, + 55D485F79966A1E73CD7E8FE775AF3AA /* Storage.swift */, + 582327A9A4DA4D82BEFB195FD92F4B2E /* String+Localiz.swift */, + C6349A9899C7B2CD06A8CD9D85A55096 /* UIButton+Direction.swift */, + 186046B555C68EDF4D8B264B7310A49F /* UIImageView+Direction.swift */, + 7C9C60CA3B8DB21A9CA54DE050F8F651 /* UIView+Direction.swift */, + CFCA4D9FC5676F5CB290D0B030862CDC /* UIView+Swizzling.swift */, + BBC781C550C08C706A954A36B003A831 /* ViewDirection.swift */, + E157FA2303DEDEA1B0C8936711491231 /* Support Files */, ); - name = Resources; + path = "LanguageManager-iOS"; sourceTree = "<group>"; }; - B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { + 9DF68B0D7BB8B85A82E1BAC9F101C81B /* Resources */ = { isa = PBXGroup; children = ( - 0285214F24466DADA9DB9AC0EF8966F0 /* iOS */, + 7182925D2F6410484CED5BA08649E799 /* PrivacyInfo.xcprivacy */, ); - name = Frameworks; + name = Resources; sourceTree = "<group>"; }; - CA64E667E5573CEE00E282A4D3D04837 /* NBBottomSheet */ = { + B5B672E1CB27518076A09A156604EA80 /* Support Files */ = { isa = PBXGroup; children = ( - A1EA42CD913213E491331A02F772F77B /* NBBottomSheet.h */, - 71EDA53936756B122C07B02B38A07C32 /* NBBottomSheetConfiguration.swift */, - D5503FBF58DE89968F04737B3C5E300D /* NBBottomSheetController.swift */, - 88370D7F3B222EDE41FA71466C63DA1D /* NBBottomSheetDismissalTransition.swift */, - F787D1084E76059C7D81AD88BC26B28E /* NBBottomSheetPresentationController.swift */, - 1B4836109A68D1FEAD11C1BBCDA727B1 /* NBBottomSheetPresentationTransition.swift */, - 9748A2A58F64F03A23B2752179897C3D /* NBBottomSheetTransitioningDelegate.swift */, - 0242BCD9DCECF2E1893F122E132B9420 /* NBConfiguration.swift */, - 0B2E2B01EAA694A0FEB46641D5D8B43B /* Support Files */, + B790A64229049FDE2E49A3464FA794A0 /* IQKeyboardManagerSwift.modulemap */, + 00E86527F73AEB9E16F8FA507E95F54A /* IQKeyboardManagerSwift-dummy.m */, + BE062E09E144721D09D60E635B370160 /* IQKeyboardManagerSwift-Info.plist */, + E98D45A404F47D0392CDE16A921641EA /* IQKeyboardManagerSwift-prefix.pch */, + 10D23B759B9D7AAD7FF8636994E570FF /* IQKeyboardManagerSwift-umbrella.h */, + 576FA84316DCF9D03FB6455F5417CDD1 /* IQKeyboardManagerSwift.debug.xcconfig */, + E2AA22DDF3562B8FFA232724C0228ECB /* IQKeyboardManagerSwift.release.xcconfig */, + 96200B324321AFBD0B649D1B2C9C95DB /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, ); - name = NBBottomSheet; - path = NBBottomSheet; + name = "Support Files"; + path = "../Target Support Files/IQKeyboardManagerSwift"; sourceTree = "<group>"; }; - CC5207197B8553C3608131376A497711 /* Products */ = { + B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { isa = PBXGroup; children = ( - 987CD19BC0CE18F2E00B0AD5ABF8670D /* ImagePicker */, - 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */, - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */, - 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */, - 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, + 0285214F24466DADA9DB9AC0EF8966F0 /* iOS */, ); - name = Products; + name = Frameworks; sourceTree = "<group>"; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -542,26 +577,67 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 25A7860C302D73DEB8070396C756BC9B /* Pods */, - CC5207197B8553C3608131376A497711 /* Products */, + 8EDA6CF7F4F5DB5A39F09A679B14D094 /* Pods */, + 7864EB5C013992C7536E24A0E51FB679 /* Products */, 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */, ); sourceTree = "<group>"; }; - D5C526D18EBE88E30C1656192CB541EC /* Support Files */ = { + D83FA587461E3333F20D309A5031883B /* Support Files */ = { isa = PBXGroup; children = ( - 38B26CBA4B26D2190D5F2AF049902DB9 /* IQKeyboardManagerSwift.modulemap */, - E9A7E67F21C913E63FC39339C1A34EDF /* IQKeyboardManagerSwift-dummy.m */, - D9C5DA27C1FDF4419C1FEDDAF4A9A4BF /* IQKeyboardManagerSwift-Info.plist */, - FE02CCF0052887593F538DBF9A842227 /* IQKeyboardManagerSwift-prefix.pch */, - 3FB35C3ECFA7953FFD378F42A4E4FB69 /* IQKeyboardManagerSwift-umbrella.h */, - F594AE9D9A5FE5CBBEFBB3A2AA80F649 /* IQKeyboardManagerSwift.debug.xcconfig */, - 6E7ADC88875ACAB4A6A9A6D06FE0A595 /* IQKeyboardManagerSwift.release.xcconfig */, - 5D65452C5F1840661750AB48C6E061B7 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, + B2B0C08E0F7C8BAEEF2D80915408CA4E /* NBBottomSheet.modulemap */, + 50B8C2618C444EA6C533E0A028A40401 /* NBBottomSheet-dummy.m */, + A47C01AE0A7C8A69421589DB99E4EA93 /* NBBottomSheet-Info.plist */, + D192CB80EEF5B776A22DFD320E872AF0 /* NBBottomSheet-prefix.pch */, + E6B1EF389C6993B71B0FA018E28B620C /* NBBottomSheet-umbrella.h */, + 6CE6C81B3DBADD63B91C912BB54C2F3B /* NBBottomSheet.debug.xcconfig */, + 477B22B950B9A74F737148237E4CC057 /* NBBottomSheet.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + path = "../Target Support Files/NBBottomSheet"; + sourceTree = "<group>"; + }; + DB86DFEFD34CDD3C9B7852E841C9B925 /* ImagePicker */ = { + isa = PBXGroup; + children = ( + F660610295E85CB8BC6BB3BFE0FB06E8 /* AssetManager.swift */, + 3BF4FDDCDF3959514F7E4844C446B4E6 /* BottomContainerView.swift */, + 5B88917F2F7C1A72A04FA85624C3DEFF /* ButtonPicker.swift */, + B9DD740680FA210D5DAB6BE252AB4EF1 /* CameraMan.swift */, + 391991FCCD7C3163955756BE5F24E0B6 /* CameraView.swift */, + A82E5C2AB35A91C11A2164845AF66C0B /* Configuration.swift */, + 663CA458AFC6B3F550F1ED7A98EB1718 /* ConstraintsSetup.swift */, + AE279F36DEA7F9799201FBED80DE1579 /* Helper.swift */, + E11D6BF4A7EE6C01C6AD9233D0986DA5 /* ImageGalleryLayout.swift */, + 31BBFD0B142EAB580225A2260825A319 /* ImageGalleryView.swift */, + 58468F905BF54F1BB6F1379778747E4A /* ImageGalleryViewCell.swift */, + 4854795675642F9D2170DC3945BA5CCE /* ImageGalleryViewDataSource.swift */, + 38D8BFE264593E61F913A8B5B7BFBE0F /* ImagePickerController.swift */, + CAD7C2211C4367AD4461C65ABCCE4B4D /* ImageStack.swift */, + BE7DC77106671C740F9DBB7CD35316B1 /* LocationManager.swift */, + 41AA3096AB78C69396BEB49F0A58B41C /* StackView.swift */, + 48F3385D99D520F36A9C28AE3AFA44A9 /* TopView.swift */, + 3F50249C139F076BB49CF9DC780080CB /* VideoInfoView.swift */, + 2B099D87FE394E029224D7EB55C23A82 /* Resources */, + 2004E19017DC059CA97F6C5CF09ED1C6 /* Support Files */, + ); + path = ImagePicker; + sourceTree = "<group>"; + }; + E157FA2303DEDEA1B0C8936711491231 /* Support Files */ = { + isa = PBXGroup; + children = ( + 04AAE1A7C530A72A63D68F4AB6FE8BFB /* LanguageManager-iOS.modulemap */, + 53544CF5676171AA127FD31C20A35BF1 /* LanguageManager-iOS-dummy.m */, + F291F28222B0C43AEC7C7C41136F489F /* LanguageManager-iOS-Info.plist */, + BB34736DAECFEF1A71A9D96199C98E97 /* LanguageManager-iOS-prefix.pch */, + FACF36010BFCB447C18555FE06FB3998 /* LanguageManager-iOS-umbrella.h */, + BB27F7558FAEB9835885CF21253F9512 /* LanguageManager-iOS.debug.xcconfig */, + B334A3A67AC8668DEA2DC48989817DE9 /* LanguageManager-iOS.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LanguageManager-iOS"; sourceTree = "<group>"; }; EC99F10DC5C191754BE16B2F6AC739A8 /* Pods-MiniScanner */ = { @@ -581,78 +657,87 @@ path = "Target Support Files/Pods-MiniScanner"; sourceTree = "<group>"; }; - EE3DFE07989E3EAD33E52140D841497B /* IQKeyboardManagerSwift */ = { + EDA8E84E9733F55E6D50BFE6CC5DE456 /* FSPagerView */ = { isa = PBXGroup; children = ( - 6186F4433DF874D9D682B69E4B9692BF /* IQActiveConfiguration.swift */, - 4E56204315A31A820258FD80789F1967 /* IQBarButtonItem.swift */, - 9013F524E32E062B14DA4772DE8A003F /* IQBarButtonItemConfiguration.swift */, - 93202E4E9F1E05A6E4CE614860F52997 /* IQInvocation.swift */, - 55E90398CF3BD4545F2E6C9AC46BB2F7 /* IQKeyboardConfiguration.swift */, - 86E4E0BDBE48394EB9813E4999877362 /* IQKeyboardInfo.swift */, - 0A95315CDACAED5D1C09122017965AF4 /* IQKeyboardListener.swift */, - 21EE02C73BE1E329B7305249DAB09CC9 /* IQKeyboardManager.swift */, - 1E7504E9B38B126A1FE4CDCD1F6B5CDF /* IQKeyboardManager+Debug.swift */, - EF24A475CC7A858E5C29677907CD02EC /* IQKeyboardManager+Deprecated.swift */, - C4506BEE76EF98148A28CD87EE773134 /* IQKeyboardManager+Internal.swift */, - 3BACCBB72B2A572D9848F795451F28A7 /* IQKeyboardManager+Position.swift */, - 7A78F8690931C4D43717D7BEB933643B /* IQKeyboardManager+Toolbar.swift */, - 5F9F81C96DDC9B56C34A0E6D7C645E22 /* IQKeyboardManager+ToolbarActions.swift */, - 977093DD69FC042131EE7AFA9CB64D54 /* IQKeyboardManager+UIKeyboardNotification.swift */, - 0AD9E89B936B222489C91787D4FE88A7 /* IQKeyboardManager+UITextFieldViewNotification.swift */, - 862A62B35CB4A7FCCD78CDC63C79FE00 /* IQKeyboardManagerCompatible.swift */, - 711571167DFF1C3D3C0E94EFCCC0CF67 /* IQKeyboardManagerConstants.swift */, - 9AEABCA2EFA835BAB7FCD6AD66F96C96 /* IQKeyboardReturnKeyHandler.swift */, - 6795D74469E29BB8CF88805CFB060AFF /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */, - D0CD85F8FE5988FBAA6E8BC1DC380C2C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */, - 5D26C00E0D91C11489799747334F6B83 /* IQNSArray+Sort.swift */, - F3444CFC5D1A192201D71D9AD68E2C80 /* IQPlaceholderable.swift */, - 8C8F9D764EEB7EEDEDF45F7C7CC55C33 /* IQPreviousNextView.swift */, - 69B4ECFE4C236C4C7934D848AB816BEA /* IQRootControllerConfiguration.swift */, - A168E01B41B0E8F15B95D9D58BDC2325 /* IQScrollViewConfiguration.swift */, - 20382F7CEA0A2FF24E600822E96AA7EC /* IQTextFieldViewInfo.swift */, - 8C60BE9866DE0F494BE98A0D610983E5 /* IQTextFieldViewInfoModel.swift */, - 056020DCD7EE4DB784B0EB1B1F7CB59C /* IQTextFieldViewListener.swift */, - 94FB65BF2E12942E08FD28D02B196063 /* IQTextView.swift */, - 326C56A2910292830ACB66D6AC2F0043 /* IQTitleBarButtonItem.swift */, - 10B1DFF1A793B246DA3C40DDAECABE99 /* IQToolbar.swift */, - 2DFAC6C52C912E471A716442152D7D99 /* IQToolbarConfiguration.swift */, - 30EAF9D343ACF607F9D9719F907EC3EA /* IQToolbarPlaceholderConfiguration.swift */, - 2A860EAF32F2B3C4C7F95F3E1B2D01C3 /* IQUICollectionView+Additions.swift */, - 43717B490B462ACA5B2524D38A8D85A1 /* IQUIScrollView+Additions.swift */, - BB51AFFCD4B39F79707FB09B42ED4464 /* IQUITableView+Additions.swift */, - 5C5B75448D0B982844A56F3E38FFC5C4 /* IQUITextFieldView+Additions.swift */, - 291BB5586E07ADC8AFF3AB7CA09E3C84 /* IQUIView+Hierarchy.swift */, - 18F31FEEA7BC66636304805A3A9A4B08 /* IQUIView+IQKeyboardToolbar.swift */, - 6B12A19FA505C37ACEDAB545EDD4C324 /* IQUIView+IQKeyboardToolbarDeprecated.swift */, - 4005F31A049034527E5C53DB638ABA67 /* IQUIViewController+Additions.swift */, - A5A432BBFA3EC41432193F1BA4E8F5C7 /* UIImage+NextPrevious.swift */, - 97E1FF5A3F41A95EEFC08BA805BBE552 /* Resources */, - D5C526D18EBE88E30C1656192CB541EC /* Support Files */, - ); - name = IQKeyboardManagerSwift; - path = IQKeyboardManagerSwift; + 73151BB74FF19C87B98805C922968D9B /* FSPageControl.swift */, + 6D41FAF09B7FF66C2B3ED69436FAD56A /* FSPagerCollectionView.swift */, + 4C49B18419A5350E2FF0519E3E2F6AE1 /* FSPagerView.swift */, + 5FB0228AF9177F654C13A7EC58B65414 /* FSPagerViewCell.swift */, + 8B44DB1CA9AEFD39AB320FC434F4D5CF /* FSPagerViewLayoutAttributes.swift */, + A9B7321D9EFF744C9C4029D6879D984C /* FSPagerViewObjcCompat.h */, + 76488B34BAAD9317550CB27A39510A82 /* FSPagerViewObjcCompat.m */, + B6381DE79278633AE97412B34DEA61A9 /* FSPageViewLayout.swift */, + CBF0AFCBFFE0F0AC4056B467DFD3AAAE /* FSPageViewTransformer.swift */, + 84212D36AF469A443396F3D2DE27ACC3 /* Support Files */, + ); + path = FSPagerView; sourceTree = "<group>"; }; - FBF99861D4630C2864FB77FFD55787DE /* Support Files */ = { + F600A5C617EEC2A2F3E7BED83A22153C /* IQKeyboardManagerSwift */ = { isa = PBXGroup; children = ( - F5D77B18F54FCA886E79FE7772C967AE /* ImagePicker.modulemap */, - AFA6A88904B0288563135DBDF949AA6A /* ImagePicker-dummy.m */, - 6976A54EFB18220EBAC17EDBE7BD5C91 /* ImagePicker-Info.plist */, - 107D647DF3C7BECC04AD906F3B3330E7 /* ImagePicker-prefix.pch */, - D96B518E8F4EF4B01A14DB607E5728A5 /* ImagePicker-umbrella.h */, - 56CC66AF6340E998DCCA050EEE9B556E /* ImagePicker.debug.xcconfig */, - C4CE220A4C9571A7B0A597C16F19BBA9 /* ImagePicker.release.xcconfig */, - 5C0AF0735D8A7EDEAB791C4AF317C58E /* ResourceBundle-ImagePicker-ImagePicker-Info.plist */, + 1F5477B53916433C6C9207EAFDD8DD96 /* IQActiveConfiguration.swift */, + 4BB6C6E6068769143E709E93481E6F1A /* IQBarButtonItem.swift */, + D9FB297F85430CCD6E4BF32C102F32CC /* IQBarButtonItemConfiguration.swift */, + CDD6976DA8F5F0B93DF1A78AA06B575E /* IQInvocation.swift */, + F1E4CC36A055577A0E55615D5E942AAE /* IQKeyboardConfiguration.swift */, + 850DF479EFFD8725D082462C3E5C53C0 /* IQKeyboardInfo.swift */, + 610191544EEAD197032191BA9FC6A4BA /* IQKeyboardListener.swift */, + 1952ADCDAFFBC0348561AA70A54E8A4B /* IQKeyboardManager.swift */, + 449244F55B8088C827AD4787D03C7A37 /* IQKeyboardManager+Debug.swift */, + 47213A20CC51FA450CDBAA7B9D82B79B /* IQKeyboardManager+Deprecated.swift */, + 1C5ED23D8DA6C61EF94C1ADA43ADBED7 /* IQKeyboardManager+Internal.swift */, + 19A2058EC0A4223F67C47A162832B234 /* IQKeyboardManager+Position.swift */, + 0A4224E13F5E64B7C7ED26972CECCEF8 /* IQKeyboardManager+Toolbar.swift */, + C78127B028ED64AEA102D7A53AF6C180 /* IQKeyboardManager+ToolbarActions.swift */, + 261499A1227131B89CE68BBA9C645617 /* IQKeyboardManager+UIKeyboardNotification.swift */, + 9EC9B8BC1831AE71D4A3E3399C6D7CEB /* IQKeyboardManager+UITextFieldViewNotification.swift */, + 52D8A157D7952E7CD278A89DB1EE312E /* IQKeyboardManagerCompatible.swift */, + 9BB9EE1F19AB969730E96727C45644A3 /* IQKeyboardManagerConstants.swift */, + 2FA2436A50C4518FAFDBB1C7958F150B /* IQKeyboardReturnKeyHandler.swift */, + 70730B6AC4F7CFA336195B8FD8BFA5A3 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */, + 89F5F3DB1CD795822ECF03A3BF322570 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */, + F1385EA4B73C794E0C6B84F4886A2CC5 /* IQNSArray+Sort.swift */, + 6D158F541F3CBD663BCD2F2A65D3E0C3 /* IQPlaceholderable.swift */, + 2C974A91C05893EDB6D9C54E85336A9B /* IQPreviousNextView.swift */, + CE15B5E77B366A3841F60137841BD360 /* IQRootControllerConfiguration.swift */, + 606CE67CFC56302B4A052F22DC3C5F13 /* IQScrollViewConfiguration.swift */, + 3550E18ADF3EF705F4700FC56EA51321 /* IQTextFieldViewInfo.swift */, + 11EF2D1F813F931138D6E82511E04949 /* IQTextFieldViewInfoModel.swift */, + 44C5AD611F2819B6A087C4E533D669C2 /* IQTextFieldViewListener.swift */, + C50EF13DE5ADE34DBF289032C4FD68F5 /* IQTextView.swift */, + 2729357D2F7C6A9A64C2602DAD22CE6E /* IQTitleBarButtonItem.swift */, + 78AE0362F9BE43843B5E482BC8607E4B /* IQToolbar.swift */, + 6D54E2D6583C15003E804604338BA9F6 /* IQToolbarConfiguration.swift */, + 82675B0AA9E14C3B813886B00BAE7B56 /* IQToolbarPlaceholderConfiguration.swift */, + 07BB2FCA4E9BAB2B85EDB57C2DEDEE86 /* IQUICollectionView+Additions.swift */, + 1C6FBE022DD17007165E204314587DF2 /* IQUIScrollView+Additions.swift */, + 2117351B73CD63629B006A8EDA630B87 /* IQUITableView+Additions.swift */, + 5D6BEBA675F56179275B2E4335F5C926 /* IQUITextFieldView+Additions.swift */, + 6929AC0AE377312BD04644294A15EC42 /* IQUIView+Hierarchy.swift */, + 9B3B4AA730049734AC812A25BADAA3FF /* IQUIView+IQKeyboardToolbar.swift */, + BE26B4E0FA2A7EB069ECA092637ADB2B /* IQUIView+IQKeyboardToolbarDeprecated.swift */, + 6C9E7FCA694AF091E1380AFFC063B0CB /* IQUIViewController+Additions.swift */, + 100DB09534605AB7B903CC6178562E6C /* UIImage+NextPrevious.swift */, + 9DF68B0D7BB8B85A82E1BAC9F101C81B /* Resources */, + B5B672E1CB27518076A09A156604EA80 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/ImagePicker"; + path = IQKeyboardManagerSwift; sourceTree = "<group>"; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 0608DA1408F82CC4ADBFAF480D0FA2B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CE2C6FD104092EA3F2F0A357C72460A8 /* FSPagerView-umbrella.h in Headers */, + 91611428D06F5E61CECF70A53E6DA6C6 /* FSPagerViewObjcCompat.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 11370304D07B86BF4935D7D5A612503A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -669,11 +754,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 402E620400FBC14186719DB7EBD35715 /* Headers */ = { + 5652C31FCED4827751ACF17F59387523 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D5F3E92E5A3412923CBA8DF657DB200E /* Pods-MiniScanner-umbrella.h in Headers */, + C43469D6FD925CAAD4F5E0E4A76E44FA /* Pods-MiniScanner-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -709,7 +794,7 @@ buildRules = ( ); dependencies = ( - 798E3B215356C821FF48D86BDBF049A8 /* PBXTargetDependency */, + 6046103C0E027685F7CDE9D383A8BDDE /* PBXTargetDependency */, ); name = ImagePicker; productName = ImagePicker; @@ -718,20 +803,21 @@ }; 4372AB6A3C495222906A1ABFD39A4463 /* Pods-MiniScanner */ = { isa = PBXNativeTarget; - buildConfigurationList = F290DD33B276A7EEE6E81DBD6D2BA55E /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; + buildConfigurationList = A8517EF1DC0F372EE454885BAD9A7D8D /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; buildPhases = ( - 402E620400FBC14186719DB7EBD35715 /* Headers */, - 700D3730DBC574545BCCD5C6A4BC4F65 /* Sources */, - B80B15C3089A204C2637CFEF7CF4E427 /* Frameworks */, - 08F9628E3D26220732E7142F4A792885 /* Resources */, + 5652C31FCED4827751ACF17F59387523 /* Headers */, + FB8EAB0021B7D12FF17459D280E9C87A /* Sources */, + FD58926B077F9113DEBC96600422D0B7 /* Frameworks */, + 5C6E92FD4C30823910FA29FB504E5B01 /* Resources */, ); buildRules = ( ); dependencies = ( - 72A4050EDA92C584EF9AC34E90B6069A /* PBXTargetDependency */, - 6B50F0BE0FA99BFA5A18D2C6F9DD43C6 /* PBXTargetDependency */, - 9C07C3F8CF642EF9B3747A1DC77B69AD /* PBXTargetDependency */, - A7A6DB6DED676124DD48F737288A6B90 /* PBXTargetDependency */, + B727326C39CFD788E355F7997A76CCD9 /* PBXTargetDependency */, + 728A62DA4AE9415607D1F8BF17C104F4 /* PBXTargetDependency */, + 1602ADE0E1F10C2CF3AE4B744F1AE26A /* PBXTargetDependency */, + 38771A0911F30C1608181EDE472E8E47 /* PBXTargetDependency */, + 701683D6DE258B7EB3A4A0B0E47C5425 /* PBXTargetDependency */, ); name = "Pods-MiniScanner"; productName = Pods_MiniScanner; @@ -740,11 +826,11 @@ }; 614D1818852890AC7D3CDF68D512C370 /* ImagePicker-ImagePicker */ = { isa = PBXNativeTarget; - buildConfigurationList = DBAB3E9E135CD06AA2AA51FA862C0FFD /* Build configuration list for PBXNativeTarget "ImagePicker-ImagePicker" */; + buildConfigurationList = 9D80D6A124261D7011FA827B24F5F77A /* Build configuration list for PBXNativeTarget "ImagePicker-ImagePicker" */; buildPhases = ( - 82DD422B350BF8B13BD757E2DDD04319 /* Sources */, - 5ADC324C52D011EAFCDD0673A368D24E /* Frameworks */, - 0750168A22ABDA5E87AD325DD4692F38 /* Resources */, + 85F46428C1E6BC4C0387FA5D4EC81E51 /* Sources */, + 37679FC713FDE44C229DEA3D0E3C687B /* Frameworks */, + 3CADE8803CE56DCE6F811766BEE028A8 /* Resources */, ); buildRules = ( ); @@ -770,7 +856,7 @@ ); name = NBBottomSheet; productName = NBBottomSheet; - productReference = 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */; + productReference = 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet.framework */; productType = "com.apple.product-type.framework"; }; 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */ = { @@ -793,11 +879,11 @@ }; 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 00FFB97E5F027C41C295C24497BFE700 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; + buildConfigurationList = BA78B12086276C5A45087FBFAC5AAB5E /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; buildPhases = ( - F0EB798B988FFCCE9C5B5695B6491BC1 /* Sources */, - 51AA6D129D5EBE2BD4592335B41F7D88 /* Frameworks */, - 4B692DD64DA2305B5F48F1474C240411 /* Resources */, + 9405A825E0391801566A1BA3916A7433 /* Sources */, + B560DBD1EB21CD84EE3CF89592F20A58 /* Frameworks */, + 335CCDBD9B1D7641CF860EBA8CE6C91B /* Resources */, ); buildRules = ( ); @@ -820,13 +906,31 @@ buildRules = ( ); dependencies = ( - 949E1E4A5660CD0E35EB046912939CB6 /* PBXTargetDependency */, + F4D44ED2F929169742DE90FAFEDEF2B2 /* PBXTargetDependency */, ); name = IQKeyboardManagerSwift; productName = IQKeyboardManagerSwift; productReference = A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */; productType = "com.apple.product-type.framework"; }; + D4F8239FB329387A8476B964D92D92E7 /* FSPagerView */ = { + isa = PBXNativeTarget; + buildConfigurationList = 98343682D690F1F5CF2596A899F35F57 /* Build configuration list for PBXNativeTarget "FSPagerView" */; + buildPhases = ( + 0608DA1408F82CC4ADBFAF480D0FA2B4 /* Headers */, + 5F08C52D6C5CBA958747935FFDA1DFC2 /* Sources */, + E5ACBBCF353041B05D869DB1467D16B1 /* Frameworks */, + C51D8DC25EB55BC76B82A9E61C8BE832 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FSPagerView; + productName = FSPagerView; + productReference = 0F47FB5E28EE8C8342B1776D813D1A4C /* FSPagerView.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -845,10 +949,11 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = CC5207197B8553C3608131376A497711 /* Products */; + productRefGroup = 7864EB5C013992C7536E24A0E51FB679 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( + D4F8239FB329387A8476B964D92D92E7 /* FSPagerView */, 01CB8D6098C21E12CE735619344DE81E /* ImagePicker */, 614D1818852890AC7D3CDF68D512C370 /* ImagePicker-ImagePicker */, B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */, @@ -861,31 +966,32 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0750168A22ABDA5E87AD325DD4692F38 /* Resources */ = { + 335CCDBD9B1D7641CF860EBA8CE6C91B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 920DAFAA05D6AEE35D1C4B1E5B72E53A /* AUTO@3x.png in Resources */, - 2CE68F64419AE1091FEC8A5F75C29DCC /* cameraIcon@3x.png in Resources */, - B5917BEC7AED79CE3393A40E8CB00C92 /* focusIcon@3x.png in Resources */, - 578627027C10D3A455E9F1DC2BAE38DB /* OFF@3x.png in Resources */, - F1A6C2294A671BACFC919A4FC9576753 /* ON@3x.png in Resources */, - 32766BC7B540C537C3EE147C018D8A02 /* selectedImageGallery@3x.png in Resources */, - 2BC4A6DBF3FFADA37FBD3DD6E7FF7DF5 /* video@3x.png in Resources */, + 3AAA88A0DA1A4C83DE80CF06DAE842BE /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 08F9628E3D26220732E7142F4A792885 /* Resources */ = { + 3B58EC4259531E84AFA63D59D1133D3E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 3B58EC4259531E84AFA63D59D1133D3E /* Resources */ = { + 3CADE8803CE56DCE6F811766BEE028A8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 077139FE9B0F01A087099D1DEEA43C6F /* AUTO@3x.png in Resources */, + DFC166D6D9127F68B106B426C1987BEE /* cameraIcon@3x.png in Resources */, + F38157F1C724E5D0542A774916F5FE5E /* focusIcon@3x.png in Resources */, + CFFB3F1E1F4674AE420BC66278B8F182 /* OFF@3x.png in Resources */, + F430D726D95E472A0F080B87D2FFB84C /* ON@3x.png in Resources */, + 8A2B2068FC39EB1AEB76D3DCC8BC6EC4 /* selectedImageGallery@3x.png in Resources */, + 18874BB7E65438A4A83A05A86904B3D2 /* video@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -897,19 +1003,25 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4B692DD64DA2305B5F48F1474C240411 /* Resources */ = { + 500BEBDB28E9B664CEB4A237CBAE1EC8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7E21F9F8960AE60029BB764D2B371277 /* PrivacyInfo.xcprivacy in Resources */, + 1BBD42E84E62842B6EA186CEF24BBF45 /* ImagePicker-ImagePicker in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 500BEBDB28E9B664CEB4A237CBAE1EC8 /* Resources */ = { + 5C6E92FD4C30823910FA29FB504E5B01 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C51D8DC25EB55BC76B82A9E61C8BE832 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1BBD42E84E62842B6EA186CEF24BBF45 /* ImagePicker-ImagePicker in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1000,15 +1112,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 700D3730DBC574545BCCD5C6A4BC4F65 /* Sources */ = { + 5F08C52D6C5CBA958747935FFDA1DFC2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F2562CFCEC42E2989BADC7E823F2C9C3 /* FSPageControl.swift in Sources */, + ECA11CD4E20DFCA3327CB006B10A3DB8 /* FSPagerCollectionView.swift in Sources */, + 29C03EAF5C27DC851118AEC88ABEC151 /* FSPagerView.swift in Sources */, + F6702D89104E55C112FE16943BE7D41A /* FSPagerView-dummy.m in Sources */, + 69C7244F5E0D41CF59E5ADC8952F8D0D /* FSPagerViewCell.swift in Sources */, + C85C11573FFE927A84AD0C8BE456AD81 /* FSPagerViewLayoutAttributes.swift in Sources */, + EA89DFEFE15FAD82868C74E94F6F1B75 /* FSPagerViewObjcCompat.m in Sources */, + 40987E046BAD603A58CA00B9A7648588 /* FSPageViewLayout.swift in Sources */, + 488A767CF7494D169BFB886EDC470F5D /* FSPageViewTransformer.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 85F46428C1E6BC4C0387FA5D4EC81E51 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6F201AA2CEBCF262922C81580D5F6869 /* Pods-MiniScanner-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 82DD422B350BF8B13BD757E2DDD04319 /* Sources */ = { + 9405A825E0391801566A1BA3916A7433 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1033,13 +1160,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F0EB798B988FFCCE9C5B5695B6491BC1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; F504107C31E77537B61A2F14571BB10C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1055,51 +1175,65 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FB8EAB0021B7D12FF17459D280E9C87A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84CD0E0DCAD6593350AA864342338120 /* Pods-MiniScanner-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 6B50F0BE0FA99BFA5A18D2C6F9DD43C6 /* PBXTargetDependency */ = { + 1602ADE0E1F10C2CF3AE4B744F1AE26A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ImagePicker; target = 01CB8D6098C21E12CE735619344DE81E /* ImagePicker */; - targetProxy = 79FF0B0D8F347987ED026E1A2F50BCD3 /* PBXContainerItemProxy */; + targetProxy = A256C976BD8FEC8914D21C55BFA8759A /* PBXContainerItemProxy */; }; - 72A4050EDA92C584EF9AC34E90B6069A /* PBXTargetDependency */ = { + 38771A0911F30C1608181EDE472E8E47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardManagerSwift; - target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; - targetProxy = FC92B3EDB540B30648F41E65A8C077D3 /* PBXContainerItemProxy */; + name = "LanguageManager-iOS"; + target = 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */; + targetProxy = 5436BBF127AFBF237F0BF4013AB47A1F /* PBXContainerItemProxy */; }; - 798E3B215356C821FF48D86BDBF049A8 /* PBXTargetDependency */ = { + 6046103C0E027685F7CDE9D383A8BDDE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "ImagePicker-ImagePicker"; target = 614D1818852890AC7D3CDF68D512C370 /* ImagePicker-ImagePicker */; - targetProxy = 116BF15D4BA9D5DF3FBE736AB2A1B5C7 /* PBXContainerItemProxy */; + targetProxy = 99B44F1AF6FC0DCBE7658D053454307A /* PBXContainerItemProxy */; }; - 949E1E4A5660CD0E35EB046912939CB6 /* PBXTargetDependency */ = { + 701683D6DE258B7EB3A4A0B0E47C5425 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - targetProxy = D9BAF53C009DA5292853103F98DDC510 /* PBXContainerItemProxy */; + name = NBBottomSheet; + target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; + targetProxy = D8E9EFB62C84F2451393D3033CCD69EB /* PBXContainerItemProxy */; }; - 9C07C3F8CF642EF9B3747A1DC77B69AD /* PBXTargetDependency */ = { + 728A62DA4AE9415607D1F8BF17C104F4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "LanguageManager-iOS"; - target = 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */; - targetProxy = 6617C4BD9FA13DEFFC4365339E6EC546 /* PBXContainerItemProxy */; + name = IQKeyboardManagerSwift; + target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; + targetProxy = 87015586216C7D11B5258C93B5401791 /* PBXContainerItemProxy */; }; - A7A6DB6DED676124DD48F737288A6B90 /* PBXTargetDependency */ = { + B727326C39CFD788E355F7997A76CCD9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NBBottomSheet; - target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; - targetProxy = 25379AE4BB757484F80ECB623924015E /* PBXContainerItemProxy */; + name = FSPagerView; + target = D4F8239FB329387A8476B964D92D92E7 /* FSPagerView */; + targetProxy = 2CEC145C5550F170FF334AB1D080D715 /* PBXContainerItemProxy */; + }; + F4D44ED2F929169742DE90FAFEDEF2B2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; + target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; + targetProxy = 12E3A5CD5E6DE1ECCB4DF5ECCE07C96A /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 21302220AA8668082E71583ECE31B7CA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C4CE220A4C9571A7B0A597C16F19BBA9 /* ImagePicker.release.xcconfig */; + baseConfigurationReference = 878768697FDBDA249601A7E23B958714 /* ImagePicker.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1132,10 +1266,12 @@ }; name = Release; }; - 39440596D0B39AE8ECC2717121684FEC /* Release */ = { + 29A4D21F3E2B6829FCB3850DB6654200 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 02F53E93D2F24BD6EF53601F1DBA5615 /* LanguageManager-iOS.release.xcconfig */; + baseConfigurationReference = 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1144,18 +1280,54 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap"; - PRODUCT_MODULE_NAME = LanguageManager_iOS; - PRODUCT_NAME = LanguageManager_iOS; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 31731D2A96C7FF5AA4EE56EC2EB0AE2F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 159A2D6A6013D2B5450DB2751437E610 /* FSPagerView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/FSPagerView/FSPagerView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/FSPagerView/FSPagerView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/FSPagerView/FSPagerView.modulemap"; + PRODUCT_MODULE_NAME = FSPagerView; + PRODUCT_NAME = FSPagerView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -1167,29 +1339,45 @@ }; name = Release; }; - 3D653838205229DAE33626A12789D622 /* Release */ = { + 39440596D0B39AE8ECC2717121684FEC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6E7ADC88875ACAB4A6A9A6D06FE0A595 /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = B334A3A67AC8668DEA2DC48989817DE9 /* LanguageManager-iOS.release.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap"; + PRODUCT_MODULE_NAME = LanguageManager_iOS; + PRODUCT_NAME = LanguageManager_iOS; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; - 4E63084AC306D50E692DE8AFCE16B898 /* Debug */ = { + 434E4A52CBC9F74FA2D8CDD170442C4A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; + baseConfigurationReference = CD43D1DEAE8D6B89DA79F89F090AEB40 /* FSPagerView.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1198,32 +1386,65 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/FSPagerView/FSPagerView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/FSPagerView/FSPagerView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/FSPagerView/FSPagerView.modulemap"; + PRODUCT_MODULE_NAME = FSPagerView; + PRODUCT_NAME = FSPagerView; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; + 53A399BC02E5EA0E54FC805692EA5C3F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 878768697FDBDA249601A7E23B958714 /* ImagePicker.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ImagePicker"; + IBSC_MODULE = ImagePicker; + INFOPLIST_FILE = "Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = ImagePicker; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 5540C02B93A76EC1519AFFE60C1A6142 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E2AA22DDF3562B8FFA232724C0228ECB /* IQKeyboardManagerSwift.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; + IBSC_MODULE = IQKeyboardManagerSwift; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardManagerSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 57F5390C26CAC63BC7DC9F3A897AD41C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 56CC66AF6340E998DCCA050EEE9B556E /* ImagePicker.debug.xcconfig */; + baseConfigurationReference = 7B364470B802D2E80AF8122B4F49BFA1 /* ImagePicker.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1255,16 +1476,16 @@ }; name = Debug; }; - 65421FD70F86213900A3B7DC5B30E932 /* Debug */ = { + 6125F631306D7DD4992D2CFE6FF39E07 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 56CC66AF6340E998DCCA050EEE9B556E /* ImagePicker.debug.xcconfig */; + baseConfigurationReference = 576FA84316DCF9D03FB6455F5417CDD1 /* IQKeyboardManagerSwift.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ImagePicker"; - IBSC_MODULE = ImagePicker; - INFOPLIST_FILE = "Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = ImagePicker; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; + IBSC_MODULE = IQKeyboardManagerSwift; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1402,7 +1623,7 @@ }; A73A28CEE205ACFB6072250615C7D39D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AAB5B6E98707F2ADF3A9845874D055F4 /* LanguageManager-iOS.debug.xcconfig */; + baseConfigurationReference = BB27F7558FAEB9835885CF21253F9512 /* LanguageManager-iOS.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1434,9 +1655,26 @@ }; name = Debug; }; + B16F82C7318DAB212BC1DB3D73118545 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7B364470B802D2E80AF8122B4F49BFA1 /* ImagePicker.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ImagePicker"; + IBSC_MODULE = ImagePicker; + INFOPLIST_FILE = "Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = ImagePicker; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; B3CF11682A60F02B60820C17EE93D35E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F594AE9D9A5FE5CBBEFBB3A2AA80F649 /* IQKeyboardManagerSwift.debug.xcconfig */; + baseConfigurationReference = 576FA84316DCF9D03FB6455F5417CDD1 /* IQKeyboardManagerSwift.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1471,7 +1709,7 @@ }; B89AE063F35BBC5F3358209AF37E6D16 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0A4841D8820C46BF7A845722F4418489 /* NBBottomSheet.debug.xcconfig */; + baseConfigurationReference = 6CE6C81B3DBADD63B91C912BB54C2F3B /* NBBottomSheet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1484,7 +1722,7 @@ GCC_PREFIX_HEADER = "Target Support Files/NBBottomSheet/NBBottomSheet-prefix.pch"; INFOPLIST_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1503,10 +1741,11 @@ }; name = Debug; }; - C15C4E31ADF19556825A2743AEF62A77 /* Release */ = { + BCF178578AFBD6E715A7F1B340FDD406 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6E7ADC88875ACAB4A6A9A6D06FE0A595 /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1516,67 +1755,34 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; - }; - C588140F1D1E9C431CBBACA9C7679D96 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C4CE220A4C9571A7B0A597C16F19BBA9 /* ImagePicker.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ImagePicker"; - IBSC_MODULE = ImagePicker; - INFOPLIST_FILE = "Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = ImagePicker; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - CB50E6F4093E129009F35E769734F0DB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F594AE9D9A5FE5CBBEFBB3A2AA80F649 /* IQKeyboardManagerSwift.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; name = Debug; }; - F8AD79C5141E28EAE67B8011B5C3B8F5 /* Release */ = { + C15C4E31ADF19556825A2743AEF62A77 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 07D747573A57982F6B7EF9A1B8CCCC60 /* NBBottomSheet.release.xcconfig */; + baseConfigurationReference = E2AA22DDF3562B8FFA232724C0228ECB /* IQKeyboardManagerSwift.release.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1585,22 +1791,22 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/NBBottomSheet/NBBottomSheet-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet.modulemap"; - PRODUCT_MODULE_NAME = NBBottomSheet; - PRODUCT_NAME = NBBottomSheet; + MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1608,12 +1814,10 @@ }; name = Release; }; - FF428AF50BC2DDEC01BABD88BBC4C9BB /* Release */ = { + F8AD79C5141E28EAE67B8011B5C3B8F5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */; + baseConfigurationReference = 477B22B950B9A74F737148237E4CC057 /* NBBottomSheet.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1622,23 +1826,22 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/NBBottomSheet/NBBottomSheet-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet.modulemap"; + PRODUCT_MODULE_NAME = NBBottomSheet; + PRODUCT_NAME = NBBottomSheet; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1649,15 +1852,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00FFB97E5F027C41C295C24497BFE700 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CB50E6F4093E129009F35E769734F0DB /* Debug */, - 3D653838205229DAE33626A12789D622 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 397157E58CC1977C23EB745CC0C04035 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1694,29 +1888,47 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CE3A25ED647A443AB573ACE0764C0105 /* Build configuration list for PBXNativeTarget "ImagePicker" */ = { + 98343682D690F1F5CF2596A899F35F57 /* Build configuration list for PBXNativeTarget "FSPagerView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 57F5390C26CAC63BC7DC9F3A897AD41C /* Debug */, - 21302220AA8668082E71583ECE31B7CA /* Release */, + 434E4A52CBC9F74FA2D8CDD170442C4A /* Debug */, + 31731D2A96C7FF5AA4EE56EC2EB0AE2F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DBAB3E9E135CD06AA2AA51FA862C0FFD /* Build configuration list for PBXNativeTarget "ImagePicker-ImagePicker" */ = { + 9D80D6A124261D7011FA827B24F5F77A /* Build configuration list for PBXNativeTarget "ImagePicker-ImagePicker" */ = { isa = XCConfigurationList; buildConfigurations = ( - 65421FD70F86213900A3B7DC5B30E932 /* Debug */, - C588140F1D1E9C431CBBACA9C7679D96 /* Release */, + B16F82C7318DAB212BC1DB3D73118545 /* Debug */, + 53A399BC02E5EA0E54FC805692EA5C3F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F290DD33B276A7EEE6E81DBD6D2BA55E /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { + A8517EF1DC0F372EE454885BAD9A7D8D /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4E63084AC306D50E692DE8AFCE16B898 /* Debug */, - FF428AF50BC2DDEC01BABD88BBC4C9BB /* Release */, + BCF178578AFBD6E715A7F1B340FDD406 /* Debug */, + 29A4D21F3E2B6829FCB3850DB6654200 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BA78B12086276C5A45087FBFAC5AAB5E /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6125F631306D7DD4992D2CFE6FF39E07 /* Debug */, + 5540C02B93A76EC1519AFFE60C1A6142 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CE3A25ED647A443AB573ACE0764C0105 /* Build configuration list for PBXNativeTarget "ImagePicker" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 57F5390C26CAC63BC7DC9F3A897AD41C /* Debug */, + 21302220AA8668082E71583ECE31B7CA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/FSPagerView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/FSPagerView.xcscheme new file mode 100644 index 0000000..96fef6e --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/FSPagerView.xcscheme @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1500" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "D4F8239FB329387A8476B964D92D92E7" + BuildableName = "FSPagerView.framework" + BlueprintName = "FSPagerView" + ReferencedContainer = "container:Pods.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index 5e97abd..3c899a5 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,54 +4,61 @@ <dict> <key>SchemeUserState</key> <dict> + <key>FSPagerView.xcscheme</key> + <dict> + <key>isShown</key> + <false/> + <key>orderHint</key> + <integer>0</integer> + </dict> <key>IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>3</integer> + <integer>4</integer> </dict> <key>IQKeyboardManagerSwift.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>2</integer> + <integer>3</integer> </dict> <key>ImagePicker-ImagePicker.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>1</integer> + <integer>2</integer> </dict> <key>ImagePicker.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>0</integer> + <integer>1</integer> </dict> <key>LanguageManager-iOS.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>4</integer> + <integer>5</integer> </dict> <key>NBBottomSheet.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>5</integer> + <integer>6</integer> </dict> <key>Pods-MiniScanner.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>6</integer> + <integer>7</integer> </dict> </dict> <key>SuppressBuildableAutocreation</key> diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView-Info.plist b/Pods/Target Support Files/FSPagerView/FSPagerView-Info.plist new file mode 100644 index 0000000..582bd8b --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView-Info.plist @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>${PODS_DEVELOPMENT_LANGUAGE}</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIdentifier</key> + <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>0.8.3</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>${CURRENT_PROJECT_VERSION}</string> + <key>NSPrincipalClass</key> + <string></string> +</dict> +</plist> diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView-dummy.m b/Pods/Target Support Files/FSPagerView/FSPagerView-dummy.m new file mode 100644 index 0000000..aea684a --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_FSPagerView : NSObject +@end +@implementation PodsDummy_FSPagerView +@end diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView-prefix.pch b/Pods/Target Support Files/FSPagerView/FSPagerView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView-umbrella.h b/Pods/Target Support Files/FSPagerView/FSPagerView-umbrella.h new file mode 100644 index 0000000..474ff62 --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView-umbrella.h @@ -0,0 +1,17 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "FSPagerViewObjcCompat.h" + +FOUNDATION_EXPORT double FSPagerViewVersionNumber; +FOUNDATION_EXPORT const unsigned char FSPagerViewVersionString[]; + diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView.debug.xcconfig b/Pods/Target Support Files/FSPagerView/FSPagerView.debug.xcconfig new file mode 100644 index 0000000..a21eb53 --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView.debug.xcconfig @@ -0,0 +1,15 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FSPagerView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift +OTHER_LDFLAGS = $(inherited) -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/FSPagerView +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView.modulemap b/Pods/Target Support Files/FSPagerView/FSPagerView.modulemap new file mode 100644 index 0000000..cd9f550 --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView.modulemap @@ -0,0 +1,6 @@ +framework module FSPagerView { + umbrella header "FSPagerView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/FSPagerView/FSPagerView.release.xcconfig b/Pods/Target Support Files/FSPagerView/FSPagerView.release.xcconfig new file mode 100644 index 0000000..a21eb53 --- /dev/null +++ b/Pods/Target Support Files/FSPagerView/FSPagerView.release.xcconfig @@ -0,0 +1,15 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FSPagerView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift +OTHER_LDFLAGS = $(inherited) -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/FSPagerView +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown index ee16ade..e350d5a 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown @@ -1,6 +1,29 @@ # Acknowledgements This application makes use of the following third party libraries: +## FSPagerView + +Copyright (c) 2017 FSPagerView (https://github.com/WenchaoD/FSPagerView) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ## IQKeyboardManagerSwift MIT License diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist index 6cc5abc..66e6e54 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist @@ -12,6 +12,35 @@ <key>Type</key> <string>PSGroupSpecifier</string> </dict> + <dict> + <key>FooterText</key> + <string>Copyright (c) 2017 FSPagerView (https://github.com/WenchaoD/FSPagerView) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +</string> + <key>License</key> + <string>MIT</string> + <key>Title</key> + <string>FSPagerView</string> + <key>Type</key> + <string>PSGroupSpecifier</string> + </dict> <dict> <key>FooterText</key> <string>MIT License diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist index aef9d93..82fa28a 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist @@ -1,4 +1,5 @@ ${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh +${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework ${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework ${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist index 690db50..7c33ed8 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist @@ -1,3 +1,4 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FSPagerView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LanguageManager_iOS.framework diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist index aef9d93..82fa28a 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist @@ -1,4 +1,5 @@ ${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh +${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework ${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework ${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist index 690db50..7c33ed8 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist @@ -1,3 +1,4 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FSPagerView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LanguageManager_iOS.framework diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh index 06cc90b..fd2bcd6 100755 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh @@ -176,12 +176,14 @@ code_sign_if_enabled() { } if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework" install_framework "${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework" install_framework "${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework" install_framework "${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework" diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig index 06bbba1..9b0eee1 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FSPagerView" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker/ImagePicker.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FSPagerView/FSPagerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker/ImagePicker.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "AVFoundation" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImagePicker" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "AVFoundation" -framework "CoreGraphics" -framework "FSPagerView" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImagePicker" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig index 06bbba1..9b0eee1 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FSPagerView" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker/ImagePicker.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FSPagerView/FSPagerView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker/ImagePicker.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "AVFoundation" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImagePicker" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "AVFoundation" -framework "CoreGraphics" -framework "FSPagerView" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImagePicker" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -- GitLab