diff --git a/.travis.yml b/.travis.yml index e25caf1e..4ed84530 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,7 @@ osx_image: xcode7.3 language: objective-c xcode_sdk: iphonesimulator + +before_install: + - gem install xcpretty script: 'sh travisci.sh' diff --git a/iOS/AppValues.swift b/iOS/AppValues.swift index 910dbb21..cef54ae0 100755 --- a/iOS/AppValues.swift +++ b/iOS/AppValues.swift @@ -8,8 +8,7 @@ import UIKit import ChameleonFramework -import Log -import SwiftTweaks +import SwiftyBeaver struct AppValues { static var stops: [String:Stop] = [:] @@ -18,35 +17,19 @@ struct AppValues { static var favoritesRoutes: [[Stop]]! = [] static var stopCodeToStopItem: [String: String] = [:] static var primaryColor: UIColor! = UIColor.flatOrangeColor() - static var secondaryColor: UIColor! = UIColor.flatOrangeColorDark() static var textColor: UIColor! = UIColor.whiteColor() - static var premium: Bool! = false - static var logger = Logger() static var stopsKeys: [String] = [] static var linesBackgroundColor = [String:UIColor]() static var linesColor = [String:UIColor]() + static var logger = SwiftyBeaver.self + static func testTimeExecution(title: String!, block: () -> ()) { - // Thanks to @kristopherjohnson (GitHub) + // Thanks to @kristopherjohnson GitHub user. + let start = CACurrentMediaTime() - block(); + block() let end = CACurrentMediaTime() logger.info("Execution time of \(title) : \(end - start)s") } -} - -public struct TpgOfflineTweaks: TweakLibraryType { - - public static let defaultStore: TweakStore = { - let allTweaks: [TweakClusterType] = [] - - // Since SwiftTweaks is a dynamic library, you'll need to determine whether tweaks are enabled. - // Try using the DEBUG flag (add "-D DEBUG" to "Other Swift Flags" in your project's Build Settings). - let tweaksEnabled: Bool = false - - return TweakStore( - tweaks: allTweaks, - enabled: tweaksEnabled - ) - }() } \ No newline at end of file diff --git a/iOS/Podfile b/iOS/Podfile index 691247a3..c81f705f 100755 --- a/iOS/Podfile +++ b/iOS/Podfile @@ -13,16 +13,20 @@ target 'tpg offline' do pod 'DGElasticPullToRefresh', git:'https://github.com/gontovnik/DGElasticPullToRefresh.git' pod 'MRProgress', git:'https://github.com/RemyDCF/MRProgress.git' pod 'INTULocationManager', git:'https://github.com/intuit/LocationManager.git' - pod 'SwiftInAppPurchase', git: 'https://github.com/rpzzzzzz/SwiftInAppPurchase.git' pod 'Localize-Swift', git: 'https://github.com/marmelroy/Localize-Swift.git' pod 'Onboard', git: 'https://github.com/mamaral/Onboard.git', :tag => "v2.1.9" - pod 'Alamofire' + pod 'Alamofire', git: 'https://github.com/Alamofire/Alamofire.git' pod 'SwiftDate', git: 'https://github.com/malcommac/SwiftDate.git' - pod 'Log', git: 'https://github.com/delba/Log.git' + pod 'SwiftyBeaver', git: 'https://github.com/SwiftyBeaver/SwiftyBeaver.git' pod 'NVActivityIndicatorView', git: 'https://github.com/ninjaprox/NVActivityIndicatorView.git' pod 'AsyncSwift', git: 'https://github.com/duemunk/Async.git' pod 'AKPickerView-Swift', git: 'https://github.com/Akkyie/AKPickerView-Swift.git' pod 'Fabric' pod 'Crashlytics' - pod 'SwiftTweaks', git: 'https://github.com/Khan/SwiftTweaks.git' -end \ No newline at end of file +end + +target 'tpg offline Watch Extension' do + platform :watchos, '2.0' + pod 'SwiftyJSON', git: 'https://github.com/SwiftyJSON/SwiftyJSON.git' + pod 'Alamofire', git: 'https://github.com/Alamofire/Alamofire.git' +end diff --git a/iOS/Podfile.lock b/iOS/Podfile.lock old mode 100755 new mode 100644 index bf25c8f1..112da2ac --- a/iOS/Podfile.lock +++ b/iOS/Podfile.lock @@ -1,11 +1,11 @@ PODS: - AKPickerView-Swift (1.0.1) - - Alamofire (3.4.0) + - Alamofire (3.4.1) - AsyncSwift (1.7.2) - ChameleonFramework/Default (2.1.0) - ChameleonFramework/Swift (2.1.0): - ChameleonFramework/Default - - Crashlytics (3.7.0): + - Crashlytics (3.7.2): - Fabric (~> 1.6.3) - DGElasticPullToRefresh (1.0.3) - DGRunkeeperSwitch (1.1.1) @@ -32,10 +32,9 @@ PODS: - FontAwesomeKit/Core - FontAwesomeKit/Zocial (2.2.1): - FontAwesomeKit/Core - - FSCalendar (2.1.1) + - FSCalendar (2.2.0) - INTULocationManager (4.2.0) - - Localize-Swift (1.1.2) - - Log (0.5) + - Localize-Swift (1.5) - MRProgress (0.8.3): - MRProgress/ActivityIndicator (= 0.8.3) - MRProgress/Blur (= 0.8.3) @@ -64,18 +63,17 @@ PODS: - MRProgress/ProgressBaseClass (0.8.3) - MRProgress/Stopable (0.8.3): - MRProgress/Helper - - NVActivityIndicatorView (2.6) + - NVActivityIndicatorView (2.9) - Onboard (2.1.9) - PermissionScope (1.0.2) - - SCLAlertView (0.5.8) + - SCLAlertView (0.5.9) - SwiftDate (3.0.9) - - SwiftInAppPurchase (1.0.0) - - SwiftTweaks (1.0) + - SwiftyBeaver (0.6.3) - SwiftyJSON (2.3.2) DEPENDENCIES: - AKPickerView-Swift (from `https://github.com/Akkyie/AKPickerView-Swift.git`) - - Alamofire + - Alamofire (from `https://github.com/Alamofire/Alamofire.git`) - AsyncSwift (from `https://github.com/duemunk/Async.git`) - ChameleonFramework/Swift (from `https://github.com/ViccAlexander/Chameleon.git`) - Crashlytics @@ -87,20 +85,20 @@ DEPENDENCIES: - FSCalendar - INTULocationManager (from `https://github.com/intuit/LocationManager.git`) - Localize-Swift (from `https://github.com/marmelroy/Localize-Swift.git`) - - Log (from `https://github.com/delba/Log.git`) - MRProgress (from `https://github.com/RemyDCF/MRProgress.git`) - NVActivityIndicatorView (from `https://github.com/ninjaprox/NVActivityIndicatorView.git`) - Onboard (from `https://github.com/mamaral/Onboard.git`, tag `v2.1.9`) - PermissionScope (from `https://github.com/nickoneill/PermissionScope.git`) - SCLAlertView (from `https://github.com/vikmeup/SCLAlertView-Swift.git`) - SwiftDate (from `https://github.com/malcommac/SwiftDate.git`) - - SwiftInAppPurchase (from `https://github.com/rpzzzzzz/SwiftInAppPurchase.git`) - - SwiftTweaks (from `https://github.com/Khan/SwiftTweaks.git`) + - SwiftyBeaver (from `https://github.com/SwiftyBeaver/SwiftyBeaver.git`) - SwiftyJSON (from `https://github.com/SwiftyJSON/SwiftyJSON.git`) EXTERNAL SOURCES: AKPickerView-Swift: :git: https://github.com/Akkyie/AKPickerView-Swift.git + Alamofire: + :git: https://github.com/Alamofire/Alamofire.git AsyncSwift: :git: https://github.com/duemunk/Async.git ChameleonFramework: @@ -117,8 +115,6 @@ EXTERNAL SOURCES: :git: https://github.com/intuit/LocationManager.git Localize-Swift: :git: https://github.com/marmelroy/Localize-Swift.git - Log: - :git: https://github.com/delba/Log.git MRProgress: :git: https://github.com/RemyDCF/MRProgress.git NVActivityIndicatorView: @@ -132,10 +128,8 @@ EXTERNAL SOURCES: :git: https://github.com/vikmeup/SCLAlertView-Swift.git SwiftDate: :git: https://github.com/malcommac/SwiftDate.git - SwiftInAppPurchase: - :git: https://github.com/rpzzzzzz/SwiftInAppPurchase.git - SwiftTweaks: - :git: https://github.com/Khan/SwiftTweaks.git + SwiftyBeaver: + :git: https://github.com/SwiftyBeaver/SwiftyBeaver.git SwiftyJSON: :git: https://github.com/SwiftyJSON/SwiftyJSON.git @@ -143,17 +137,20 @@ CHECKOUT OPTIONS: AKPickerView-Swift: :commit: 07c03dca3878fb3adaaa1087c40e5e4dc592fe0d :git: https://github.com/Akkyie/AKPickerView-Swift.git + Alamofire: + :commit: 0f506b1c455e5ce4312d27daeb98c10a608107d3 + :git: https://github.com/Alamofire/Alamofire.git AsyncSwift: :commit: e8e53f0fd39fabc226f4609d1c910c8af27a17cc :git: https://github.com/duemunk/Async.git ChameleonFramework: - :commit: 3f87b407bb84ad5e23a0ee8a2ef4023ebb62b00a + :commit: 5b51a317485339c3e6762cd7d2adb2b4c7481ca2 :git: https://github.com/ViccAlexander/Chameleon.git DGElasticPullToRefresh: :commit: 188a2ff3c498c81aa3a5fe1916c1f8ed15c85dda :git: https://github.com/gontovnik/DGElasticPullToRefresh.git DGRunkeeperSwitch: - :commit: 75829583f41c6eee1b86c66a0b2d947df70cc734 + :commit: aa5c3986905e7d5b320bf5c4499f9aef60201618 :git: https://github.com/gontovnik/DGRunkeeperSwitch.git EFCircularSlider: :commit: 6366f39721c33d0d457f17cc7f225d7795cea2da @@ -162,19 +159,16 @@ CHECKOUT OPTIONS: :commit: eac30313fee77f6db1b6832b1d4b7d8f2007b381 :git: https://github.com/PrideChung/FontAwesomeKit.git INTULocationManager: - :commit: 8e8402e8b4486e4a59581ed77efc928a2f727481 + :commit: 7741779256eae4fe727b027a046d6dcc7900566a :git: https://github.com/intuit/LocationManager.git Localize-Swift: - :commit: 9a2bc3a3749390bb92c40694a4da4829a9b602c4 + :commit: e3ce4b72c184dce8261a1cf35cb0875e55549e20 :git: https://github.com/marmelroy/Localize-Swift.git - Log: - :commit: 153e9c3d68031726f575bb255e3dc62267f4d1a1 - :git: https://github.com/delba/Log.git MRProgress: :commit: 0a9a8e9299c35f1ed1be0648910505fbd156e952 :git: https://github.com/RemyDCF/MRProgress.git NVActivityIndicatorView: - :commit: dfc0ea8b99e2be84548590f7786902c32c02098a + :commit: 49a0beb6a33eebc6cec322f05448516881615bf6 :git: https://github.com/ninjaprox/NVActivityIndicatorView.git Onboard: :git: https://github.com/mamaral/Onboard.git @@ -183,46 +177,41 @@ CHECKOUT OPTIONS: :commit: 8e7df5b5b676363b680a9fc0578ff232bcf8be5d :git: https://github.com/nickoneill/PermissionScope.git SCLAlertView: - :commit: 5824520fd0978c0ff5864639b6340d0d0abd8d5f + :commit: 58090eb84843bb4cea3a554eefbd8217e6a2ec13 :git: https://github.com/vikmeup/SCLAlertView-Swift.git SwiftDate: :commit: 0dd3a3c610f2147a92c834cb4bdb5d983dd5f37b :git: https://github.com/malcommac/SwiftDate.git - SwiftInAppPurchase: - :commit: 1080c4821443c5b71dff445a8c6c5b79f4bed2e4 - :git: https://github.com/rpzzzzzz/SwiftInAppPurchase.git - SwiftTweaks: - :commit: 88f8edd00c309afdd4490ce54c23bcc237802c8e - :git: https://github.com/Khan/SwiftTweaks.git + SwiftyBeaver: + :commit: 572c71899c772f22a7706e83ae92213237ef9940 + :git: https://github.com/SwiftyBeaver/SwiftyBeaver.git SwiftyJSON: - :commit: 2a5b70f06001316d4fb54501edc70b4084705da0 + :commit: 73670b94292b8d8496c398a973f56ac67789ba9f :git: https://github.com/SwiftyJSON/SwiftyJSON.git SPEC CHECKSUMS: AKPickerView-Swift: 8509d472bb257649383c276506334a7373d3cb33 - Alamofire: c19a627cefd6a95f840401c49ab1f124e07f54ee + Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c AsyncSwift: 15c496983f752a3ab8d1be17e64dd4c6f2a31239 ChameleonFramework: d21a3cc247abfe5e37609a283a8238b03575cf64 - Crashlytics: c3a2333dea9e2733d2777f730910321fc9e25c0d + Crashlytics: 130ab943f8c78cda7a814b434f270b2e2c8a3cba DGElasticPullToRefresh: 3129c558cd59d68f9c2472d79abcd68a49bcd345 DGRunkeeperSwitch: da12f199532a99958a1e87ec0a5af61efdba11ec EFCircularSlider: 8c9e901891fb813e89c4158508eefa8e35903454 Fabric: caf7580c725e64db144f610ac65cd60956911dc7 FontAwesomeKit: 3614979b3dbb0ec3f7fac1bd760b91f66c31db67 - FSCalendar: 04dc531f06fbde8a8e5b7394e9d4edebd45a591f + FSCalendar: 766367b91bcf2829c492c5ac50a58652c6df4ee8 INTULocationManager: 73f8254b3d05c897c56bb13c190e5b7c648c0998 - Localize-Swift: 584bcde9c6b13fcccb1333f398a46a0e60735e7a - Log: 5972312cb85cffbc56407b612936b610eb4af8a5 + Localize-Swift: 288aa763db72b0628d2cb111fbf5babc90529d0c MRProgress: b0c2bcff94ee700ac2aea810e1f51720c059cbd3 - NVActivityIndicatorView: b8207b369c012af32da0916a8346a56d16a5fbbe + NVActivityIndicatorView: 0084f6be71bdf4735b5424ebfb530b1e3db3276c Onboard: 4d92c763ed15f939071dec12e87ed9e8dc036746 PermissionScope: 860828c5516d349b6f49e5491799cfef33c5ccc7 - SCLAlertView: 653e84d1f9fd95333bc54671fbadb7d0c47fce49 + SCLAlertView: d7c6a48c7d340e60206d4ed0e8ebcbff3b9d2a44 SwiftDate: fa487d9b7d8c3070ea2553486902494f4915465d - SwiftInAppPurchase: e6d19c8a9d102635cb62fd9de7291eb6f3f0669e - SwiftTweaks: ac08b7565d90776a6668e37e60224a9daa1e9ba6 + SwiftyBeaver: c182c001d532111becf2285b8878abf54c7b5621 SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a -PODFILE CHECKSUM: a7106aefefacad5bbb4bc23c5be7c778bb25884d +PODFILE CHECKSUM: ef83cc600101fd8f5e6957cfa365b330a4325a07 -COCOAPODS: 1.0.0.rc.1 +COCOAPODS: 1.0.1 diff --git a/iOS/Pods/Alamofire/README.md b/iOS/Pods/Alamofire/README.md index 68e54e95..56a67716 100644 --- a/iOS/Pods/Alamofire/README.md +++ b/iOS/Pods/Alamofire/README.md @@ -70,7 +70,9 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! -pod 'Alamofire', '~> 3.4' +target '' do + pod 'Alamofire', '~> 3.4' +end ``` Then, run the following command: @@ -711,6 +713,20 @@ Requests can be suspended, resumed, and cancelled: ### Response Serialization +#### Handling Errors + +Before implementing custom response serializers or object serialization methods, it's important to be prepared to handle any errors that may occur. Alamofire recommends handling these through the use of either your own `NSError` creation methods, or a simple `enum` that conforms to `ErrorType`. For example, this `BackendError` type, which will be used in later examples: + +```swift +enum BackendError: ErrorType { + case Network(error: NSError) + case DataSerialization(reason: String) + case JSONSerialization(error: NSError) + case ObjectSerialization(reason: String) + case XMLSerialization(error: NSError) +} +``` + #### Creating a Custom Response Serializer Alamofire provides built-in response serialization for strings, JSON, and property lists, but others can be added in extensions on `Alamofire.Request`. @@ -719,26 +735,24 @@ For example, here's how a response handler using [Ono](https://github.com/mattt/ ```swift extension Request { - public static func XMLResponseSerializer() -> ResponseSerializer { + public static func XMLResponseSerializer() -> ResponseSerializer { return ResponseSerializer { request, response, data, error in - guard error == nil else { return .Failure(error!) } + guard error == nil else { return .Failure(.Network(error: error!)) } guard let validData = data else { - let failureReason = "Data could not be serialized. Input data was nil." - let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason) - return .Failure(error) + return .Failure(.DataSerialization(reason: "Data could not be serialized. Input data was nil.")) } do { let XML = try ONOXMLDocument(data: validData) return .Success(XML) } catch { - return .Failure(error as NSError) + return .Failure(.XMLSerialization(error: error as NSError)) } } } - public func responseXMLDocument(completionHandler: Response -> Void) -> Self { + public func responseXMLDocument(completionHandler: Response -> Void) -> Self { return response(responseSerializer: Request.XMLResponseSerializer(), completionHandler: completionHandler) } } @@ -754,9 +768,9 @@ public protocol ResponseObjectSerializable { } extension Request { - public func responseObject(completionHandler: Response -> Void) -> Self { - let responseSerializer = ResponseSerializer { request, response, data, error in - guard error == nil else { return .Failure(error!) } + public func responseObject(completionHandler: Response -> Void) -> Self { + let responseSerializer = ResponseSerializer { request, response, data, error in + guard error == nil else { return .Failure(.Network(error: error!)) } let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments) let result = JSONResponseSerializer.serializeResponse(request, response, data, error) @@ -769,12 +783,10 @@ extension Request { { return .Success(responseObject) } else { - let failureReason = "JSON could not be serialized into response object: \(value)" - let error = Error.errorWithCode(.JSONSerializationFailed, failureReason: failureReason) - return .Failure(error) + return .Failure(.ObjectSerialization(reason: "JSON could not be serialized into response object: \(value)")) } case .Failure(let error): - return .Failure(error) + return .Failure(.JSONSerialization(error: error)) } } @@ -797,7 +809,7 @@ final class User: ResponseObjectSerializable { ```swift Alamofire.request(.GET, "https://example.com/users/mattt") - .responseObject { (response: Response) in + .responseObject { (response: Response) in debugPrint(response) } ``` @@ -809,10 +821,26 @@ public protocol ResponseCollectionSerializable { static func collection(response response: NSHTTPURLResponse, representation: AnyObject) -> [Self] } +extension ResponseCollectionSerializable where Self: ResponseObjectSerializable { + static func collection(response response: NSHTTPURLResponse, representation: AnyObject) -> [Self] { + var collection = [Self]() + + if let representation = representation as? [[String: AnyObject]] { + for itemRepresentation in representation { + if let item = Self(response: response, representation: itemRepresentation) { + collection.append(item) + } + } + } + + return collection + } +} + extension Alamofire.Request { - public func responseCollection(completionHandler: Response<[T], NSError> -> Void) -> Self { - let responseSerializer = ResponseSerializer<[T], NSError> { request, response, data, error in - guard error == nil else { return .Failure(error!) } + public func responseCollection(completionHandler: Response<[T], BackendError> -> Void) -> Self { + let responseSerializer = ResponseSerializer<[T], BackendError> { request, response, data, error in + guard error == nil else { return .Failure(.Network(error: error!)) } let JSONSerializer = Request.JSONResponseSerializer(options: .AllowFragments) let result = JSONSerializer.serializeResponse(request, response, data, error) @@ -822,12 +850,10 @@ extension Alamofire.Request { if let response = response { return .Success(T.collection(response: response, representation: value)) } else { - let failureReason = "Response collection could not be serialized due to nil response" - let error = Error.errorWithCode(.JSONSerializationFailed, failureReason: failureReason) - return .Failure(error) + return .Failure(. ObjectSerialization(reason: "Response collection could not be serialized due to nil response")) } case .Failure(let error): - return .Failure(error) + return .Failure(.JSONSerialization(error: error)) } } @@ -845,26 +871,12 @@ final class User: ResponseObjectSerializable, ResponseCollectionSerializable { self.username = response.URL!.lastPathComponent! self.name = representation.valueForKeyPath("name") as! String } - - static func collection(response response: NSHTTPURLResponse, representation: AnyObject) -> [User] { - var users: [User] = [] - - if let representation = representation as? [[String: AnyObject]] { - for userRepresentation in representation { - if let user = User(response: response, representation: userRepresentation) { - users.append(user) - } - } - } - - return users - } } ``` ```swift Alamofire.request(.GET, "http://example.com/users") - .responseCollection { (response: Response<[User], NSError>) in + .responseCollection { (response: Response<[User], BackendError>) in debugPrint(response) } ``` @@ -944,7 +956,7 @@ enum Router: URLRequestConvertible { var URLRequest: NSMutableURLRequest { let result: (path: String, parameters: [String: AnyObject]) = { switch self { - case .Search(let query, let page) where page > 1: + case .Search(let query, let page) where page > 0: return ("/search", ["q": query, "offset": Router.perPage * page]) case .Search(let query, _): return ("/search", ["q": query]) @@ -1248,6 +1260,7 @@ There are some important things to remember when using network reachability to d The following rdars have some affect on the current implementation of Alamofire. * [rdar://21349340](http://www.openradar.me/radar?id=5517037090635776) - Compiler throwing warning due to toll-free bridging issue in test case +* [rdar://26761490](http://www.openradar.me/radar?id=5010235949318144) - Swift string interpolation causing memory leak with common usage ## FAQ @@ -1265,6 +1278,20 @@ Alamofire is owned and maintained by the [Alamofire Software Foundation](http:// If you believe you have identified a security vulnerability with Alamofire, you should report it as soon as possible via email to security@alamofire.org. Please do not post it to a public issue tracker. +## Donations + +The [ASF](https://github.com/Alamofire/Foundation#members) is looking to raise money to officially register as a federal non-profit organization. Registering will allow us members to gain some legal protections and also allow us to put donations to use, tax free. Donating to the ASF will enable us to: + +* Pay our legal fees to register as a federal non-profit organization +* Pay our yearly legal fees to keep the non-profit in good status +* Pay for our mail servers to help us stay on top of all questions and security issues +* Potentially fund test servers to make it easier for us to test the edge cases +* Potentially fund developers to work on one of our projects full-time + +The community adoption of the ASF libraries has been amazing. We are greatly humbled by your enthusiam around the projects, and want to continue to do everything we can to move the needle forward. With your continued support, the ASF will be able to improve its reach and also provide better legal safety for the core members. If you use any of our libraries for work, see if your employers would be interested in donating. Our initial goal is to raise $1000 to get all our legal ducks in a row and kickstart this campaign. Any amount you can donate today to help us reach our goal would be greatly appreciated. + +Click here to lend your support to: Alamofire Software Foundation and make a donation at pledgie.com ! + ## License Alamofire is released under the MIT license. See LICENSE for details. diff --git a/iOS/Pods/Alamofire/Source/Manager.swift b/iOS/Pods/Alamofire/Source/Manager.swift index 7b5f888b..691d31f6 100644 --- a/iOS/Pods/Alamofire/Source/Manager.swift +++ b/iOS/Pods/Alamofire/Source/Manager.swift @@ -61,14 +61,37 @@ public class Manager { let executable = info[kCFBundleExecutableKey as String] as? String ?? "Unknown" let bundle = info[kCFBundleIdentifierKey as String] as? String ?? "Unknown" let version = info[kCFBundleVersionKey as String] as? String ?? "Unknown" - let os = NSProcessInfo.processInfo().operatingSystemVersionString - var mutableUserAgent = NSMutableString(string: "\(executable)/\(bundle) (\(version); OS \(os))") as CFMutableString - let transform = NSString(string: "Any-Latin; Latin-ASCII; [:^ASCII:] Remove") as CFString + let osNameVersion: String = { + let versionString: String - if CFStringTransform(mutableUserAgent, UnsafeMutablePointer(nil), transform, false) { - return mutableUserAgent as String - } + if #available(OSX 10.10, *) { + let version = NSProcessInfo.processInfo().operatingSystemVersion + versionString = "\(version.majorVersion).\(version.minorVersion).\(version.patchVersion)" + } else { + versionString = "10.9" + } + + let osName: String = { + #if os(iOS) + return "iOS" + #elseif os(watchOS) + return "watchOS" + #elseif os(tvOS) + return "tvOS" + #elseif os(OSX) + return "OS X" + #elseif os(Linux) + return "Linux" + #else + return "Unknown" + #endif + }() + + return "\(osName) \(versionString)" + }() + + return "\(executable)/\(bundle) (\(version); \(osNameVersion))" } return "Alamofire" diff --git a/iOS/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/iOS/Pods/Alamofire/Source/NetworkReachabilityManager.swift index 949ed28b..1e5c7b03 100644 --- a/iOS/Pods/Alamofire/Source/NetworkReachabilityManager.swift +++ b/iOS/Pods/Alamofire/Source/NetworkReachabilityManager.swift @@ -116,32 +116,23 @@ public class NetworkReachabilityManager { } /** - Creates a `NetworkReachabilityManager` instance with the default socket IPv4 or IPv6 address. + Creates a `NetworkReachabilityManager` instance that monitors the address 0.0.0.0. + + Reachability treats the 0.0.0.0 address as a special token that causes it to monitor the general routing + status of the device, both IPv4 and IPv6. - returns: The new `NetworkReachabilityManager` instance. - */ + */ public convenience init?() { - if #available(iOS 9.0, OSX 10.10, *) { - var address = sockaddr_in6() - address.sin6_len = UInt8(sizeofValue(address)) - address.sin6_family = sa_family_t(AF_INET6) - - guard let reachability = withUnsafePointer(&address, { - SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) - }) else { return nil } - - self.init(reachability: reachability) - } else { - var address = sockaddr_in() - address.sin_len = UInt8(sizeofValue(address)) - address.sin_family = sa_family_t(AF_INET) - - guard let reachability = withUnsafePointer(&address, { - SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) - }) else { return nil } - - self.init(reachability: reachability) - } + var address = sockaddr_in() + address.sin_len = UInt8(sizeofValue(address)) + address.sin_family = sa_family_t(AF_INET) + + guard let reachability = withUnsafePointer(&address, { + SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) + }) else { return nil } + + self.init(reachability: reachability) } private init(reachability: SCNetworkReachability) { diff --git a/iOS/Pods/Alamofire/Source/ParameterEncoding.swift b/iOS/Pods/Alamofire/Source/ParameterEncoding.swift index bfa4d12a..32e63d9b 100644 --- a/iOS/Pods/Alamofire/Source/ParameterEncoding.swift +++ b/iOS/Pods/Alamofire/Source/ParameterEncoding.swift @@ -229,7 +229,7 @@ public enum ParameterEncoding { //========================================================================================================== // // Batching is required for escaping due to an internal bug in iOS 8.1 and 8.2. Encoding more than a few - // hundred Chinense characters causes various malloc error crashes. To avoid this issue until iOS 8 is no + // hundred Chinese characters causes various malloc error crashes. To avoid this issue until iOS 8 is no // longer supported, batching MUST be used for encoding. This introduces roughly a 20% overhead. For more // info, please refer to: // diff --git a/iOS/Pods/Alamofire/Source/Timeline.swift b/iOS/Pods/Alamofire/Source/Timeline.swift index 3610f15e..95936827 100644 --- a/iOS/Pods/Alamofire/Source/Timeline.swift +++ b/iOS/Pods/Alamofire/Source/Timeline.swift @@ -91,14 +91,16 @@ extension Timeline: CustomStringConvertible { let serializationDuration = String(format: "%.3f", self.serializationDuration) let totalDuration = String(format: "%.3f", self.totalDuration) + // NOTE: Had to move to string concatenation due to memory leak filed as rdar://26761490. Once memory leak is + // fixed, we should move back to string interpolation by reverting commit 7d4a43b1. let timings = [ - "\"Latency\": \(latency) secs", - "\"Request Duration\": \(requestDuration) secs", - "\"Serialization Duration\": \(serializationDuration) secs", - "\"Total Duration\": \(totalDuration) secs" + "\"Latency\": " + latency + " secs", + "\"Request Duration\": " + requestDuration + " secs", + "\"Serialization Duration\": " + serializationDuration + " secs", + "\"Total Duration\": " + totalDuration + " secs" ] - return "Timeline: { \(timings.joinWithSeparator(", ")) }" + return "Timeline: { " + timings.joinWithSeparator(", ") + " }" } } @@ -109,17 +111,28 @@ extension Timeline: CustomDebugStringConvertible { /// initial response time, the request completed time, the serialization completed time, the latency, the request /// duration and the total duration. public var debugDescription: String { + let requestStartTime = String(format: "%.3f", self.requestStartTime) + let initialResponseTime = String(format: "%.3f", self.initialResponseTime) + let requestCompletedTime = String(format: "%.3f", self.requestCompletedTime) + let serializationCompletedTime = String(format: "%.3f", self.serializationCompletedTime) + let latency = String(format: "%.3f", self.latency) + let requestDuration = String(format: "%.3f", self.requestDuration) + let serializationDuration = String(format: "%.3f", self.serializationDuration) + let totalDuration = String(format: "%.3f", self.totalDuration) + + // NOTE: Had to move to string concatenation due to memory leak filed as rdar://26761490. Once memory leak is + // fixed, we should move back to string interpolation by reverting commit 7d4a43b1. let timings = [ - "\"Request Start Time\": \(requestStartTime)", - "\"Initial Response Time\": \(initialResponseTime)", - "\"Request Completed Time\": \(requestCompletedTime)", - "\"Serialization Completed Time\": \(serializationCompletedTime)", - "\"Latency\": \(latency) secs", - "\"Request Duration\": \(requestDuration) secs", - "\"Serialization Duration\": \(serializationDuration) secs", - "\"Total Duration\": \(totalDuration) secs" + "\"Request Start Time\": " + requestStartTime, + "\"Initial Response Time\": " + initialResponseTime, + "\"Request Completed Time\": " + requestCompletedTime, + "\"Serialization Completed Time\": " + serializationCompletedTime, + "\"Latency\": " + latency + " secs", + "\"Request Duration\": " + requestDuration + " secs", + "\"Serialization Duration\": " + serializationDuration + " secs", + "\"Total Duration\": " + totalDuration + " secs" ] - return "Timeline: { \(timings.joinWithSeparator(", ")) }" + return "Timeline: { " + timings.joinWithSeparator(", ") + " }" } } diff --git a/iOS/Pods/ChameleonFramework/README.md b/iOS/Pods/ChameleonFramework/README.md index fe79d407..0925bbcf 100644 --- a/iOS/Pods/ChameleonFramework/README.md +++ b/iOS/Pods/ChameleonFramework/README.md @@ -3,9 +3,9 @@

- Downloads + Downloads Platform: iOS 8+ - Language: Swift 2 + Language: Swift Carthage compatible CocoaPods compatible License: MIT

@@ -158,6 +158,9 @@ All methods, properties, and types available in Chameleon are documented below. [● Theme Methods](https://github.com/ViccAlexander/Chameleon#theme-methods) ###Installation + +Swift 3 version maintained in a separate branch until it's release. + ####CocoaPods Installation Chameleon is now available on [CocoaPods](http://cocoapods.org). Simply add the following to your project Podfile, and you'll be good to go. diff --git a/iOS/Pods/Crashlytics/README.md b/iOS/Pods/Crashlytics/README.md index 226377d7..db7883d9 100644 --- a/iOS/Pods/Crashlytics/README.md +++ b/iOS/Pods/Crashlytics/README.md @@ -4,7 +4,7 @@ Part of [Twitter Fabric](https://www.fabric.io), [Crashlytics](http://try.crashl ## Setup -1. Visit https://fabric.io/sign_up to create your Fabric account and to download Fabric.app +1. Visit [https://fabric.io/sign_up](https://fabric.io/sign_up) to create your Fabric account and to download Fabric.app. 1. Open Fabric.app, login and select the Crashlytics SDK. @@ -16,8 +16,10 @@ Part of [Twitter Fabric](https://www.fabric.io), [Crashlytics](http://try.crashl 1. Select the Podfile option and follow the installation instructions to update your Podfile. **Note:** the Crashlytics Pod includes Answers. If you have Answers included as a separate Pod it should be removed from your Podfile to avoid duplicate symbol errors. - `pod 'Fabric'` - `pod 'Crashlytics'` + ``` + pod 'Fabric' + pod 'Crashlytics' + ``` 1. Run `pod install` diff --git a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics index 5cd0a33a..3079d388 100755 Binary files a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics and b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics differ diff --git a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSStackFrame.h b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSStackFrame.h index a9c0f296..cdb5596c 100644 --- a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSStackFrame.h +++ b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSStackFrame.h @@ -26,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)stackFrameWithSymbol:(NSString *)symbol; @property (nonatomic, copy, nullable) NSString *symbol; +@property (nonatomic, copy, nullable) NSString *rawSymbol; @property (nonatomic, copy, nullable) NSString *library; @property (nonatomic, copy, nullable) NSString *fileName; @property (nonatomic, assign) uint32_t lineNumber; diff --git a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/Crashlytics.h b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/Crashlytics.h index 6f2e3f63..34288f1b 100644 --- a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/Crashlytics.h +++ b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/Crashlytics.h @@ -18,7 +18,10 @@ NS_ASSUME_NONNULL_BEGIN @protocol CrashlyticsDelegate; /** - * Crashlytics. Handles configuration and initialization of Crashlytics. + * Crashlytics. Handles configuration and initialization of Crashlytics. + * + * Note: The Crashlytics class cannot be subclassed. If this is causing you pain for + * testing, we suggest using either a wrapper class or a protocol extension. */ @interface Crashlytics : NSObject diff --git a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist index add4126a..aa0f04fa 100644 Binary files a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist and b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist differ diff --git a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/submit b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/submit index e487d4db..1432b06e 100755 Binary files a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/submit and b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/submit differ diff --git a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM index c459eb08..31b45b68 100755 Binary files a/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM and b/iOS/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM differ diff --git a/iOS/Pods/Crashlytics/submit b/iOS/Pods/Crashlytics/submit index 96208a27..1432b06e 100755 Binary files a/iOS/Pods/Crashlytics/submit and b/iOS/Pods/Crashlytics/submit differ diff --git a/iOS/Pods/DGRunkeeperSwitch/DGRunkeeperSwitch/DGRunkeeperSwitch.swift b/iOS/Pods/DGRunkeeperSwitch/DGRunkeeperSwitch/DGRunkeeperSwitch.swift index b24c171d..096762fc 100644 --- a/iOS/Pods/DGRunkeeperSwitch/DGRunkeeperSwitch/DGRunkeeperSwitch.swift +++ b/iOS/Pods/DGRunkeeperSwitch/DGRunkeeperSwitch/DGRunkeeperSwitch.swift @@ -117,6 +117,7 @@ public class DGRunkeeperSwitch: UIControl { super.init(frame: frame) finishInit() + backgroundColor = .blackColor() // don't set background color in finishInit(), otherwise IB settings which are applied in init?(coder:) are overwritten } private func finishInit() { @@ -141,7 +142,6 @@ public class DGRunkeeperSwitch: UIControl { selectedTitleLabelsContentView.layer.mask = titleMaskView.layer // Setup defaul colors - backgroundColor = .blackColor() selectedBackgroundColor = .whiteColor() titleColor = .whiteColor() selectedTitleColor = .blackColor() @@ -275,4 +275,4 @@ extension DGRunkeeperSwitch: UIGestureRecognizerDelegate { return super.gestureRecognizerShouldBegin(gestureRecognizer) } -} \ No newline at end of file +} diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendar+DateTools.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar+DateTools.m new file mode 100644 index 00000000..ee4171b1 --- /dev/null +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar+DateTools.m @@ -0,0 +1,295 @@ +// +// FSCalendar+DateTools.m +// FSCalendar +// +// Created by dingwenchao on 4/29/16. +// Copyright © 2016 wenchaoios. All rights reserved. +// + +#import "FSCalendar.h" +#import "FSCalendarDynamicHeader.h" + +@implementation FSCalendar (DateTools) + +#pragma mark - Public methods + +- (NSInteger)yearOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitYear fromDate:date]; + return component.year; +} + +- (NSInteger)monthOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitMonth + fromDate:date]; + return component.month; +} + +- (NSInteger)dayOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitDay + fromDate:date]; + return component.day; +} + +- (NSInteger)weekdayOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; + return component.weekday; +} + +- (NSInteger)weekOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitWeekOfYear fromDate:date]; + return component.weekOfYear; +} + +- (NSInteger)hourOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitHour + fromDate:date]; + return component.hour; +} + +- (NSInteger)miniuteOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitMinute + fromDate:date]; + return component.minute; +} + +- (NSInteger)secondOfDate:(NSDate *)date +{ + NSDateComponents *component = [self.calendar components:NSCalendarUnitSecond + fromDate:date]; + return component.second; +} + +- (NSInteger)numberOfRowsInMonth:(NSDate *)month +{ + if (!month) return 0; + if (self.showsPlaceholders) return 6; + NSDate *firstDayOfMonth = [self beginingOfMonthOfDate:month]; + NSInteger weekdayOfFirstDay = [self weekdayOfDate:firstDayOfMonth]; + NSInteger numberOfDaysInMonth = [self numberOfDatesInMonthOfDate:month]; + NSInteger numberOfPlaceholdersForPrev = ((weekdayOfFirstDay - self.firstWeekday) + 7) % 7; + NSInteger headDayCount = numberOfDaysInMonth + numberOfPlaceholdersForPrev; + NSInteger numberOfRows = (headDayCount/7) + (headDayCount%7>0); + return numberOfRows; +} + +- (NSDate *)dateByIgnoringTimeComponentsOfDate:(NSDate *)date +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; + components.hour = FSCalendarDefaultHourComponent; + return [self.calendar dateFromComponents:components]; +} + +- (NSDate *)beginingOfMonthOfDate:(NSDate *)date +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; + components.day = 1; + return [self.calendar dateFromComponents:components]; +} + +- (NSDate *)endOfMonthOfDate:(NSDate *)date +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; + components.month++; + components.day = 0; + return [self.calendar dateFromComponents:components]; +} + +- (NSDate *)beginingOfWeekOfDate:(NSDate *)date +{ + NSDateComponents *weekdayComponents = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; + NSDateComponents *componentsToSubtract = self.components; + componentsToSubtract.day = - (weekdayComponents.weekday - self.calendar.firstWeekday); + componentsToSubtract.day = (componentsToSubtract.day-7) % 7; + NSDate *beginningOfWeek = [self.calendar dateByAddingComponents:componentsToSubtract toDate:date options:0]; + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:beginningOfWeek]; + beginningOfWeek = [self.calendar dateFromComponents:components]; + componentsToSubtract.day = NSIntegerMax; + return beginningOfWeek; +} + +- (NSDate *)middleOfWeekFromDate:(NSDate *)date +{ + NSDateComponents *weekdayComponents = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; + NSDateComponents *componentsToSubtract = self.components; + componentsToSubtract.day = - (weekdayComponents.weekday - self.calendar.firstWeekday) + 3; + NSDate *middleOfWeek = [self.calendar dateByAddingComponents:componentsToSubtract toDate:date options:0]; + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:middleOfWeek]; + middleOfWeek = [self.calendar dateFromComponents:components]; + componentsToSubtract.day = NSIntegerMax; + return middleOfWeek; +} + +- (NSDate *)tomorrowOfDate:(NSDate *)date +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; + components.day++; + components.hour = FSCalendarDefaultHourComponent; + return [self.calendar dateFromComponents:components]; +} + +- (NSDate *)yesterdayOfDate:(NSDate *)date +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; + components.day--; + components.hour = FSCalendarDefaultHourComponent; + return [self.calendar dateFromComponents:components]; +} + +- (NSInteger)numberOfDatesInMonthOfDate:(NSDate *)date +{ + NSRange days = [self.calendar rangeOfUnit:NSCalendarUnitDay + inUnit:NSCalendarUnitMonth + forDate:date]; + return days.length; +} + +- (NSDate *)dateFromString:(NSString *)string format:(NSString *)format +{ + self.formatter.dateFormat = format; + return [self.formatter dateFromString:string]; +} + +- (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day +{ + NSDateComponents *components = self.components; + components.year = year; + components.month = month; + components.day = day; + components.hour = FSCalendarDefaultHourComponent; + NSDate *date = [self.calendar dateFromComponents:components]; + components.year = NSIntegerMax; + components.month = NSIntegerMax; + components.day = NSIntegerMax; + components.hour = NSIntegerMax; + return date; +} + +- (NSDate *)dateByAddingYears:(NSInteger)years toDate:(NSDate *)date +{ + NSDateComponents *components = self.components; + components.year = years; + NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; + components.year = NSIntegerMax; + return d; +} + +- (NSDate *)dateBySubstractingYears:(NSInteger)years fromDate:(NSDate *)date +{ + return [self dateByAddingYears:-years toDate:date]; +} + +- (NSDate *)dateByAddingMonths:(NSInteger)months toDate:(NSDate *)date +{ + NSDateComponents *components = self.components; + components.month = months; + NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; + components.month = NSIntegerMax; + return d; +} + +- (NSDate *)dateBySubstractingMonths:(NSInteger)months fromDate:(NSDate *)date +{ + return [self dateByAddingMonths:-months toDate:date]; +} + +- (NSDate *)dateByAddingWeeks:(NSInteger)weeks toDate:(NSDate *)date +{ + NSDateComponents *components = self.components; + components.weekOfYear = weeks; + NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; + components.weekOfYear = NSIntegerMax; + return d; +} + +- (NSDate *)dateBySubstractingWeeks:(NSInteger)weeks fromDate:(NSDate *)date +{ + return [self dateByAddingWeeks:-weeks toDate:date]; +} + +- (NSDate *)dateByAddingDays:(NSInteger)days toDate:(NSDate *)date +{ + NSDateComponents *components = self.components; + components.day = days; + NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; + components.day = NSIntegerMax; + return d; +} + +- (NSDate *)dateBySubstractingDays:(NSInteger)days fromDate:(NSDate *)date +{ + return [self dateByAddingDays:-days toDate:date]; +} + +- (NSInteger)yearsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitYear + fromDate:fromDate + toDate:toDate + options:0]; + return components.year; +} + +- (NSInteger)monthsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitMonth + fromDate:fromDate + toDate:toDate + options:0]; + return components.month; +} + +- (NSInteger)weeksFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitWeekOfYear + fromDate:fromDate + toDate:toDate + options:0]; + return components.weekOfYear; +} + +- (NSInteger)daysFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate +{ + NSDateComponents *components = [self.calendar components:NSCalendarUnitDay + fromDate:fromDate + toDate:toDate + options:0]; + return components.day; +} + +- (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 toCalendarUnit:(FSCalendarUnit)unit +{ + switch (unit) { + case FSCalendarUnitMonth: + return [self yearOfDate:date1] == [self yearOfDate:date2] && [self monthOfDate:date1] == [self monthOfDate:date2]; + case FSCalendarUnitWeekOfYear: + return [self yearOfDate:date1] == [self yearOfDate:date2] && [self weekOfDate:date1] == [self weekOfDate:date2]; + case FSCalendarUnitDay: + return [self yearOfDate:date1] == [self yearOfDate:date2] && [self monthOfDate:date1] == [self monthOfDate:date2] && [self dayOfDate:date1] == [self dayOfDate:date2]; + } + return NO; +} + +- (BOOL)isDateInToday:(NSDate *)date +{ + return [self isDate:date equalToDate:self.today toCalendarUnit:FSCalendarUnitDay]; +} + +- (NSString *)stringFromDate:(NSDate *)date format:(NSString *)format +{ + self.formatter.dateFormat = format; + return [self.formatter stringFromDate:date]; +} + +- (NSString *)stringFromDate:(NSDate *)date +{ + return [self stringFromDate:date format:@"yyyy-MM-dd"]; +} + +@end diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendar+Deprecated.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar+Deprecated.m new file mode 100644 index 00000000..c13c913a --- /dev/null +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar+Deprecated.m @@ -0,0 +1,61 @@ +// +// FSCalendar+Deprecated.m +// FSCalendar +// +// Created by dingwenchao on 4/29/16. +// Copyright © 2016 wenchaoios. All rights reserved. +// + +#import "FSCalendar.h" +#import "FSCalendarDynamicHeader.h" + +#pragma mark - Deprecate + +@implementation FSCalendar (Deprecated) + +- (void)setCurrentMonth:(NSDate *)currentMonth +{ + self.currentPage = currentMonth; +} + +- (NSDate *)currentMonth +{ + return self.currentPage; +} + +- (void)setFlow:(FSCalendarFlow)flow +{ + self.scrollDirection = (FSCalendarScrollDirection)flow; +} + +- (FSCalendarFlow)flow +{ + return (FSCalendarFlow)self.scrollDirection; +} + +- (void)setSelectedDate:(NSDate *)selectedDate +{ + [self selectDate:selectedDate]; +} + +- (void)setSelectedDate:(NSDate *)selectedDate animate:(BOOL)animate +{ + [self selectDate:selectedDate scrollToDate:animate]; +} + +- (BOOL)date:(NSDate *)date sharesSameMonthWithDate:(NSDate *)anotherDate +{ + return [self yearOfDate:date] == [self yearOfDate:anotherDate] && [self monthOfDate:date] == [self monthOfDate:anotherDate]; +} + +- (BOOL)date:(NSDate *)date sharesSameWeekWithDate:(NSDate *)anotherDate +{ + return [self yearOfDate:date] == [self yearOfDate:anotherDate] && [self weekOfDate:date] == [self weekOfDate:anotherDate]; +} + +- (BOOL)date:(NSDate *)date sharesSameDayWithDate:(NSDate *)anotherDate +{ + return [self yearOfDate:date] == [self yearOfDate:anotherDate] && [self monthOfDate:date] == [self monthOfDate:anotherDate] && [self dayOfDate:date] == [self dayOfDate:anotherDate]; +} + +@end diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.h b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.h index 71e2e501..ba6c61f2 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.h +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.h @@ -7,23 +7,22 @@ // // https://github.com/WenchaoD // +// +// FSCalendar is a superior awesome calendar control with high performance, high customizablility and very simple usage. +// +// @warning All NSDate instances used in the calendar should be managed by the DateTools category. See FSCalendar+DateTools. +// +// @see FSCalendarDataSource +// @see FSCalendarDelegate +// @see FSCalendarDelegateAppearance +// @see FSCalendarAppearance +// @see FSCalendar+DateTools +// #import #import "FSCalendarAppearance.h" #import "FSCalendarConstance.h" -/** - * FSCalendar is a superior awesome calendar control with high performance, high customizablility and very simple usage. - * - * @warning All NSDate instances used in the calendar should be managed by the DateTools category. See FSCalendar+DateTools. - * - * @see FSCalendarDataSource - * @see FSCalendarDelegate - * @see FSCalendarDelegateAppearance - * @see FSCalendarAppearance - * @see FSCalendar+DateTools - */ - //! Project version number for FSCalendar. FOUNDATION_EXPORT double FSCalendarVersionNumber; @@ -57,6 +56,11 @@ NS_ASSUME_NONNULL_BEGIN @optional +/** + * Asks the dataSource for a title for the specific date as a replacement of the day text + */ +- (nullable NSString *)calendar:(FSCalendar *)calendar titleForDate:(NSDate *)date; + /** * Asks the dataSource for a subtitle for the specific date under the day text. */ @@ -319,6 +323,17 @@ IB_DESIGNABLE */ @property (assign, nonatomic) IBInspectable BOOL showsPlaceholders; +/** + * A Boolean value that determines whether the calendar should show a handle for control the scope. Default is NO; + */ +@property (assign, nonatomic) IBInspectable BOOL showsScopeHandle; + + +/** + * The multiplier of line height while paging enabled is NO. Default is 1.0; + */ +@property (assign, nonatomic) IBInspectable CGFloat lineHeightMultiplier; + /** * The calendar appearance used to control the global fonts、colors .etc */ diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.m index 7505e4c3..1d0730c7 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendar.m @@ -12,9 +12,9 @@ #import "FSCalendarCell.h" #import "FSCalendarFlowLayout.h" #import "FSCalendarAnimator.h" +#import "FSCalendarScopeHandle.h" #import "UIView+FSExtension.h" -#import "NSString+FSExtension.h" #import "FSCalendarDynamicHeader.h" #import "FSCalendarCollectionView.h" @@ -26,6 +26,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { @interface FSCalendar (DataSourceAndDelegate) - (NSInteger)numberOfEventsForDate:(NSDate *)date; +- (NSString *)titleForDate:(NSDate *)date; - (NSString *)subtitleForDate:(NSDate *)date; - (UIImage *)imageForDate:(NSDate *)date; - (NSDate *)minimumDateForCalendar; @@ -50,11 +51,9 @@ - (BOOL)boundingRectWillChange:(BOOL)animated; @end -@interface FSCalendar () +@interface FSCalendar () { NSMutableArray *_selectedDates; - NSDate *_minimumDate; - NSDate *_maximumDate; } @property (strong, nonatomic) NSMutableArray *weekdays; @property (strong, nonatomic) NSMapTable *stickyHeaderMapTable; @@ -69,6 +68,7 @@ @interface FSCalendar () @property (weak , nonatomic) CAShapeLayer *maskLayer; @property (weak , nonatomic) UIView *topBorder; @property (weak , nonatomic) UIView *bottomBorder; +@property (weak , nonatomic) FSCalendarScopeHandle *scopeHandle; @property (weak , nonatomic) FSCalendarCollectionView *collectionView; @property (weak , nonatomic) FSCalendarFlowLayout *collectionViewLayout; @property (strong, nonatomic) FSCalendarAnimator *animator; @@ -171,6 +171,7 @@ - (void)initialize _firstWeekday = 1; [self invalidateDateTools]; + #if TARGET_INTERFACE_BUILDER _minimumDate = [self beginingOfMonthOfDate:[NSDate date]]; _maximumDate = [self dateByAddingMonths:4 toDate:_minimumDate]; @@ -186,6 +187,7 @@ - (void)initialize _preferredHeaderHeight = FSCalendarAutomaticDimension; _preferredWeekdayHeight = FSCalendarAutomaticDimension; _preferredRowHeight = FSCalendarAutomaticDimension; + _lineHeightMultiplier = 1.0; _scrollDirection = FSCalendarScrollDirectionHorizontal; _scope = FSCalendarScopeMonth; @@ -215,6 +217,7 @@ - (void)initialize UIView *daysContainer = [[UIView alloc] initWithFrame:CGRectZero]; daysContainer.backgroundColor = [UIColor clearColor]; + daysContainer.clipsToBounds = YES; [contentView addSubview:daysContainer]; self.daysContainer = daysContainer; @@ -241,12 +244,12 @@ - (void)initialize self.collectionViewLayout = collectionViewLayout; UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; - view.backgroundColor = [[UIColor lightGrayColor] colorWithAlphaComponent:0.25]; + view.backgroundColor = FSCalendarStandardSeparatorColor; [self addSubview:view]; self.topBorder = view; view = [[UIView alloc] initWithFrame:CGRectZero]; - view.backgroundColor = _topBorder.backgroundColor; + view.backgroundColor = FSCalendarStandardSeparatorColor; [self addSubview:view]; self.bottomBorder = view; @@ -290,20 +293,31 @@ - (void)setFrame:(CGRect)frame - (void)layoutSubviews { [super layoutSubviews]; + _supressEvent = YES; if (_needsAdjustingViewFrame) { + if (CGSizeEqualToSize(_animator.cachedMonthSize, CGSizeZero)) { + _animator.cachedMonthSize = self.frame.size; + } + BOOL needsAdjustingBoundingRect = self.scope == FSCalendarScopeMonth && !_showsPlaceholders && !self.hasValidateVisibleLayout; - _contentView.frame = self.bounds; + if (_scopeHandle) { + CGFloat scopeHandleHeight = self.animator.cachedMonthSize.height*0.08; + _contentView.frame = CGRectMake(0, 0, self.fs_width, self.fs_height-scopeHandleHeight); + _scopeHandle.frame = CGRectMake(0, _contentView.fs_bottom, self.fs_width, scopeHandleHeight); + } else { + _contentView.frame = self.bounds; + } if (_needsLayoutForWeekMode) _scope = FSCalendarScopeMonth; CGFloat headerHeight = self.preferredHeaderHeight; CGFloat weekdayHeight = self.preferredWeekdayHeight; CGFloat rowHeight = self.preferredRowHeight; - CGFloat weekdayWidth = self.contentView.fs_width/_weekdays.count; + CGFloat weekdayWidth = self.fs_width/_weekdays.count; CGFloat padding = weekdayHeight*0.1; if (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { padding = FSCalendarFloor(padding); @@ -326,8 +340,9 @@ - (void)layoutSubviews switch (_scope) { case FSCalendarScopeMonth: { CGFloat contentHeight = rowHeight*6 + padding*2; - _daysContainer.frame = CGRectMake(0, headerHeight+weekdayHeight, self.fs_width, contentHeight); - _collectionView.frame = _daysContainer.bounds; + CGFloat currentHeight = rowHeight*[self numberOfRowsInMonth:self.currentPage] + padding*2; + _daysContainer.frame = CGRectMake(0, headerHeight+weekdayHeight, self.fs_width, currentHeight); + _collectionView.frame = CGRectMake(0, 0, _daysContainer.fs_width, contentHeight); if (needsAdjustingBoundingRect) { self.animator.state = FSCalendarTransitionStateInProgress; [self boundingRectWillChange:NO]; @@ -338,7 +353,7 @@ - (void)layoutSubviews case FSCalendarScopeWeek: { CGFloat contentHeight = rowHeight + padding*2; _daysContainer.frame = CGRectMake(0, headerHeight+weekdayHeight, self.fs_width, contentHeight); - _collectionView.frame = _daysContainer.bounds; + _collectionView.frame = CGRectMake(0, 0, _daysContainer.fs_width, contentHeight); break; } } @@ -351,6 +366,7 @@ - (void)layoutSubviews } _topBorder.frame = CGRectMake(0, -1, self.fs_width, 1); _bottomBorder.frame = CGRectMake(0, self.fs_height, self.fs_width, 1); + _scopeHandle.fs_bottom = _bottomBorder.fs_top; } if (_needsAdjustingTextSize) { @@ -366,10 +382,10 @@ - (void)layoutSubviews if (_needsAdjustingMonthPosition) { _needsAdjustingMonthPosition = NO; _supressEvent = NO; - BOOL oldValue = [CATransaction disableActions]; + [CATransaction begin]; [CATransaction setDisableActions:YES]; [self scrollToPageForDate:_pagingEnabled?_currentPage:(_currentPage?:self.selectedDate) animated:NO]; - [CATransaction setDisableActions:oldValue]; + [CATransaction commit]; } } @@ -382,12 +398,12 @@ - (void)layoutSublayersOfLayer:(CALayer *)layer [super layoutSublayersOfLayer:layer]; if (layer == self.layer) { if (_needsAdjustingViewFrame) { - _needsAdjustingViewFrame = NO; - CGSize size = [self sizeThatFits:self.frame.size]; _maskLayer.frame = self.bounds; _maskLayer.path = [UIBezierPath bezierPathWithRect:(CGRect){CGPointZero,size}].CGPath; - + dispatch_async(dispatch_get_main_queue(), ^{ + _needsAdjustingViewFrame = NO; + }); } } } @@ -426,10 +442,12 @@ - (CGSize)sizeThatFits:(CGSize)size scope:(FSCalendarScope)scope switch (scope) { case FSCalendarScopeMonth: { CGFloat height = weekdayHeight + headerHeight + [self numberOfRowsInMonth:_currentPage]*rowHeight + paddings; + height += _scopeHandle.fs_height; return CGSizeMake(size.width, height); } case FSCalendarScopeWeek: { CGFloat height = weekdayHeight + headerHeight + rowHeight + paddings; + height += _scopeHandle.fs_height; return CGSizeMake(size.width, height); } } @@ -493,8 +511,8 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView [stickyHeader setNeedsLayout]; NSArray *allKeys = [_stickyHeaderMapTable.dictionaryRepresentation allKeysForObject:stickyHeader]; if (allKeys.count) { - [allKeys enumerateObjectsUsingBlock:^(NSIndexPath *indexPath, NSUInteger idx, BOOL *stop) { - [_stickyHeaderMapTable removeObjectForKey:indexPath]; + [allKeys enumerateObjectsUsingBlock:^(NSIndexPath *itemIndexPath, NSUInteger idx, BOOL *stop) { + [_stickyHeaderMapTable removeObjectForKey:itemIndexPath]; }]; } [_stickyHeaderMapTable setObject:stickyHeader forKey:indexPath]; @@ -671,29 +689,49 @@ - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoi break; } } - BOOL shouldTriggerPageChange = ((pannedOffset < 0 && targetOffset > currentOffset) || - (pannedOffset > 0 && targetOffset < currentOffset)) && _minimumDate; + + NSDate *targetPage = nil; + switch (_scope) { + case FSCalendarScopeMonth: { + NSDate *minimumPage = [self beginingOfMonthOfDate:_minimumDate]; + targetPage = [self dateByAddingMonths:targetOffset/contentSize toDate:minimumPage]; + break; + } + case FSCalendarScopeWeek: { + NSDate *minimumPage = [self beginingOfWeekOfDate:_minimumDate]; + targetPage = [self dateByAddingWeeks:targetOffset/contentSize toDate:minimumPage]; + break; + } + } + BOOL shouldTriggerPageChange = [self isDateInDifferentPage:targetPage]; if (shouldTriggerPageChange) { NSDate *lastPage = _currentPage; [self willChangeValueForKey:@"currentPage"]; - switch (_scope) { - case FSCalendarScopeMonth: { - NSDate *minimumPage = [self beginingOfMonthOfDate:_minimumDate]; - _currentPage = [self dateByAddingMonths:targetOffset/contentSize toDate:minimumPage]; - break; - } - case FSCalendarScopeWeek: { - NSDate *minimumPage = [self beginingOfWeekOfDate:_minimumDate]; - _currentPage = [self dateByAddingWeeks:targetOffset/contentSize toDate:minimumPage]; - break; - } - } + _currentPage = targetPage; [self currentPageDidChange]; - if (!_showsPlaceholders && self.animator.state == FSCalendarTransitionStateIdle) { + if (!_showsPlaceholders) { [self.animator performBoudingRectTransitionFromMonth:lastPage toMonth:_currentPage duration:0.25]; } [self didChangeValueForKey:@"currentPage"]; } + + // Disable all inner gestures to avoid missing event + [scrollView.gestureRecognizers enumerateObjectsUsingBlock:^(__kindof UIGestureRecognizer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj != scrollView.panGestureRecognizer) { + obj.enabled = NO; + } + }]; + +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView +{ + // Recover all disabled gestures + [scrollView.gestureRecognizers enumerateObjectsUsingBlock:^(__kindof UIGestureRecognizer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj != scrollView.panGestureRecognizer) { + obj.enabled = YES; + } + }]; } #pragma mark - Notification @@ -705,18 +743,6 @@ - (void)orientationDidChange:(NSNotification *)notification #pragma mark - Properties -- (void)setAppearance:(FSCalendarAppearance *)appearance -{ - if (_appearance != appearance) { - _appearance = appearance; - } -} - -- (FSCalendarAppearance *)appearance -{ - return _appearance; -} - - (void)setScrollDirection:(FSCalendarScrollDirection)scrollDirection { if (_scrollDirection != scrollDirection) { @@ -968,11 +994,12 @@ - (CGFloat)preferredHeaderHeight if (_headerHeight == FSCalendarAutomaticDimension) { if (_preferredWeekdayHeight == FSCalendarAutomaticDimension) { if (!self.floatingMode) { - CGFloat divider = _scope == FSCalendarScopeMonth ? FSCalendarStandardMonthlyPageHeight : FSCalendarStandardWeeklyPageHeight; - _preferredHeaderHeight = (FSCalendarStandardHeaderHeight/divider)*self.fs_height; + CGFloat divider = FSCalendarStandardMonthlyPageHeight; + CGFloat contentHeight = self.animator.cachedMonthSize.height*(1-_showsScopeHandle*0.08); + _preferredHeaderHeight = (FSCalendarStandardHeaderHeight/divider)*contentHeight; _preferredHeaderHeight -= (_preferredHeaderHeight-FSCalendarStandardHeaderHeight)*0.5; } else { - _preferredHeaderHeight = FSCalendarStandardHeaderHeight*MAX(1, FSCalendarDeviceIsIPad*1.5); + _preferredHeaderHeight = FSCalendarStandardHeaderHeight*MAX(1, FSCalendarDeviceIsIPad*1.5)*_lineHeightMultiplier; } } return _preferredHeaderHeight; @@ -985,10 +1012,11 @@ - (CGFloat)preferredWeekdayHeight if (_weekdayHeight == FSCalendarAutomaticDimension) { if (_preferredWeekdayHeight == FSCalendarAutomaticDimension) { if (!self.floatingMode) { - CGFloat divider = _scope == FSCalendarScopeMonth ? FSCalendarStandardMonthlyPageHeight : FSCalendarStandardWeeklyPageHeight; - _preferredWeekdayHeight = (FSCalendarStandardWeekdayHeight/divider)*self.fs_height; + CGFloat divider = FSCalendarStandardMonthlyPageHeight; + CGFloat contentHeight = self.animator.cachedMonthSize.height*(1-_showsScopeHandle*0.08); + _preferredWeekdayHeight = (FSCalendarStandardWeekdayHeight/divider)*contentHeight; } else { - _preferredWeekdayHeight = FSCalendarStandardWeekdayHeight*MAX(1, FSCalendarDeviceIsIPad*1.5); + _preferredWeekdayHeight = FSCalendarStandardWeekdayHeight*MAX(1, FSCalendarDeviceIsIPad*1.5)*_lineHeightMultiplier; } } return _preferredWeekdayHeight; @@ -1001,24 +1029,15 @@ - (CGFloat)preferredRowHeight if (_preferredRowHeight == FSCalendarAutomaticDimension) { CGFloat headerHeight = self.preferredHeaderHeight; CGFloat weekdayHeight = self.preferredWeekdayHeight; - CGFloat contentHeight = self.fs_height-headerHeight-weekdayHeight; + CGFloat contentHeight = self.animator.cachedMonthSize.height-headerHeight-weekdayHeight-_scopeHandle.fs_height; CGFloat padding = weekdayHeight*0.1; if (self.collectionViewLayout.scrollDirection == UICollectionViewScrollDirectionHorizontal) { padding = FSCalendarFloor(padding); } if (!self.floatingMode) { - switch (_scope) { - case FSCalendarScopeMonth: { - _preferredRowHeight = _showsPlaceholders ? (contentHeight-padding*2)/6.0 : FSCalendarStandardRowHeight; - break; - } - case FSCalendarScopeWeek: { - _preferredRowHeight = _showsPlaceholders ? contentHeight-padding*2 : FSCalendarStandardRowHeight; - break; - } - } + _preferredRowHeight = _showsPlaceholders ? (contentHeight-padding*2)/6.0 : FSCalendarStandardRowHeight; } else { - _preferredRowHeight = FSCalendarStandardRowHeight*MAX(1, FSCalendarDeviceIsIPad*1.5); + _preferredRowHeight = FSCalendarStandardRowHeight*MAX(1, FSCalendarDeviceIsIPad*1.5)*_lineHeightMultiplier; } } return _preferredRowHeight; @@ -1037,7 +1056,15 @@ - (BOOL)floatingMode return _scrollEnabled && !_pagingEnabled; } -#pragma mark - Public +- (void)setShowsScopeHandle:(BOOL)showsScopeHandle +{ + if (_showsScopeHandle != showsScopeHandle) { + _showsScopeHandle = showsScopeHandle; + [self invalidateLayout]; + } +} + +#pragma mark - Public methods - (void)reloadData { @@ -1102,6 +1129,11 @@ - (void)setShowsPlaceholders:(BOOL)showsPlaceholders } } +- (void)setLineHeightMultiplier:(CGFloat)lineHeightMultiplier +{ + _lineHeightMultiplier = MAX(0, lineHeightMultiplier); +} + - (void)selectDate:(NSDate *)date { [self selectDate:date scrollToDate:YES]; @@ -1469,6 +1501,23 @@ - (void)invalidateLayout } } + if (self.showsScopeHandle) { + if (!_scopeHandle) { + FSCalendarScopeHandle *handle = [[FSCalendarScopeHandle alloc] initWithFrame:CGRectZero]; + handle.delegate = self.animator; + [self addSubview:handle]; + self.scopeHandle = handle; + _needsAdjustingViewFrame = YES; + [self setNeedsLayout]; + } + } else { + if (_scopeHandle) { + [self.scopeHandle removeFromSuperview]; + _needsAdjustingViewFrame = YES; + [self setNeedsLayout]; + } + } + _collectionView.pagingEnabled = YES; _collectionViewLayout.scrollDirection = (UICollectionViewScrollDirection)self.scrollDirection; @@ -1482,6 +1531,10 @@ - (void)invalidateLayout [_weekdays removeAllObjects]; } + if (_scopeHandle) { + [_scopeHandle removeFromSuperview]; + } + _collectionView.pagingEnabled = NO; _collectionViewLayout.scrollDirection = UICollectionViewScrollDirectionVertical; @@ -1542,6 +1595,7 @@ - (void)reloadDataForCell:(FSCalendarCell *)cell atIndexPath:(NSIndexPath *)inde cell.date = [self dateForIndexPath:indexPath]; cell.image = [self imageForDate:cell.date]; cell.numberOfEvents = [self numberOfEventsForDate:cell.date]; + cell.title = [self titleForDate:cell.date]; cell.subtitle = [self subtitleForDate:cell.date]; cell.dateIsSelected = [_selectedDates containsObject:cell.date]; cell.dateIsToday = [self isDateInToday:cell.date]; @@ -1583,6 +1637,7 @@ - (void)reloadVisibleCells - (void)selectCounterpartDate:(NSDate *)date { + if (!_showsPlaceholders) return; if (!self.floatingMode) { [_collectionView.visibleCells enumerateObjectsUsingBlock:^(FSCalendarCell *cell, NSUInteger idx, BOOL *stop) { if (cell.dateIsPlaceholder && [self isDate:cell.date equalToDate:date toCalendarUnit:FSCalendarUnitDay] && !cell.dateIsSelected) { @@ -1596,6 +1651,7 @@ - (void)selectCounterpartDate:(NSDate *)date - (void)deselectCounterpartDate:(NSDate *)date { + if (!_showsPlaceholders) return; if (self.floatingMode) { [_collectionView.visibleCells enumerateObjectsUsingBlock:^(FSCalendarCell *cell, NSUInteger index, BOOL *stop) { if (cell.dateIsPlaceholder && cell.dateIsSelected) { @@ -1656,6 +1712,8 @@ - (void)invalidateViewFrames [self.collectionView.visibleCells setValue:@YES forKey:@"needsAdjustingViewFrame"]; self.header.needsAdjustingViewFrame = YES; [self.appearance invalidateFonts]; + [self.collectionViewLayout invalidateLayout]; + [self setNeedsLayout]; } // The best way to detect orientation @@ -1857,6 +1915,14 @@ - (BOOL)boundingRectWillChange:(BOOL)animated #pragma mark - DataSource +- (NSString *)titleForDate:(NSDate *)date +{ + if (_dataSource && [_dataSource respondsToSelector:@selector(calendar:titleForDate:)]) { + return [_dataSource calendar:self titleForDate:date]; + } + return nil; +} + - (NSString *)subtitleForDate:(NSDate *)date { #if !TARGET_INTERFACE_BUILDER @@ -1938,342 +2004,3 @@ - (NSDate *)maximumDateForCalendar @end -#pragma mark - DateTools - - -@implementation FSCalendar (DateTools) - -#pragma mark - Public methods - -- (NSInteger)yearOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitYear fromDate:date]; - return component.year; -} - -- (NSInteger)monthOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitMonth - fromDate:date]; - return component.month; -} - -- (NSInteger)dayOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitDay - fromDate:date]; - return component.day; -} - -- (NSInteger)weekdayOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; - return component.weekday; -} - -- (NSInteger)weekOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitWeekOfYear fromDate:date]; - return component.weekOfYear; -} - -- (NSInteger)hourOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitHour - fromDate:date]; - return component.hour; -} - -- (NSInteger)miniuteOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitMinute - fromDate:date]; - return component.minute; -} - -- (NSInteger)secondOfDate:(NSDate *)date -{ - NSDateComponents *component = [self.calendar components:NSCalendarUnitSecond - fromDate:date]; - return component.second; -} - -- (NSInteger)numberOfRowsInMonth:(NSDate *)month -{ - if (!month) return 0; - if (self.showsPlaceholders) return 6; - NSDate *firstDayOfMonth = [self beginingOfMonthOfDate:month]; - NSInteger weekdayOfFirstDay = [self weekdayOfDate:firstDayOfMonth]; - NSInteger numberOfDaysInMonth = [self numberOfDatesInMonthOfDate:month]; - NSInteger numberOfPlaceholdersForPrev = ((weekdayOfFirstDay - _firstWeekday) + 7) % 7; - NSInteger headDayCount = numberOfDaysInMonth + numberOfPlaceholdersForPrev; - NSInteger numberOfRows = (headDayCount/7) + (headDayCount%7>0); - return numberOfRows; -} - -- (NSDate *)dateByIgnoringTimeComponentsOfDate:(NSDate *)date -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; - components.hour = FSCalendarDefaultHourComponent; - return [self.calendar dateFromComponents:components]; -} - -- (NSDate *)beginingOfMonthOfDate:(NSDate *)date -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; - components.day = 1; - return [self.calendar dateFromComponents:components]; -} - -- (NSDate *)endOfMonthOfDate:(NSDate *)date -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; - components.month++; - components.day = 0; - return [self.calendar dateFromComponents:components]; -} - -- (NSDate *)beginingOfWeekOfDate:(NSDate *)date -{ - NSDateComponents *weekdayComponents = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; - NSDateComponents *componentsToSubtract = self.components; - componentsToSubtract.day = - (weekdayComponents.weekday - self.calendar.firstWeekday); - componentsToSubtract.day = (componentsToSubtract.day-7) % 7; - NSDate *beginningOfWeek = [self.calendar dateByAddingComponents:componentsToSubtract toDate:date options:0]; - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:beginningOfWeek]; - beginningOfWeek = [self.calendar dateFromComponents:components]; - componentsToSubtract.day = NSIntegerMax; - return beginningOfWeek; -} - -- (NSDate *)middleOfWeekFromDate:(NSDate *)date -{ - NSDateComponents *weekdayComponents = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; - NSDateComponents *componentsToSubtract = self.components; - componentsToSubtract.day = - (weekdayComponents.weekday - self.calendar.firstWeekday) + 3; - NSDate *middleOfWeek = [self.calendar dateByAddingComponents:componentsToSubtract toDate:date options:0]; - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:middleOfWeek]; - middleOfWeek = [self.calendar dateFromComponents:components]; - componentsToSubtract.day = NSIntegerMax; - return middleOfWeek; -} - -- (NSDate *)tomorrowOfDate:(NSDate *)date -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; - components.day++; - components.hour = FSCalendarDefaultHourComponent; - return [self.calendar dateFromComponents:components]; -} - -- (NSDate *)yesterdayOfDate:(NSDate *)date -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date]; - components.day--; - components.hour = FSCalendarDefaultHourComponent; - return [self.calendar dateFromComponents:components]; -} - -- (NSInteger)numberOfDatesInMonthOfDate:(NSDate *)date -{ - NSRange days = [self.calendar rangeOfUnit:NSCalendarUnitDay - inUnit:NSCalendarUnitMonth - forDate:date]; - return days.length; -} - -- (NSDate *)dateFromString:(NSString *)string format:(NSString *)format -{ - self.formatter.dateFormat = format; - return [self.formatter dateFromString:string]; -} - -- (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day -{ - NSDateComponents *components = self.components; - components.year = year; - components.month = month; - components.day = day; - components.hour = FSCalendarDefaultHourComponent; - NSDate *date = [self.calendar dateFromComponents:components]; - components.year = NSIntegerMax; - components.month = NSIntegerMax; - components.day = NSIntegerMax; - components.hour = NSIntegerMax; - return date; -} - -- (NSDate *)dateByAddingYears:(NSInteger)years toDate:(NSDate *)date -{ - NSDateComponents *components = self.components; - components.year = years; - NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; - components.year = NSIntegerMax; - return d; -} - -- (NSDate *)dateBySubstractingYears:(NSInteger)years fromDate:(NSDate *)date -{ - return [self dateByAddingYears:-years toDate:date]; -} - -- (NSDate *)dateByAddingMonths:(NSInteger)months toDate:(NSDate *)date -{ - NSDateComponents *components = self.components; - components.month = months; - NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; - components.month = NSIntegerMax; - return d; -} - -- (NSDate *)dateBySubstractingMonths:(NSInteger)months fromDate:(NSDate *)date -{ - return [self dateByAddingMonths:-months toDate:date]; -} - -- (NSDate *)dateByAddingWeeks:(NSInteger)weeks toDate:(NSDate *)date -{ - NSDateComponents *components = self.components; - components.weekOfYear = weeks; - NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; - components.weekOfYear = NSIntegerMax; - return d; -} - -- (NSDate *)dateBySubstractingWeeks:(NSInteger)weeks fromDate:(NSDate *)date -{ - return [self dateByAddingWeeks:-weeks toDate:date]; -} - -- (NSDate *)dateByAddingDays:(NSInteger)days toDate:(NSDate *)date -{ - NSDateComponents *components = self.components; - components.day = days; - NSDate *d = [self.calendar dateByAddingComponents:components toDate:date options:0]; - components.day = NSIntegerMax; - return d; -} - -- (NSDate *)dateBySubstractingDays:(NSInteger)days fromDate:(NSDate *)date -{ - return [self dateByAddingDays:-days toDate:date]; -} - -- (NSInteger)yearsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitYear - fromDate:fromDate - toDate:toDate - options:0]; - return components.year; -} - -- (NSInteger)monthsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitMonth - fromDate:fromDate - toDate:toDate - options:0]; - return components.month; -} - -- (NSInteger)weeksFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitWeekOfYear - fromDate:fromDate - toDate:toDate - options:0]; - return components.weekOfYear; -} - -- (NSInteger)daysFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate -{ - NSDateComponents *components = [self.calendar components:NSCalendarUnitDay - fromDate:fromDate - toDate:toDate - options:0]; - return components.day; -} - -- (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 toCalendarUnit:(FSCalendarUnit)unit -{ - switch (unit) { - case FSCalendarUnitMonth: - return [self yearOfDate:date1] == [self yearOfDate:date2] && [self monthOfDate:date1] == [self monthOfDate:date2]; - case FSCalendarUnitWeekOfYear: - return [self yearOfDate:date1] == [self yearOfDate:date2] && [self weekOfDate:date1] == [self weekOfDate:date2]; - case FSCalendarUnitDay: - return [self yearOfDate:date1] == [self yearOfDate:date2] && [self monthOfDate:date1] == [self monthOfDate:date2] && [self dayOfDate:date1] == [self dayOfDate:date2]; - } - return NO; -} - -- (BOOL)isDateInToday:(NSDate *)date -{ - return [self isDate:date equalToDate:_today toCalendarUnit:FSCalendarUnitDay]; -} - -- (NSString *)stringFromDate:(NSDate *)date format:(NSString *)format -{ - self.formatter.dateFormat = format; - return [self.formatter stringFromDate:date]; -} - -- (NSString *)stringFromDate:(NSDate *)date -{ - return [self stringFromDate:date format:@"yyyy-MM-dd"]; -} - -@end - -#pragma mark - Deprecate - -@implementation FSCalendar (Deprecated) - -- (void)setCurrentMonth:(NSDate *)currentMonth -{ - self.currentPage = currentMonth; -} - -- (NSDate *)currentMonth -{ - return self.currentPage; -} - -- (void)setFlow:(FSCalendarFlow)flow -{ - self.scrollDirection = (FSCalendarScrollDirection)flow; -} - -- (FSCalendarFlow)flow -{ - return (FSCalendarFlow)self.scrollDirection; -} - -- (void)setSelectedDate:(NSDate *)selectedDate -{ - [self selectDate:selectedDate]; -} - -- (void)setSelectedDate:(NSDate *)selectedDate animate:(BOOL)animate -{ - [self selectDate:selectedDate scrollToDate:animate]; -} - -- (BOOL)date:(NSDate *)date sharesSameMonthWithDate:(NSDate *)anotherDate -{ - return [self yearOfDate:date] == [self yearOfDate:anotherDate] && [self monthOfDate:date] == [self monthOfDate:anotherDate]; -} - -- (BOOL)date:(NSDate *)date sharesSameWeekWithDate:(NSDate *)anotherDate -{ - return [self yearOfDate:date] == [self yearOfDate:anotherDate] && [self weekOfDate:date] == [self weekOfDate:anotherDate]; -} - -- (BOOL)date:(NSDate *)date sharesSameDayWithDate:(NSDate *)anotherDate -{ - return [self yearOfDate:date] == [self yearOfDate:anotherDate] && [self monthOfDate:date] == [self monthOfDate:anotherDate] && [self dayOfDate:date] == [self dayOfDate:anotherDate]; -} - -@end - diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.h b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.h index 10165e15..d0cfa079 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.h +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.h @@ -6,11 +6,11 @@ // Copyright © 2016 wenchaoios. All rights reserved. // -#import #import "FSCalendar.h" #import "FSCalendarCollectionView.h" #import "FSCalendarFlowLayout.h" #import "FSCalendarDynamicHeader.h" +#import "FSCalendarScopeHandle.h" typedef NS_ENUM(NSUInteger, FSCalendarTransition) { FSCalendarTransitionNone, @@ -22,7 +22,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarTransitionState) { FSCalendarTransitionStateInProgress }; -@interface FSCalendarAnimator : NSObject +@interface FSCalendarAnimator : NSObject @property (weak, nonatomic) FSCalendar *calendar; @property (weak, nonatomic) FSCalendarCollectionView *collectionView; @@ -31,7 +31,25 @@ typedef NS_ENUM(NSUInteger, FSCalendarTransitionState) { @property (assign, nonatomic) FSCalendarTransition transition; @property (assign, nonatomic) FSCalendarTransitionState state; +@property (assign, nonatomic) CGSize cachedMonthSize; + - (void)performScopeTransitionFromScope:(FSCalendarScope)fromScope toScope:(FSCalendarScope)toScope animated:(BOOL)animated; - (void)performBoudingRectTransitionFromMonth:(NSDate *)fromMonth toMonth:(NSDate *)toMonth duration:(CGFloat)duration; @end + + +@interface FSCalendarTransitionAttributes : NSObject + +@property (assign, nonatomic) CGRect sourceBounds; +@property (assign, nonatomic) CGRect targetBounds; +@property (strong, nonatomic) UIBezierPath *sourceMask; +@property (strong, nonatomic) UIBezierPath *targetMask; +@property (strong, nonatomic) NSDate *sourcePage; +@property (strong, nonatomic) NSDate *targetPage; +@property (assign, nonatomic) NSInteger focusedRowNumber; +@property (assign, nonatomic) NSDate *focusedDate; +@property (strong, nonatomic) NSDate *firstDayOfMonth; + +@end + diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.m index 04fe1171..79cd4497 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAnimator.m @@ -7,8 +7,33 @@ // #import "FSCalendarAnimator.h" -#import #import "UIView+FSExtension.h" +#import + +@interface FSCalendarAnimator () + +@property (readonly, nonatomic) FSCalendarTransitionAttributes *transitionAttributes; +@property (strong , nonatomic) FSCalendarTransitionAttributes *pendingAttributes; +@property (assign , nonatomic) CGFloat lastTranslation; + +@property (assign , nonatomic) FSCalendarScope calendarScope; +@property (strong , nonatomic) NSDate *calendarCurrentPage; + +- (void)performTransitionCompletionAnimated:(BOOL)animated; +- (void)performTransitionCompletion:(FSCalendarTransition)transition animated:(BOOL)animated; + +- (void)performAlphaAnimationFrom:(CGFloat)fromAlpha to:(CGFloat)toAlpha duration:(CGFloat)duration exception:(NSInteger)exception; +- (void)performPathAnimationFrom:(CGPathRef)fromPath to:(CGPathRef)toPath duration:(CGFloat)duration completion:(void(^)())completion; +- (void)performForwardTransition:(FSCalendarTransition)transition fromProgress:(CGFloat)progress; +- (void)performBackwardTransition:(FSCalendarTransition)transition fromProgress:(CGFloat)progress; +- (void)performAlphaAnimationWithProgress:(CGFloat)progress; +- (void)performPathAnimationWithProgress:(CGFloat)progress; + +- (CGRect)boundingRectForScope:(FSCalendarScope)scope; + +- (void)boundingRectWillChange:(CGRect)targetBounds animated:(BOOL)animated; + +@end @implementation FSCalendarAnimator @@ -28,170 +53,38 @@ - (void)performScopeTransitionFromScope:(FSCalendarScope)fromScope toScope:(FSCa // Start transition self.state = FSCalendarTransitionStateInProgress; + FSCalendarTransitionAttributes *attr = self.transitionAttributes; + self.pendingAttributes = attr; switch (self.transition) { case FSCalendarTransitionMonthToWeek: { - CGSize contentSize = [self.calendar sizeThatFits:self.calendar.frame.size scope:FSCalendarScopeWeek]; - CGRect targetBounds = (CGRect){CGPointZero,contentSize}; - - NSInteger focusedRowNumber = 0; - if (self.calendar.focusOnSingleSelectedDate) { - NSDate *focusedDate = self.calendar.selectedDate; - if (focusedDate) { - UICollectionViewLayoutAttributes *attributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeMonth]]; - CGPoint focuedCenter = attributes.center; - if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { - switch (self.collectionViewLayout.scrollDirection) { - case UICollectionViewScrollDirectionHorizontal: { - focusedRowNumber = attributes.indexPath.item%6; - break; - } - case UICollectionViewScrollDirectionVertical: { - focusedRowNumber = attributes.indexPath.item/7; - break; - } - } - } else { - focusedDate = nil; - } - } - if (!focusedDate) { - focusedDate = self.calendar.today; - if (focusedDate) { - UICollectionViewLayoutAttributes *attributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeMonth]]; - CGPoint focuedCenter = attributes.center; - if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { - switch (self.collectionViewLayout.scrollDirection) { - case UICollectionViewScrollDirectionHorizontal: { - focusedRowNumber = attributes.indexPath.item%6; - break; - } - case UICollectionViewScrollDirectionVertical: { - focusedRowNumber = attributes.indexPath.item/7; - break; - } - } - } - } - } - } - - NSDate *currentPage = self.calendar.currentPage; - NSDate *minimumPage = [self.calendar beginingOfMonthOfDate:self.calendar.minimumDate]; - NSInteger visibleSection = [self.calendar monthsFromDate:minimumPage toDate:currentPage]; - NSIndexPath *firstIndexPath = [NSIndexPath indexPathForItem:0 inSection:visibleSection]; - NSDate *firstDate = [self.calendar dateForIndexPath:firstIndexPath scope:FSCalendarScopeMonth]; - currentPage = [self.calendar dateByAddingDays:focusedRowNumber*7 toDate:firstDate]; - - Ivar currentPageIvar = class_getInstanceVariable(FSCalendar.class, "_currentPage"); - object_setIvar(self.calendar, currentPageIvar, currentPage); - + self.calendarCurrentPage = attr.targetPage; self.calendar.contentView.clipsToBounds = YES; - self.calendar.daysContainer.clipsToBounds = YES; + if (animated) { CGFloat duration = 0.3; - // Perform alpha animation - CABasicAnimation *opacity = [CABasicAnimation animationWithKeyPath:@"opacity"]; - opacity.duration = duration*0.6; - opacity.removedOnCompletion = NO; - opacity.fillMode = kCAFillModeForwards; - opacity.toValue = @0; - [self.collectionView.visibleCells enumerateObjectsUsingBlock:^(FSCalendarCell *cell, NSUInteger idx, BOOL *stop) { - if (CGRectContainsPoint(self.collectionView.bounds, cell.center)) { - BOOL shouldPerformAlpha = NO; - NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell]; - switch (self.collectionViewLayout.scrollDirection) { - case UICollectionViewScrollDirectionHorizontal: { - shouldPerformAlpha = indexPath.item%6 != focusedRowNumber; - break; - } - case UICollectionViewScrollDirectionVertical: { - shouldPerformAlpha = indexPath.item/7 != focusedRowNumber; - break; - } - } - if (shouldPerformAlpha) { - [cell.contentView.layer addAnimation:opacity forKey:@"opacity"]; - } - } - }]; - // Perform path and frame animation - CABasicAnimation *path = [CABasicAnimation animationWithKeyPath:@"path"]; - path.fromValue = (id)self.calendar.maskLayer.path; - path.toValue = (id)[UIBezierPath bezierPathWithRect:targetBounds].CGPath; - path.duration = duration; - path.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - [CATransaction begin]; - [CATransaction setCompletionBlock:^{ - self.state = FSCalendarTransitionStateIdle; - self.transition = FSCalendarTransitionNone; - self.collectionViewLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - self.calendar.header.scrollDirection = self.collectionViewLayout.scrollDirection; - self.calendar.maskLayer.path = [UIBezierPath bezierPathWithRect:targetBounds].CGPath; - [self.collectionView reloadData]; - [self.collectionView layoutIfNeeded]; - [self.calendar.header reloadData]; - [self.calendar.header layoutIfNeeded]; - self.calendar.needsAdjustingMonthPosition = YES; - self.calendar.needsAdjustingViewFrame = YES; - [self.calendar setNeedsLayout]; - self.calendar.contentView.clipsToBounds = NO; - self.calendar.daysContainer.clipsToBounds = NO; + [self performAlphaAnimationFrom:1 to:0 duration:0.22 exception:attr.focusedRowNumber]; + [self performPathAnimationFrom:self.calendar.maskLayer.path to:attr.targetMask.CGPath duration:duration completion:^{ + [self performTransitionCompletionAnimated:animated]; }]; - [CATransaction setAnimationDuration:duration]; - [self.calendar.maskLayer addAnimation:path forKey:@"path"]; - [CATransaction commit]; - + if (self.calendar.delegate && ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)] || [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)])) { - - [UIView beginAnimations:@"delegateTranslation" context:"translation"]; + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationsEnabled:YES]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:duration]; - self.collectionView.fs_top = -focusedRowNumber*self.calendar.preferredRowHeight; - self.calendar.bottomBorder.fs_top = CGRectGetMaxY(targetBounds); - if ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)]) { - [self.calendar.delegate calendar:self.calendar boundingRectWillChange:targetBounds animated:animated]; - } else { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [self.calendar.delegate calendarCurrentScopeWillChange:self.calendar animated:animated]; -#pragma GCC diagnostic pop - } + self.collectionView.fs_top = -attr.focusedRowNumber*self.calendar.preferredRowHeight; + [self boundingRectWillChange:attr.targetBounds animated:animated]; [UIView commitAnimations]; } } else { - self.state = FSCalendarTransitionStateIdle; - self.transition = FSCalendarTransitionNone; - self.collectionViewLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - self.calendar.header.scrollDirection = self.collectionViewLayout.scrollDirection; - self.calendar.needsAdjustingViewFrame = YES; - self.calendar.bottomBorder.frame = CGRectMake(0, contentSize.height, self.calendar.fs_width, 1); - self.calendar.maskLayer.path = [UIBezierPath bezierPathWithRect:targetBounds].CGPath; - self.calendar.bottomBorder.fs_top = CGRectGetMaxY(targetBounds); - [self.collectionView reloadData]; - [self.collectionView layoutIfNeeded]; - [self.calendar.header reloadData]; - [self.calendar.header layoutIfNeeded]; - self.calendar.needsAdjustingMonthPosition = YES; - self.calendar.needsAdjustingViewFrame = YES; - [self.calendar setNeedsLayout]; - - self.calendar.contentView.clipsToBounds = NO; - self.calendar.daysContainer.clipsToBounds = NO; - - if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)]) { - [self.calendar.delegate calendar:self.calendar boundingRectWillChange:targetBounds animated:animated]; - } else if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)]) { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [self.calendar.delegate calendarCurrentScopeWillChange:self.calendar animated:animated]; -#pragma GCC diagnostic pop - } + [self performTransitionCompletionAnimated:animated]; + [self boundingRectWillChange:attr.targetBounds animated:animated]; } @@ -200,49 +93,7 @@ - (void)performScopeTransitionFromScope:(FSCalendarScope)fromScope toScope:(FSCa case FSCalendarTransitionWeekToMonth: { - CGSize contentSize = [self.calendar sizeThatFits:self.calendar.frame.size scope:FSCalendarScopeMonth]; - CGRect targetBounds = (CGRect){CGPointZero,contentSize}; - - NSInteger focusedRowNumber = 0; - NSDate *currentPage = self.calendar.currentPage; - NSDate *firstDayOfMonth = nil; - if (self.calendar.focusOnSingleSelectedDate) { - NSDate *focusedDate = self.calendar.selectedDate; - if (focusedDate) { - UICollectionViewLayoutAttributes *attributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeWeek]]; - CGPoint focuedCenter = attributes.center; - if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { - firstDayOfMonth = [self.calendar beginingOfMonthOfDate:focusedDate]; - } else { - focusedDate = nil; - } - } - if (!focusedDate) { - focusedDate = self.calendar.today; - if (focusedDate) { - UICollectionViewLayoutAttributes *attributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeWeek]]; - CGPoint focuedCenter = attributes.center; - if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { - firstDayOfMonth = [self.calendar beginingOfMonthOfDate:focusedDate]; - } - } - }; - } - firstDayOfMonth = firstDayOfMonth ?: [self.calendar beginingOfMonthOfDate:currentPage]; - NSInteger numberOfPlaceholdersForPrev = [self.calendar numberOfHeadPlaceholdersForMonth:firstDayOfMonth]; - NSDate *firstDateOfPage = [self.calendar dateBySubstractingDays:numberOfPlaceholdersForPrev fromDate:firstDayOfMonth]; - for (int i = 0; i < 6; i++) { - NSDate *currentRow = [self.calendar dateByAddingWeeks:i toDate:firstDateOfPage]; - if ([self.calendar isDate:currentRow equalToDate:currentPage toCalendarUnit:FSCalendarUnitDay]) { - focusedRowNumber = i; - currentPage = firstDayOfMonth; - break; - } - } - - Ivar currentPageIvar = class_getInstanceVariable(FSCalendar.class, "_currentPage"); - object_setIvar(self.calendar, currentPageIvar, currentPage); - + self.calendarCurrentPage = attr.targetPage; self.collectionViewLayout.scrollDirection = (UICollectionViewScrollDirection)self.calendar.scrollDirection; self.calendar.header.scrollDirection = self.collectionViewLayout.scrollDirection; @@ -255,98 +106,36 @@ - (void)performScopeTransitionFromScope:(FSCalendarScope)fromScope toScope:(FSCa [self.calendar.header layoutIfNeeded]; self.calendar.contentView.clipsToBounds = YES; - self.calendar.daysContainer.clipsToBounds = YES; if (animated) { - // Perform alpha animation - CGFloat duration = 0.3; - CABasicAnimation *opacity = [CABasicAnimation animationWithKeyPath:@"opacity"]; - opacity.duration = duration; - opacity.fromValue = @0; - opacity.toValue = @1; - opacity.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - [self.collectionView.visibleCells enumerateObjectsUsingBlock:^(FSCalendarCell *cell, NSUInteger idx, BOOL *stop) { - if (CGRectContainsPoint(self.collectionView.bounds, cell.center)) { - BOOL shouldPerformAlpha = NO; - NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell]; - switch (self.collectionViewLayout.scrollDirection) { - case UICollectionViewScrollDirectionHorizontal: { - shouldPerformAlpha = indexPath.item%6 != focusedRowNumber; - break; - } - case UICollectionViewScrollDirectionVertical: { - shouldPerformAlpha = indexPath.item/7 != focusedRowNumber; - break; - } - } - if (shouldPerformAlpha) { - [cell.contentView.layer addAnimation:opacity forKey:@"opacity"]; - } - } - }]; - // Perform path and frame animation - BOOL oldDisableActions = [CATransaction disableActions]; - [CATransaction setDisableActions:NO]; + [self performAlphaAnimationFrom:0 to:1 duration:0.4 exception:attr.focusedRowNumber]; - CABasicAnimation *path = [CABasicAnimation animationWithKeyPath:@"path"]; - path.fromValue = (id)self.calendar.maskLayer.path; - path.toValue = (id)[UIBezierPath bezierPathWithRect:targetBounds].CGPath; - path.duration = duration; - path.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - [CATransaction begin]; - [CATransaction setCompletionBlock:^{ - self.state = FSCalendarTransitionStateIdle; - self.transition = FSCalendarTransitionNone; - self.calendar.maskLayer.path = [UIBezierPath bezierPathWithRect:targetBounds].CGPath; - self.calendar.contentView.clipsToBounds = NO; - self.calendar.daysContainer.clipsToBounds = NO; - }]; - [CATransaction setAnimationDuration:duration]; - - self.calendar.needsAdjustingViewFrame = YES; - [self.calendar.maskLayer addAnimation:path forKey:@"path"]; + CGFloat duration = 0.3; - [CATransaction commit]; + [self performPathAnimationFrom:self.calendar.maskLayer.path to:attr.targetMask.CGPath duration:duration completion:^{ + [self performTransitionCompletionAnimated:animated]; + }]; + [CATransaction begin]; + [CATransaction setDisableActions:NO]; if (self.calendar.delegate && ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)] || [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)])) { - self.collectionView.fs_top = -focusedRowNumber*self.calendar.preferredRowHeight; + self.collectionView.fs_top = -attr.focusedRowNumber*self.calendar.preferredRowHeight; + [UIView beginAnimations:nil context:nil]; [UIView setAnimationsEnabled:YES]; - [UIView beginAnimations:@"delegateTranslation" context:"translation"]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:duration]; self.collectionView.fs_top = 0; - self.self.calendar.bottomBorder.frame = CGRectMake(0, contentSize.height, self.calendar.fs_width, 1); - if ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)]) { - [self.calendar.delegate calendar:self.calendar boundingRectWillChange:targetBounds animated:animated]; - } else { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [self.calendar.delegate calendarCurrentScopeWillChange:self.calendar animated:animated]; -#pragma GCC diagnostic pop - } + [self boundingRectWillChange:attr.targetBounds animated:animated]; [UIView commitAnimations]; } - [CATransaction setDisableActions:oldDisableActions]; + [CATransaction commit]; } else { - self.state = FSCalendarTransitionStateIdle; - self.transition = FSCalendarTransitionNone; - self.calendar.needsAdjustingViewFrame = YES; - self.calendar.bottomBorder.frame = CGRectMake(0, contentSize.height, self.calendar.fs_width, 1); - self.calendar.maskLayer.path = [UIBezierPath bezierPathWithRect:targetBounds].CGPath; - self.calendar.contentView.clipsToBounds = NO; - self.calendar.daysContainer.clipsToBounds = NO; + [self performTransitionCompletionAnimated:animated]; + [self boundingRectWillChange:attr.targetBounds animated:animated]; - if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)]) { - [self.calendar.delegate calendar:self.calendar boundingRectWillChange:targetBounds animated:animated]; - } else if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)]) { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [self.calendar.delegate calendarCurrentScopeWillChange:self.calendar animated:animated]; -#pragma GCC diagnostic pop - } } break; } @@ -365,12 +154,7 @@ - (void)performBoudingRectTransitionFromMonth:(NSDate *)fromMonth toMonth:(NSDat CGRect bounds = (CGRect){CGPointZero,[self.calendar sizeThatFits:self.calendar.frame.size]}; self.state = FSCalendarTransitionStateInProgress; [UIView animateWithDuration:animationDuration delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ - if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)]) { - if (!CGRectEqualToRect((CGRect){CGPointZero,self.calendar.frame.size}, bounds)) { - [self.calendar.delegate calendar:self.calendar boundingRectWillChange:bounds animated:YES]; - } - } - self.calendar.bottomBorder.fs_top = CGRectGetMaxY(bounds); + [self boundingRectWillChange:bounds animated:YES]; } completion:^(BOOL finished) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MAX(0, duration-animationDuration) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.calendar.needsAdjustingViewFrame = YES; @@ -390,5 +174,563 @@ - (void)performBoudingRectTransitionFromMonth:(NSDate *)fromMonth toMonth:(NSDat } } +#pragma mark - + +- (BOOL)scopeHandleShouldBegin:(FSCalendarScopeHandle *)scopeHandle +{ + return self.state == FSCalendarTransitionStateIdle; +} + +- (void)scopeHandleDidBegin:(FSCalendarScopeHandle *)scopeHandle +{ + self.state = FSCalendarTransitionStateInProgress; + self.transition = self.calendar.scope == FSCalendarScopeMonth ? FSCalendarTransitionMonthToWeek : FSCalendarTransitionWeekToMonth; + self.pendingAttributes = self.transitionAttributes; + self.lastTranslation = [scopeHandle.panGesture translationInView:scopeHandle].y; + + if (self.transition == FSCalendarTransitionWeekToMonth) { + + self.calendarScope = FSCalendarScopeMonth; + self.calendarCurrentPage = self.pendingAttributes.targetPage; + self.calendar.contentView.clipsToBounds = YES; + + self.calendar.contentView.fs_height = CGRectGetHeight(self.pendingAttributes.targetBounds)-self.calendar.scopeHandle.fs_height; + self.collectionViewLayout.scrollDirection = (UICollectionViewScrollDirection)self.calendar.scrollDirection; + self.calendar.header.scrollDirection = self.collectionViewLayout.scrollDirection; + self.calendar.needsAdjustingMonthPosition = YES; + self.calendar.needsAdjustingViewFrame = YES; + [self.calendar setNeedsLayout]; + [self.collectionView reloadData]; + [self.calendar.header reloadData]; + [self.calendar layoutIfNeeded]; + + self.collectionView.fs_top = -self.pendingAttributes.focusedRowNumber*self.calendar.preferredRowHeight; + + } +} + +- (void)scopeHandleDidUpdate:(FSCalendarScopeHandle *)scopeHandle +{ + CGFloat translation = [scopeHandle.panGesture translationInView:scopeHandle].y; + switch (self.transition) { + case FSCalendarTransitionMonthToWeek: { + CGFloat minTranslation = CGRectGetHeight(self.pendingAttributes.targetBounds) - CGRectGetHeight(self.pendingAttributes.sourceBounds); + translation = MAX(minTranslation, translation); + translation = MIN(0, translation); + CGFloat progress = translation/minTranslation; + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + [self performAlphaAnimationWithProgress:progress]; + [self performPathAnimationWithProgress:progress]; + [CATransaction commit]; + break; + } + case FSCalendarTransitionWeekToMonth: { + CGFloat maxTranslation = CGRectGetHeight(self.pendingAttributes.targetBounds) - CGRectGetHeight(self.pendingAttributes.sourceBounds); + translation = MIN(maxTranslation, translation); + translation = MAX(0, translation); + CGFloat progress = translation/maxTranslation; + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + [self performAlphaAnimationWithProgress:progress]; + [self performPathAnimationWithProgress:progress]; + [CATransaction commit]; + break; + } + default: + break; + } + self.lastTranslation = translation; +} + +- (void)scopeHandleDidEnd:(FSCalendarScopeHandle *)scopeHandle +{ + CGFloat translation = [scopeHandle.panGesture translationInView:scopeHandle].y; + CGFloat velocity = [scopeHandle.panGesture velocityInView:scopeHandle].y; + switch (self.transition) { + case FSCalendarTransitionMonthToWeek: { + + CGFloat minTranslation = CGRectGetHeight(self.pendingAttributes.targetBounds) - CGRectGetHeight(self.pendingAttributes.sourceBounds); + translation = MAX(minTranslation, translation); + translation = MIN(0, translation); + CGFloat progress = translation/minTranslation; + + if (velocity >= 0) { + + [self performBackwardTransition:self.transition fromProgress:progress]; + + } else { + + [self performForwardTransition:self.transition fromProgress:progress]; + + } + break; + } + case FSCalendarTransitionWeekToMonth: { + CGFloat maxTranslation = CGRectGetHeight(self.pendingAttributes.targetBounds) - CGRectGetHeight(self.pendingAttributes.sourceBounds); + translation = MAX(0, translation); + translation = MIN(maxTranslation, translation); + CGFloat progress = translation/maxTranslation; + + if (velocity >= 0) { + + [self performForwardTransition:self.transition fromProgress:progress]; + + } else { + + [self performBackwardTransition:self.transition fromProgress:progress]; + + } + + } + default: + break; + } + +} + + +#pragma mark - Private properties + +- (void)performTransitionCompletionAnimated:(BOOL)animated +{ + [self performTransitionCompletion:self.transition animated:animated]; +} + +- (void)performTransitionCompletion:(FSCalendarTransition)transition animated:(BOOL)animated +{ + switch (transition) { + case FSCalendarTransitionMonthToWeek: { + [self.collectionView.visibleCells enumerateObjectsUsingBlock:^(UICollectionViewCell *obj, NSUInteger idx, BOOL * stop) { + obj.contentView.layer.opacity = 1; + }]; + self.collectionViewLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + self.calendar.header.scrollDirection = self.collectionViewLayout.scrollDirection; + self.calendar.needsAdjustingViewFrame = YES; + self.calendar.needsAdjustingMonthPosition = YES; + [self.collectionView reloadData]; + [self.calendar.header reloadData]; + break; + } + case FSCalendarTransitionWeekToMonth: { + self.calendar.needsAdjustingViewFrame = YES; + [self.calendar.collectionView.visibleCells enumerateObjectsUsingBlock:^(UICollectionViewCell *obj, NSUInteger idx, BOOL * stop) { + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + obj.contentView.layer.opacity = 1; + [CATransaction commit]; + [obj.contentView.layer removeAnimationForKey:@"opacity"]; + }]; + break; + } + default: + break; + } + self.state = FSCalendarTransitionStateIdle; + self.transition = FSCalendarTransitionNone; + self.calendar.contentView.clipsToBounds = NO; + self.pendingAttributes = nil; + [self.calendar.maskLayer removeAnimationForKey:@"path"]; + [self.calendar setNeedsLayout]; + [self.calendar layoutIfNeeded]; +} + +- (FSCalendarTransitionAttributes *)transitionAttributes +{ + FSCalendarTransitionAttributes *attributes = [[FSCalendarTransitionAttributes alloc] init]; + attributes.sourceBounds = self.calendar.bounds; + attributes.sourceMask = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, self.calendar.fs_width, CGRectGetHeight(attributes.sourceBounds)-self.calendar.scopeHandle.fs_height)]; + attributes.sourcePage = self.calendarCurrentPage; + switch (self.transition) { + + case FSCalendarTransitionMonthToWeek: { + + attributes.targetBounds = [self boundingRectForScope:FSCalendarScopeWeek]; + attributes.targetMask = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, self.calendar.fs_width, CGRectGetHeight(attributes.targetBounds)-self.calendar.scopeHandle.fs_height)]; + + if (self.calendar.focusOnSingleSelectedDate) { + + NSInteger focusedRowNumber = 0; + NSDate *focusedDate = self.calendar.selectedDate; + + if (focusedDate) { + UICollectionViewLayoutAttributes *itemAttributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeMonth]]; + CGPoint focuedCenter = itemAttributes.center; + if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { + switch (self.collectionViewLayout.scrollDirection) { + case UICollectionViewScrollDirectionHorizontal: { + focusedRowNumber = itemAttributes.indexPath.item%6; + break; + } + case UICollectionViewScrollDirectionVertical: { + focusedRowNumber = itemAttributes.indexPath.item/7; + break; + } + } + } else { + focusedDate = nil; + } + } + if (!focusedDate) { + focusedDate = self.calendar.today; + if (focusedDate) { + UICollectionViewLayoutAttributes *itemAttributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeMonth]]; + CGPoint focuedCenter = itemAttributes.center; + if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { + switch (self.collectionViewLayout.scrollDirection) { + case UICollectionViewScrollDirectionHorizontal: { + focusedRowNumber = itemAttributes.indexPath.item%6; + break; + } + case UICollectionViewScrollDirectionVertical: { + focusedRowNumber = itemAttributes.indexPath.item/7; + break; + } + } + } + } + } + + NSDate *currentPage = self.calendar.currentPage; + NSDate *minimumPage = [self.calendar beginingOfMonthOfDate:self.calendar.minimumDate]; + NSInteger visibleSection = [self.calendar monthsFromDate:minimumPage toDate:currentPage]; + NSIndexPath *firstIndexPath = [NSIndexPath indexPathForItem:0 inSection:visibleSection]; + NSDate *firstDate = [self.calendar dateForIndexPath:firstIndexPath scope:FSCalendarScopeMonth]; + currentPage = [self.calendar dateByAddingDays:focusedRowNumber*7 toDate:firstDate]; + + attributes.focusedRowNumber = focusedRowNumber; + attributes.focusedDate = focusedDate; + attributes.targetPage = currentPage; + + } + break; + } + case FSCalendarTransitionWeekToMonth: { + + attributes.targetBounds = [self boundingRectForScope:FSCalendarScopeMonth]; + attributes.targetMask = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, self.calendar.fs_width, CGRectGetHeight(attributes.targetBounds)-self.calendar.scopeHandle.fs_height)]; + + if (self.calendar.focusOnSingleSelectedDate) { + + NSInteger focusedRowNumber = 0; + NSDate *currentPage = self.calendar.currentPage; + NSDate *firstDayOfMonth = nil; + if (self.calendar.focusOnSingleSelectedDate) { + NSDate *focusedDate = self.calendar.selectedDate; + if (focusedDate) { + UICollectionViewLayoutAttributes *itemAttributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeWeek]]; + CGPoint focuedCenter = itemAttributes.center; + if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { + firstDayOfMonth = [self.calendar beginingOfMonthOfDate:focusedDate]; + } else { + focusedDate = nil; + } + } + if (!focusedDate) { + focusedDate = self.calendar.today; + if (focusedDate) { + UICollectionViewLayoutAttributes *itemAttributes = [self.collectionViewLayout layoutAttributesForItemAtIndexPath:[self.calendar indexPathForDate:focusedDate scope:FSCalendarScopeWeek]]; + CGPoint focuedCenter = itemAttributes.center; + if (CGRectContainsPoint(self.collectionView.bounds, focuedCenter)) { + firstDayOfMonth = [self.calendar beginingOfMonthOfDate:focusedDate]; + } + } + }; + attributes.focusedDate = focusedDate; + } + firstDayOfMonth = firstDayOfMonth ?: [self.calendar beginingOfMonthOfDate:currentPage]; + NSInteger numberOfPlaceholdersForPrev = [self.calendar numberOfHeadPlaceholdersForMonth:firstDayOfMonth]; + NSDate *firstDateOfPage = [self.calendar dateBySubstractingDays:numberOfPlaceholdersForPrev fromDate:firstDayOfMonth]; + for (int i = 0; i < 6; i++) { + NSDate *currentRow = [self.calendar dateByAddingWeeks:i toDate:firstDateOfPage]; + if ([self.calendar isDate:currentRow equalToDate:currentPage toCalendarUnit:FSCalendarUnitDay]) { + focusedRowNumber = i; + currentPage = firstDayOfMonth; + break; + } + } + attributes.focusedRowNumber = focusedRowNumber; + attributes.targetPage = currentPage; + attributes.firstDayOfMonth = firstDayOfMonth; + } + break; + } + default: + break; + } + return attributes; +} + +#pragma mark - Private properties + +- (void)setCalendarScope:(FSCalendarScope)calendarScope +{ + [self.calendar willChangeValueForKey:@"scope"]; + Ivar scopeIvar = class_getInstanceVariable(FSCalendar.class, "_scope"); + void (*setScope)(id, Ivar, FSCalendarScope) = (void (*)(id, Ivar, FSCalendarScope))object_setIvar; + setScope(self.calendar, scopeIvar, calendarScope); + [self.calendar didChangeValueForKey:@"scope"]; +} + +- (FSCalendarScope)calendarScope +{ + return self.calendar.scope; +} + +- (void)setCalendarCurrentPage:(NSDate *)calendarCurrentPage +{ + Ivar currentPageIvar = class_getInstanceVariable(FSCalendar.class, "_currentPage"); + object_setIvar(self.calendar, currentPageIvar, calendarCurrentPage); +} + +- (NSDate *)calendarCurrentPage +{ + return self.calendar.currentPage; +} + +#pragma mark - Private methods + +- (CGRect)boundingRectForScope:(FSCalendarScope)scope +{ + CGSize contentSize; + switch (scope) { + case FSCalendarScopeMonth: { + if (self.calendar.showsPlaceholders) { + contentSize = self.cachedMonthSize; + } else { + contentSize = [self.calendar sizeThatFits:self.calendar.frame.size scope:scope]; + } + break; + } + case FSCalendarScopeWeek: { + contentSize = [self.calendar sizeThatFits:self.calendar.frame.size scope:scope]; + break; + } + } + return (CGRect){CGPointZero,contentSize}; +} + +- (void)boundingRectWillChange:(CGRect)targetBounds animated:(BOOL)animated +{ + if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)]) { + self.calendar.scopeHandle.fs_bottom = CGRectGetMaxY(targetBounds); + self.calendar.bottomBorder.fs_top = CGRectGetMaxY(targetBounds); + self.calendar.daysContainer.fs_height = CGRectGetHeight(targetBounds)-self.calendar.preferredHeaderHeight-self.calendar.preferredWeekdayHeight-self.calendar.scopeHandle.fs_height; + [self.calendar.delegate calendar:self.calendar boundingRectWillChange:targetBounds animated:animated]; + } else if (self.calendar.delegate && [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)]) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + self.calendar.scopeHandle.fs_bottom = CGRectGetMaxY(targetBounds); + self.calendar.bottomBorder.fs_top = CGRectGetMaxY(targetBounds); + self.calendar.daysContainer.fs_height = CGRectGetHeight(targetBounds)-self.calendar.preferredHeaderHeight-self.calendar.preferredWeekdayHeight-self.calendar.scopeHandle.fs_height; + [self.calendar.delegate calendarCurrentScopeWillChange:self.calendar animated:animated]; +#pragma GCC diagnostic pop + } +} + +- (void)performForwardTransition:(FSCalendarTransition)transition fromProgress:(CGFloat)progress +{ + FSCalendarTransitionAttributes *attr = self.pendingAttributes; + switch (transition) { + case FSCalendarTransitionMonthToWeek: { + + self.calendarScope = FSCalendarScopeWeek; + self.calendarCurrentPage = attr.targetPage; + + self.calendar.contentView.clipsToBounds = YES; + + CGFloat currentAlpha = 1 - progress; + CGFloat duration = 0.3; + [self performAlphaAnimationFrom:currentAlpha to:0 duration:0.22 exception:attr.focusedRowNumber]; + [self performPathAnimationFrom:self.calendar.maskLayer.path to:[UIBezierPath bezierPathWithRect:attr.targetBounds].CGPath duration:duration completion:^{ + [self performTransitionCompletionAnimated:YES]; + }]; + + if (self.calendar.delegate && ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)] || [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)])) { + [UIView beginAnimations:@"delegateTranslation" context:"translation"]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:duration]; + self.collectionView.fs_top = -attr.focusedRowNumber*self.calendar.preferredRowHeight; + [self boundingRectWillChange:attr.targetBounds animated:YES]; + [UIView commitAnimations]; + } + + break; + } + case FSCalendarTransitionWeekToMonth: { + + self.calendarScope = FSCalendarScopeMonth; + + [self performAlphaAnimationFrom:progress to:1 duration:0.4 exception:attr.focusedRowNumber]; + + CGFloat duration = 0.3; + [CATransaction begin]; + [CATransaction setDisableActions:NO]; + + [self performPathAnimationFrom:self.calendar.maskLayer.path to:[UIBezierPath bezierPathWithRect:attr.targetBounds].CGPath duration:duration completion:^{ + [self performTransitionCompletionAnimated:YES]; + }]; + + if (self.calendar.delegate && ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)] || [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)])) { + [UIView beginAnimations:@"delegateTranslation" context:"translation"]; + [UIView setAnimationsEnabled:YES]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:duration]; + self.collectionView.fs_top = 0; + [self boundingRectWillChange:attr.targetBounds animated:YES]; + [UIView commitAnimations]; + } + [CATransaction commit]; + break; + } + default: + break; + } +} + +- (void)performBackwardTransition:(FSCalendarTransition)transition fromProgress:(CGFloat)progress +{ + switch (transition) { + case FSCalendarTransitionMonthToWeek: { + [self performAlphaAnimationFrom:1-progress to:1 duration:0.3 exception:self.pendingAttributes.focusedRowNumber]; + [self performPathAnimationFrom:self.calendar.maskLayer.path to:self.pendingAttributes.sourceMask.CGPath duration:0.3 completion:^{ + [self.calendar.maskLayer removeAnimationForKey:@"path"]; + self.calendar.maskLayer.path = self.pendingAttributes.sourceMask.CGPath; + [self.calendar.collectionView.visibleCells enumerateObjectsUsingBlock:^(__kindof UICollectionViewCell * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + obj.contentView.layer.opacity = 1; + [obj.contentView.layer removeAnimationForKey:@"opacity"]; + }]; + self.pendingAttributes = nil; + self.state = FSCalendarTransitionStateIdle; + }]; + + if (self.calendar.delegate && ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)] || [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)])) { + [UIView beginAnimations:@"delegateTranslation" context:"translation"]; + [UIView setAnimationsEnabled:YES]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.3]; + self.collectionView.fs_top = 0; + [self boundingRectWillChange:self.pendingAttributes.sourceBounds animated:YES]; + [UIView commitAnimations]; + } + break; + } + case FSCalendarTransitionWeekToMonth: { + [self performAlphaAnimationFrom:progress to:0 duration:0.3 exception:self.pendingAttributes.focusedRowNumber]; + [self performPathAnimationFrom:self.calendar.maskLayer.path to:self.pendingAttributes.sourceMask.CGPath duration:0.3 completion:^{ + + self.calendarScope = FSCalendarScopeWeek; + self.calendarCurrentPage = self.pendingAttributes.sourcePage; + + [self performTransitionCompletion:FSCalendarTransitionMonthToWeek animated:YES]; + }]; + + if (self.calendar.delegate && ([self.calendar.delegate respondsToSelector:@selector(calendar:boundingRectWillChange:animated:)] || [self.calendar.delegate respondsToSelector:@selector(calendarCurrentScopeWillChange:animated:)])) { + [UIView beginAnimations:@"delegateTranslation" context:"translation"]; + [UIView setAnimationsEnabled:YES]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.3]; + self.collectionView.fs_top = (-self.pendingAttributes.focusedRowNumber*self.calendar.preferredRowHeight); + [self boundingRectWillChange:self.pendingAttributes.sourceBounds animated:YES]; + [UIView commitAnimations]; + } + break; + } + default: + break; + } +} + +- (void)performAlphaAnimationFrom:(CGFloat)fromAlpha to:(CGFloat)toAlpha duration:(CGFloat)duration exception:(NSInteger)exception +{ + [self.collectionView.visibleCells enumerateObjectsUsingBlock:^(FSCalendarCell *cell, NSUInteger idx, BOOL *stop) { + if (CGRectContainsPoint(self.collectionView.bounds, cell.center)) { + BOOL shouldPerformAlpha = NO; + NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell]; + switch (self.collectionViewLayout.scrollDirection) { + case UICollectionViewScrollDirectionHorizontal: { + shouldPerformAlpha = indexPath.item%6 != exception; + break; + } + case UICollectionViewScrollDirectionVertical: { + shouldPerformAlpha = indexPath.item/7 != exception; + break; + } + } + if (shouldPerformAlpha) { + CABasicAnimation *opacity = [CABasicAnimation animationWithKeyPath:@"opacity"]; + opacity.duration = duration; + opacity.fromValue = @(fromAlpha); + opacity.toValue = @(toAlpha); + opacity.removedOnCompletion = NO; + opacity.fillMode = kCAFillModeForwards; + [cell.contentView.layer addAnimation:opacity forKey:@"opacity"]; + } + } + }]; +} + +- (void)performPathAnimationFrom:(CGPathRef)fromPath to:(CGPathRef)toPath duration:(CGFloat)duration completion:(void (^)())completion +{ + CABasicAnimation *path = [CABasicAnimation animationWithKeyPath:@"path"]; + path.fromValue = (__bridge id)fromPath; + path.toValue = (__bridge id)toPath; + path.duration = duration; + path.fillMode = kCAFillModeForwards; + path.removedOnCompletion = NO; + path.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + [CATransaction begin]; + [CATransaction setCompletionBlock:completion]; + [CATransaction setAnimationDuration:duration]; + [self.calendar.maskLayer addAnimation:path forKey:@"path"]; + [CATransaction commit]; +} + +- (void)performAlphaAnimationWithProgress:(CGFloat)progress +{ + CGFloat opacity = self.transition == FSCalendarTransitionMonthToWeek ? 1-progress: progress; + [self.collectionView.visibleCells enumerateObjectsUsingBlock:^(FSCalendarCell *cell, NSUInteger idx, BOOL *stop) { + if (CGRectContainsPoint(self.collectionView.bounds, cell.center)) { + BOOL shouldPerformAlpha = NO; + NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell]; + switch (self.collectionViewLayout.scrollDirection) { + case UICollectionViewScrollDirectionHorizontal: { + shouldPerformAlpha = indexPath.item%6 != self.pendingAttributes.focusedRowNumber; + break; + } + case UICollectionViewScrollDirectionVertical: { + shouldPerformAlpha = indexPath.item/7 != self.pendingAttributes.focusedRowNumber; + break; + } + } + if (shouldPerformAlpha) { + cell.contentView.layer.opacity = opacity; + } + } + }]; +} + +- (void)performPathAnimationWithProgress:(CGFloat)progress +{ + CGFloat targetHeight = CGRectGetHeight(self.pendingAttributes.targetBounds); + CGFloat sourceHeight = CGRectGetHeight(self.pendingAttributes.sourceBounds); + CGFloat currentHeight = sourceHeight - (sourceHeight-targetHeight)*progress - self.calendar.scopeHandle.fs_height; + CGRect currentPathRect = CGRectMake(0, 0, CGRectGetWidth(self.pendingAttributes.targetBounds), currentHeight); + CGRect currentBounds = CGRectMake(0, 0, CGRectGetWidth(self.pendingAttributes.targetBounds), currentHeight+self.calendar.scopeHandle.fs_height); + CGPathRef currentPath = [UIBezierPath bezierPathWithRect:currentPathRect].CGPath; + self.calendar.maskLayer.path = currentPath; + self.collectionView.fs_top = (-self.pendingAttributes.focusedRowNumber*self.calendar.preferredRowHeight)*(self.transition == FSCalendarTransitionMonthToWeek?progress:(1-progress)); + [self boundingRectWillChange:currentBounds animated:NO]; + if (self.transition == FSCalendarTransitionWeekToMonth) { + self.calendar.contentView.fs_height = targetHeight; + } +} @end + + +@implementation FSCalendarTransitionAttributes + + +@end + diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAppearance.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAppearance.m index c9e9d066..cb9396b4 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAppearance.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarAppearance.m @@ -544,6 +544,11 @@ - (void)adjustTitleIfNecessary _preferredSubtitleFontSize = FSCalendarStandardSubtitleTextSize * 1.15; _preferredWeekdayFontSize = _preferredTitleFontSize; } + CGFloat multiplier = 1+(_calendar.lineHeightMultiplier-1)/4; + _preferredHeaderTitleFontSize *= multiplier; + _preferredTitleFontSize *= multiplier; + _preferredSubtitleFontSize *= multiplier; + _preferredSubtitleFontSize *= multiplier; } // reload appearance @@ -565,13 +570,6 @@ - (void)invalidateAppearance [self invalidateTextColors]; [self invalidateBorderColors]; [self invalidateFillColors]; - /* - [_calendar.collectionView.visibleCells enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - [_calendar invalidateAppearanceForCell:obj]; - }]; - [_calendar.header.collectionView.visibleCells makeObjectsPerformSelector:@selector(setNeedsLayout)]; - [_calendar.visibleStickyHeaders makeObjectsPerformSelector:@selector(setNeedsLayout)]; - */ } - (void)invalidateFonts diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.h b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.h index 01d303ef..3a8a2cc4 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.h +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.h @@ -23,6 +23,7 @@ @property (weak, nonatomic) FSCalendarEventIndicator *eventIndicator; @property (strong, nonatomic) NSDate *date; +@property (strong, nonatomic) NSString *title; @property (strong, nonatomic) NSString *subtitle; @property (strong, nonatomic) UIImage *image; diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.m index 402f6402..59da1163 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCell.m @@ -141,7 +141,7 @@ - (void)configureCell if (self.contentView.hidden) { return; } - _titleLabel.text = [NSString stringWithFormat:@"%@",@([_calendar dayOfDate:_date])]; + _titleLabel.text = self.title ?: [NSString stringWithFormat:@"%@",@([_calendar dayOfDate:_date])]; if (_subtitle) { _subtitleLabel.text = _subtitle; if (_subtitleLabel.hidden) { @@ -173,6 +173,8 @@ - (void)configureCell _titleLabel.frame = CGRectMake(0, _appearance.titleVerticalOffset, self.contentView.fs_width, floor(self.contentView.fs_height*5.0/6.0)); } + _imageView.center = CGPointMake(self.contentView.fs_width/2.0, _imageView.center.y); + } UIColor *textColor = self.colorForTitleLabel; @@ -203,14 +205,14 @@ - (void)configureCell _shapeLayer.path = path; } - CGColorRef fillColor = self.colorForCellFill.CGColor; - if (!CGColorEqualToColor(_shapeLayer.fillColor, fillColor)) { - _shapeLayer.fillColor = fillColor; + CGColorRef cellFillColor = self.colorForCellFill.CGColor; + if (!CGColorEqualToColor(_shapeLayer.fillColor, cellFillColor)) { + _shapeLayer.fillColor = cellFillColor; } - CGColorRef borderColor = self.colorForCellBorder.CGColor; - if (!CGColorEqualToColor(_shapeLayer.strokeColor, borderColor)) { - _shapeLayer.strokeColor = borderColor; + CGColorRef cellBorderColor = self.colorForCellBorder.CGColor; + if (!CGColorEqualToColor(_shapeLayer.strokeColor, cellBorderColor)) { + _shapeLayer.strokeColor = cellBorderColor; } } diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCollectionView.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCollectionView.m index 1b450fdc..3abbde2a 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCollectionView.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarCollectionView.m @@ -7,7 +7,6 @@ // #import "FSCalendarCollectionView.h" -#import "FSCalendarCell.h" @interface FSCalendarCollectionView () diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.h b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.h index 3d50cc3e..5c938281 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.h +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.h @@ -26,6 +26,7 @@ UIKIT_EXTERN CGFloat const FSCalendarStandardSubtitleTextSize; UIKIT_EXTERN CGFloat const FSCalendarStandardWeekdayTextSize; UIKIT_EXTERN CGFloat const FSCalendarStandardHeaderTextSize; UIKIT_EXTERN CGFloat const FSCalendarMaximumEventDotDiameter; +UIKIT_EXTERN CGFloat const FSCalendarStandardScopeHandleHeight; UIKIT_EXTERN NSInteger const FSCalendarDefaultHourComponent; @@ -35,10 +36,13 @@ UIKIT_EXTERN NSInteger const FSCalendarDefaultHourComponent; #define FSCalendarDeviceIsIPad [[UIDevice currentDevice].model hasPrefix:@"iPad"] #endif -#define FSCalendarStandardSelectionColor FSColorRGBA(31,119,219,1.0) -#define FSCalendarStandardTodayColor FSColorRGBA(198,51,42 ,1.0) -#define FSCalendarStandardTitleTextColor FSColorRGBA(14,69,221 ,1.0) -#define FSCalendarStandardEventDotColor FSColorRGBA(31,119,219,0.75) +#define FSCalendarStandardSelectionColor FSColorRGBA(31,119,219,1.0) +#define FSCalendarStandardTodayColor FSColorRGBA(198,51,42 ,1.0) +#define FSCalendarStandardTitleTextColor FSColorRGBA(14,69,221 ,1.0) +#define FSCalendarStandardEventDotColor FSColorRGBA(31,119,219,0.75) + +#define FSCalendarStandardSeparatorColor [[UIColor lightGrayColor] colorWithAlphaComponent:0.25] +#define FSCalendarStandardScopeHandleColor [[UIColor lightGrayColor] colorWithAlphaComponent:0.50] #define FSColorRGBA(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.m index 3059465d..3e2dfae6 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarConstance.m @@ -23,5 +23,6 @@ CGFloat const FSCalendarStandardWeekdayTextSize = 14; CGFloat const FSCalendarStandardHeaderTextSize = 16.5; CGFloat const FSCalendarMaximumEventDotDiameter = 4.8; +CGFloat const FSCalendarStandardScopeHandleHeight = 26; NSInteger const FSCalendarDefaultHourComponent = 0; \ No newline at end of file diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarDynamicHeader.h b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarDynamicHeader.h index f0caad0b..67c1c036 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarDynamicHeader.h +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarDynamicHeader.h @@ -15,13 +15,17 @@ #import "FSCalendarCell.h" #import "FSCalendarHeader.h" #import "FSCalendarStickyHeader.h" +#import "FSCalendarCollectionView.h" +#import "FSCalendarFlowLayout.h" +#import "FSCalendarScopeHandle.h" @interface FSCalendar (Dynamic) -@property (readonly, nonatomic) CAShapeLayer *maskLayer; @property (readonly, nonatomic) FSCalendarHeader *header; -@property (readonly, nonatomic) UICollectionView *collectionView; -@property (readonly, nonatomic) UICollectionViewFlowLayout *collectionViewLayout; +@property (readonly, nonatomic) FSCalendarCollectionView *collectionView; +@property (readonly, nonatomic) FSCalendarScopeHandle *scopeHandle; +@property (readonly, nonatomic) FSCalendarFlowLayout *collectionViewLayout; +@property (readonly, nonatomic) CAShapeLayer *maskLayer; @property (readonly, nonatomic) NSArray *weekdays; @property (readonly, nonatomic) BOOL ibEditing; @property (readonly, nonatomic) BOOL floatingMode; diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarEventIndicator.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarEventIndicator.m index 6705c7d1..b0a8d71b 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarEventIndicator.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarEventIndicator.m @@ -36,8 +36,7 @@ - (instancetype)initWithFrame:(CGRect)frame self.eventLayers = [NSMutableArray arrayWithCapacity:3]; for (int i = 0; i < 3; i++) { CALayer *layer = [CALayer layer]; - layer.masksToBounds = YES; - layer.backgroundColor = FSCalendarStandardEventDotColor.CGColor; + layer.backgroundColor = [UIColor clearColor].CGColor; [self.eventLayers addObject:layer]; [self.contentView.layer addSublayer:layer]; } @@ -68,11 +67,10 @@ - (void)layoutSublayersOfLayer:(CALayer *)layer _needsAdjustingViewFrame = NO; CGFloat diameter = MIN(MIN(self.fs_width, self.fs_height),FSCalendarMaximumEventDotDiameter); for (int i = 0; i < self.eventLayers.count; i++) { - CALayer *layer = self.eventLayers[i]; - layer.hidden = i >= self.numberOfEvents; - if (!layer.hidden) { - layer.frame = CGRectMake(2*i*diameter, (self.fs_height-diameter)*0.5, diameter, diameter); - layer.cornerRadius = diameter * 0.5; + CALayer *eventLayer = self.eventLayers[i]; + eventLayer.hidden = i >= self.numberOfEvents; + if (!eventLayer.hidden) { + eventLayer.frame = CGRectMake(2*i*diameter, (self.fs_height-diameter)*0.5, diameter, diameter); } } } @@ -86,13 +84,13 @@ - (void)layoutSublayersOfLayer:(CALayer *)layer NSArray *colors = (NSArray *)_color; if (colors.count) { UIColor *lastColor = colors.firstObject; - for (int i = 0; i < self.numberOfEvents; i++) { + for (int i = 0; i < self.eventLayers.count; i++) { if (i < colors.count) { lastColor = colors[i]; } - CALayer *layer = self.eventLayers[i]; + CALayer *eventLayer = self.eventLayers[i]; UIImage *dotImage = [self dotImageWithColor:lastColor diameter:diameter]; - layer.contents = (id)dotImage.CGImage; + eventLayer.contents = (id)dotImage.CGImage; } } } diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarScopeHandle.h b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarScopeHandle.h new file mode 100644 index 00000000..9c18cb48 --- /dev/null +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarScopeHandle.h @@ -0,0 +1,27 @@ +// +// FSCalendarScopeHandle.h +// FSCalendar +// +// Created by dingwenchao on 4/29/16. +// Copyright © 2016 wenchaoios. All rights reserved. +// + +#import + +@class FSCalendar, FSCalendarScopeHandle; + +@protocol FSCalendarScopeHandleDelegate + +@optional +- (BOOL)scopeHandleShouldBegin:(FSCalendarScopeHandle *)scopeHandle; +- (void)scopeHandleDidBegin:(FSCalendarScopeHandle *)scopeHandle; +- (void)scopeHandleDidUpdate:(FSCalendarScopeHandle *)scopeHandle;; +- (void)scopeHandleDidEnd:(FSCalendarScopeHandle *)scopeHandle; +@end + +@interface FSCalendarScopeHandle : UIView + +@property (weak, nonatomic) UIPanGestureRecognizer *panGesture; +@property (weak, nonatomic) id delegate; + +@end diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarScopeHandle.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarScopeHandle.m new file mode 100644 index 00000000..73f8048c --- /dev/null +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarScopeHandle.m @@ -0,0 +1,118 @@ +// +// FSCalendarScopeHandle.m +// FSCalendar +// +// Created by dingwenchao on 4/29/16. +// Copyright © 2016 wenchaoios. All rights reserved. +// + +#import "FSCalendarScopeHandle.h" +#import "FSCalendar.h" +#import "FSCalendarAnimator.h" +#import "UIView+FSExtension.h" + +@interface FSCalendarScopeHandle () + +@property (weak, nonatomic) UIView *topBorder; +@property (weak, nonatomic) UIView *handleIndicator; + +@property (weak, nonatomic) FSCalendarAppearance *appearance; + +@property (assign, nonatomic) CGFloat lastTranslation; + +- (void)handlePan:(id)sender; + +@end + +@implementation FSCalendarScopeHandle + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + + UIView *view; + + view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 1)]; + view.backgroundColor = FSCalendarStandardSeparatorColor; + [self addSubview:view]; + self.topBorder = view; + + view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 6)]; + view.layer.shouldRasterize = YES; + view.layer.masksToBounds = YES; + view.layer.cornerRadius = 3; + view.layer.backgroundColor = FSCalendarStandardScopeHandleColor.CGColor; + [self addSubview:view]; + self.handleIndicator = view; + + UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; + panGesture.minimumNumberOfTouches = 1; + panGesture.maximumNumberOfTouches = 2; + panGesture.delegate = self; + [self addGestureRecognizer:panGesture]; + self.panGesture = panGesture; + + } + return self; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + self.topBorder.frame = CGRectMake(0, 0, self.fs_width, 1); + self.handleIndicator.center = CGPointMake(self.fs_width/2, self.fs_height/2-0.5); +} + +#pragma mark - Target actions + +- (void)handlePan:(id)sender +{ + switch (self.panGesture.state) { + case UIGestureRecognizerStateBegan: { + if (self.delegate && [self.delegate respondsToSelector:@selector(scopeHandleDidBegin:)]) { + [self.delegate scopeHandleDidBegin:self]; + } + break; + } + case UIGestureRecognizerStateChanged: { + if (self.delegate && [self.delegate respondsToSelector:@selector(scopeHandleDidUpdate:)]) { + [self.delegate scopeHandleDidUpdate:self]; + } + break; + } + case UIGestureRecognizerStateEnded: { + if (self.delegate && [self.delegate respondsToSelector:@selector(scopeHandleDidEnd:)]) { + [self.delegate scopeHandleDidEnd:self]; + } + break; + } + case UIGestureRecognizerStateCancelled: { + if (self.delegate && [self.delegate respondsToSelector:@selector(scopeHandleDidEnd:)]) { + [self.delegate scopeHandleDidEnd:self]; + } + break; + } + case UIGestureRecognizerStateFailed: { + if (self.delegate && [self.delegate respondsToSelector:@selector(scopeHandleDidEnd:)]) { + [self.delegate scopeHandleDidEnd:self]; + } + break; + } + default: { + break; + } + } +} + +#pragma mark - + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(scopeHandleShouldBegin:)]) { + return [self.delegate scopeHandleShouldBegin:self]; + } + return NO; +} + +@end diff --git a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarStickyHeader.m b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarStickyHeader.m index 10381174..6769965b 100644 --- a/iOS/Pods/FSCalendar/FSCalendar/FSCalendarStickyHeader.m +++ b/iOS/Pods/FSCalendar/FSCalendar/FSCalendarStickyHeader.m @@ -121,7 +121,7 @@ - (void)reloadData - (void)invalidateHeaderFont { - _titleLabel.font = _appearance.headerTitleFont; + _titleLabel.font = _appearance.preferredHeaderTitleFont; } - (void)invalidateHeaderTextColor diff --git a/iOS/Pods/FSCalendar/FSCalendar/NSDate+FSExtension.h b/iOS/Pods/FSCalendar/FSCalendar/NSDate+FSExtension.h deleted file mode 100644 index c91d31ce..00000000 --- a/iOS/Pods/FSCalendar/FSCalendar/NSDate+FSExtension.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// NSDate+FSExtension.h -// Pods -// -// Created by Wenchao Ding on 29/1/15. -// -// - -#import - -/** - * This category is deprecated in this framework as it premised that the calendar should be gregorian. But feel free to use it for gregorian-only. - */ -@interface NSDate (FSExtension) - -@property (readonly, nonatomic) NSInteger fs_year; -@property (readonly, nonatomic) NSInteger fs_month; -@property (readonly, nonatomic) NSInteger fs_day; -@property (readonly, nonatomic) NSInteger fs_weekday; -@property (readonly, nonatomic) NSInteger fs_weekOfYear; -@property (readonly, nonatomic) NSInteger fs_hour; -@property (readonly, nonatomic) NSInteger fs_minute; -@property (readonly, nonatomic) NSInteger fs_second; - -@property (readonly, nonatomic) NSDate *fs_dateByIgnoringTimeComponents; -@property (readonly, nonatomic) NSDate *fs_firstDayOfMonth; -@property (readonly, nonatomic) NSDate *fs_lastDayOfMonth; -@property (readonly, nonatomic) NSDate *fs_firstDayOfWeek; -@property (readonly, nonatomic) NSDate *fs_middleOfWeek; -@property (readonly, nonatomic) NSDate *fs_tomorrow; -@property (readonly, nonatomic) NSDate *fs_yesterday; -@property (readonly, nonatomic) NSInteger fs_numberOfDaysInMonth; - -+ (instancetype)fs_dateFromString:(NSString *)string format:(NSString *)format; -+ (instancetype)fs_dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day; - -- (NSDate *)fs_dateByAddingYears:(NSInteger)years; -- (NSDate *)fs_dateBySubtractingYears:(NSInteger)years; -- (NSDate *)fs_dateByAddingMonths:(NSInteger)months; -- (NSDate *)fs_dateBySubtractingMonths:(NSInteger)months; -- (NSDate *)fs_dateByAddingWeeks:(NSInteger)weeks; -- (NSDate *)fs_dateBySubtractingWeeks:(NSInteger)weeks; -- (NSDate *)fs_dateByAddingDays:(NSInteger)days; -- (NSDate *)fs_dateBySubtractingDays:(NSInteger)days; -- (NSInteger)fs_yearsFrom:(NSDate *)date; -- (NSInteger)fs_monthsFrom:(NSDate *)date; -- (NSInteger)fs_weeksFrom:(NSDate *)date; -- (NSInteger)fs_daysFrom:(NSDate *)date; - -- (BOOL)fs_isEqualToDateForMonth:(NSDate *)date; -- (BOOL)fs_isEqualToDateForWeek:(NSDate *)date; -- (BOOL)fs_isEqualToDateForDay:(NSDate *)date; - -- (NSString *)fs_stringWithFormat:(NSString *)format; -- (NSString *)fs_string; - -@end - - -@interface NSCalendar (FSExtension) - -+ (instancetype)fs_sharedCalendar; - -@end - -@interface NSDateFormatter (FSExtension) - -+ (instancetype)fs_sharedDateFormatter; - -@end - -@interface NSDateComponents (FSExtension) - -+ (instancetype)fs_sharedDateComponents; - -@end - - - diff --git a/iOS/Pods/FSCalendar/FSCalendar/NSDate+FSExtension.m b/iOS/Pods/FSCalendar/FSCalendar/NSDate+FSExtension.m deleted file mode 100644 index 7a464135..00000000 --- a/iOS/Pods/FSCalendar/FSCalendar/NSDate+FSExtension.m +++ /dev/null @@ -1,344 +0,0 @@ -// -// NSDate+FSExtension.m -// Pods -// -// Created by Wenchao Ding on 29/1/15. -// -// - -#import "NSDate+FSExtension.h" - -@implementation NSDate (FSExtension) - -- (NSInteger)fs_year -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitYear fromDate:self]; - return component.year; -} - -- (NSInteger)fs_month -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitMonth - fromDate:self]; - return component.month; -} - -- (NSInteger)fs_day -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitDay - fromDate:self]; - return component.day; -} - -- (NSInteger)fs_weekday -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitWeekday fromDate:self]; - return component.weekday; -} - -- (NSInteger)fs_weekOfYear -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitWeekOfYear fromDate:self]; - return component.weekOfYear; -} - -- (NSInteger)fs_hour -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitHour - fromDate:self]; - return component.hour; -} - -- (NSInteger)fs_minute -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitMinute - fromDate:self]; - return component.minute; -} - -- (NSInteger)fs_second -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *component = [calendar components:NSCalendarUnitSecond - fromDate:self]; - return component.second; -} - -- (NSDate *)fs_dateByIgnoringTimeComponents -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self]; - return [calendar dateFromComponents:components]; -} - -- (NSDate *)fs_firstDayOfMonth -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth| NSCalendarUnitDay fromDate:self]; - components.day = 1; - return [calendar dateFromComponents:components]; -} - -- (NSDate *)fs_lastDayOfMonth -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self]; - components.month++; - components.day = 0; - return [calendar dateFromComponents:components]; -} - -- (NSDate *)fs_firstDayOfWeek -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *weekdayComponents = [calendar components:NSCalendarUnitWeekday fromDate:self]; - NSDateComponents *componentsToSubtract = [NSDateComponents fs_sharedDateComponents]; - componentsToSubtract.day = - (weekdayComponents.weekday - calendar.firstWeekday); - NSDate *beginningOfWeek = [calendar dateByAddingComponents:componentsToSubtract toDate:self options:0]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:beginningOfWeek]; - beginningOfWeek = [calendar dateFromComponents:components]; - componentsToSubtract.day = NSIntegerMax; - return beginningOfWeek; -} - -- (NSDate *)fs_middleOfWeek -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *weekdayComponents = [calendar components:NSCalendarUnitWeekday fromDate:self]; - NSDateComponents *componentsToSubtract = [NSDateComponents fs_sharedDateComponents]; - componentsToSubtract.day = - (weekdayComponents.weekday - calendar.firstWeekday) + 3; - NSDate *middleOfWeek = [calendar dateByAddingComponents:componentsToSubtract toDate:self options:0]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:middleOfWeek]; - middleOfWeek = [calendar dateFromComponents:components]; - componentsToSubtract.day = NSIntegerMax; - return middleOfWeek; -} - -- (NSDate *)fs_tomorrow -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self]; - components.day++; - return [calendar dateFromComponents:components]; -} - -- (NSDate *)fs_yesterday -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self]; - components.day--; - return [calendar dateFromComponents:components]; -} - -- (NSInteger)fs_numberOfDaysInMonth -{ - NSCalendar *c = [NSCalendar fs_sharedCalendar]; - NSRange days = [c rangeOfUnit:NSCalendarUnitDay - inUnit:NSCalendarUnitMonth - forDate:self]; - return days.length; -} - -+ (instancetype)fs_dateFromString:(NSString *)string format:(NSString *)format -{ - NSDateFormatter *formatter = [NSDateFormatter fs_sharedDateFormatter]; - formatter.dateFormat = format; - return [formatter dateFromString:string]; -} - -+ (instancetype)fs_dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [NSDateComponents fs_sharedDateComponents]; - components.year = year; - components.month = month; - components.day = day; - NSDate *date = [calendar dateFromComponents:components]; - components.year = NSIntegerMax; - components.month = NSIntegerMax; - components.day = NSIntegerMax; - return date; -} - -- (NSDate *)fs_dateByAddingYears:(NSInteger)years -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [NSDateComponents fs_sharedDateComponents]; - components.year = years; - NSDate *date = [calendar dateByAddingComponents:components toDate:self options:0]; - components.year = NSIntegerMax; - return date; -} - -- (NSDate *)fs_dateBySubtractingYears:(NSInteger)years -{ - return [self fs_dateByAddingYears:-years]; -} - -- (NSDate *)fs_dateByAddingMonths:(NSInteger)months -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [NSDateComponents fs_sharedDateComponents]; - components.month = months; - NSDate *date = [calendar dateByAddingComponents:components toDate:self options:0]; - components.month = NSIntegerMax; - return date; -} - -- (NSDate *)fs_dateBySubtractingMonths:(NSInteger)months -{ - return [self fs_dateByAddingMonths:-months]; -} - -- (NSDate *)fs_dateByAddingWeeks:(NSInteger)weeks -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [NSDateComponents fs_sharedDateComponents]; - components.weekOfYear = weeks; - NSDate *date = [calendar dateByAddingComponents:components toDate:self options:0]; - components.weekOfYear = NSIntegerMax; - return date; -} - --(NSDate *)fs_dateBySubtractingWeeks:(NSInteger)weeks -{ - return [self fs_dateByAddingWeeks:-weeks]; -} - -- (NSDate *)fs_dateByAddingDays:(NSInteger)days -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [NSDateComponents fs_sharedDateComponents]; - components.day = days; - NSDate *date = [calendar dateByAddingComponents:components toDate:self options:0]; - components.day = NSIntegerMax; - return date; -} - -- (NSDate *)fs_dateBySubtractingDays:(NSInteger)days -{ - return [self fs_dateByAddingDays:-days]; -} - -- (NSInteger)fs_yearsFrom:(NSDate *)date -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitYear - fromDate:date - toDate:self - options:0]; - return components.year; -} - -- (NSInteger)fs_monthsFrom:(NSDate *)date -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitMonth - fromDate:date - toDate:self - options:0]; - return components.month; -} - -- (NSInteger)fs_weeksFrom:(NSDate *)date -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitWeekOfYear - fromDate:date - toDate:self - options:0]; - return components.weekOfYear; -} - -- (NSInteger)fs_daysFrom:(NSDate *)date -{ - NSCalendar *calendar = [NSCalendar fs_sharedCalendar]; - NSDateComponents *components = [calendar components:NSCalendarUnitDay - fromDate:date - toDate:self - options:0]; - return components.day; -} - -- (NSString *)fs_stringWithFormat:(NSString *)format -{ - NSDateFormatter *formatter = [NSDateFormatter fs_sharedDateFormatter]; - formatter.dateFormat = format; - return [formatter stringFromDate:self]; -} - -- (NSString *)fs_string -{ - return [self fs_stringWithFormat:@"yyyyMMdd"]; -} - - -- (BOOL)fs_isEqualToDateForMonth:(NSDate *)date -{ - return self.fs_year == date.fs_year && self.fs_month == date.fs_month; -} - -- (BOOL)fs_isEqualToDateForWeek:(NSDate *)date -{ - return self.fs_year == date.fs_year && self.fs_weekOfYear == date.fs_weekOfYear; -} - -- (BOOL)fs_isEqualToDateForDay:(NSDate *)date -{ - return self.fs_year == date.fs_year && self.fs_month == date.fs_month && self.fs_day == date.fs_day; -} - -@end - - -@implementation NSCalendar (FSExtension) - -+ (instancetype)fs_sharedCalendar -{ - static id instance; - static dispatch_once_t fs_sharedCalendar_onceToken; - dispatch_once(&fs_sharedCalendar_onceToken, ^{ - instance = [NSCalendar currentCalendar]; - }); - return instance; -} - -@end - - -@implementation NSDateFormatter (FSExtension) - -+ (instancetype)fs_sharedDateFormatter -{ - static id instance; - static dispatch_once_t fs_sharedDateFormatter_onceToken; - dispatch_once(&fs_sharedDateFormatter_onceToken, ^{ - instance = [[NSDateFormatter alloc] init]; - }); - return instance; -} - -@end - -@implementation NSDateComponents (FSExtension) - -+ (instancetype)fs_sharedDateComponents -{ - static id instance; - static dispatch_once_t fs_sharedDateFormatter_onceToken; - dispatch_once(&fs_sharedDateFormatter_onceToken, ^{ - instance = [[NSDateComponents alloc] init]; - }); - return instance; -} - -@end - - diff --git a/iOS/Pods/FSCalendar/FSCalendar/NSString+FSExtension.h b/iOS/Pods/FSCalendar/FSCalendar/NSString+FSExtension.h deleted file mode 100644 index abffa9a2..00000000 --- a/iOS/Pods/FSCalendar/FSCalendar/NSString+FSExtension.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// NSString+FSExtension.h -// FSCalendar -// -// Created by Wenchao Ding on 8/29/15. -// Copyright (c) 2015 wenchaoios. All rights reserved. -// - -#import - -@interface NSString (FSExtension) - -- (NSDate *)fs_dateWithFormat:(NSString *)format; -- (NSDate *)fs_date; - -@end diff --git a/iOS/Pods/FSCalendar/FSCalendar/NSString+FSExtension.m b/iOS/Pods/FSCalendar/FSCalendar/NSString+FSExtension.m deleted file mode 100644 index ce22fb03..00000000 --- a/iOS/Pods/FSCalendar/FSCalendar/NSString+FSExtension.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// NSString+FSExtension.m -// FSCalendar -// -// Created by Wenchao Ding on 8/29/15. -// Copyright (c) 2015 wenchaoios. All rights reserved. -// - -#import "NSString+FSExtension.h" -#import "NSDate+FSExtension.h" - -@implementation NSString (FSExtension) - -- (NSDate *)fs_dateWithFormat:(NSString *)format -{ - NSDateFormatter *formatter = [NSDateFormatter fs_sharedDateFormatter]; - formatter.dateFormat = format; - return [formatter dateFromString:self]; -} - -- (NSDate *)fs_date -{ - return [self fs_dateWithFormat:@"yyyyMMdd"]; -} - -@end diff --git a/iOS/Pods/FSCalendar/README.md b/iOS/Pods/FSCalendar/README.md index c62c481a..2f6477a3 100644 --- a/iOS/Pods/FSCalendar/README.md +++ b/iOS/Pods/FSCalendar/README.md @@ -1,13 +1,28 @@ + ![fscalendar](https://cloud.githubusercontent.com/assets/5186464/6655324/213a814a-cb36-11e4-9add-f80515a83291.png)

[![Travis](https://travis-ci.org/WenchaoD/FSCalendar.svg?branch=master)](https://travis-ci.org/WenchaoD/FSCalendar) [![Version](https://img.shields.io/cocoapods/v/FSCalendar.svg?style=flat)](http://cocoadocs.org/docsets/FSCalendar) [![Platform](https://img.shields.io/badge/platform-iOS%207%2B-blue.svg?style=flat)](http://cocoadocs.org/docsets/FSCalendar) [![Swift2 compatible](https://img.shields.io/badge/swift2-compatible-4BC51D.svg?style=flat)](https://developer.apple.com/swift/) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) -[![License](https://img.shields.io/cocoapods/l/FSCalendar.svg?style=flat)](http://cocoadocs.org/docsets/FSCalendar) -[![Join the chat at https://gitter.im/WenchaoD/FSCalendar](https://badges.gitter.im/WenchaoD/FSCalendar.svg)](https://gitter.im/WenchaoD/FSCalendar?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![QQ group](https://img.shields.io/badge/QQ%E7%BE%A4-323861692-orange.svg)](https://github.com/WenchaoD) +[![Twitter](https://img.shields.io/badge/Twitter-@WenchaoD-55ACEE.svg)](https://twitter.com/WenchaoD) +[![微博](https://img.shields.io/badge/%E5%BE%AE%E5%8D%9A-@WenchaoD-%23E6162D.svg)](http://weibo.com/WenchaoD) + +* 在您静静的离开之前,请确保点击了这个按钮star
+* Before leaving quietly, please make sure you've taken good care of this button.star + + +# [中文介绍](http://www.jianshu.com/notebooks/4276521/latest) + + +# Table of contents +* [Screenshots](#screenshots) +* [Installation](#installation) +* [Advanced usage](#advanced_usage) +* [Support me](#support) -# Screenshots +# Screenshots ## iPhone ![fscalendar](https://cloud.githubusercontent.com/assets/5186464/10262249/4fabae40-69f2-11e5-97ab-afbacd0a3da2.jpg) @@ -18,7 +33,15 @@ ## Working with AutoLayout and Orientation ![fscalendar-scope-orientation-autolayout](https://cloud.githubusercontent.com/assets/5186464/13728798/59855e3e-e95e-11e5-84db-60f843427ef3.gif) -# Installation +## Hide placeholder dates +![fscalendar-showsplaceholder](https://cloud.githubusercontent.com/assets/5186464/13727902/21a90042-e940-11e5-9b9f-392f38cf007d.gif) + +## Scope handle +![scopehandle](https://cloud.githubusercontent.com/assets/5186464/15096674/5270ef9c-1536-11e6-88b0-c4e3e8f93115.gif) + +> FSCalendar doesn't change frame or the constraint by itself, see [Adjusts frame dynamicly](#adjusts_frame_dynamicly) + +# Installation ## CocoaPods: @@ -95,15 +118,12 @@ self.calendar = calendar ```
+## Warning +`FSCalendar` doesn't change frame by itself, Please implement -## Hide placeholder dates -![fscalendar-showsplaceholder](https://cloud.githubusercontent.com/assets/5186464/13727902/21a90042-e940-11e5-9b9f-392f38cf007d.gif) - -1. Set `calendar.showsPlaceholders = NO`; -2. Implement `-calendar:boundingRectWillChange:animated:` +* For autoLayout ```objc -// For autoLayout - (void)calendar:(FSCalendar *)calendar boundingRectWillChange:(CGRect)bounds animated:(BOOL)animated { _calendarHeightConstraint.constant = CGRectGetHeight(bounds); @@ -111,8 +131,9 @@ self.calendar = calendar } ``` +* For manual layout + ```objc -// For manual layout - (void)calendar:(FSCalendar *)calendar boundingRectWillChange:(CGRect)bounds animated:(BOOL)animated { calendar.frame = (CGRect){calendar.frame.origin,bounds.size}; @@ -122,28 +143,33 @@ self.calendar = calendar ### Roll with Interface Builder ![fscalendar - ibdesignable](https://cloud.githubusercontent.com/assets/5186464/9301716/2e76a2ca-4503-11e5-8450-1fa7aa93e9fd.gif) -## More Usage +## Advanced Usage * To view more usage, download the zip file and read the example. * Or you could refer to [this document](https://github.com/WenchaoD/FSCalendar/blob/master/MOREUSAGE.md) * To view the full documentation, see [CocoaPods Documentation](http://cocoadocs.org/docsets/FSCalendar/2.0.1/) -# If you like this repo -* ***Star*** this repo. -* Send your calendar screenshot or `itunes link address` [here](https://github.com/WenchaoD/FSCalendar/issues/2). +# Support me via [![paypal](https://www.paypalobjects.com/webstatic/i/logo/rebrand/ppcom.svg)](https://www.paypalobjects.com/webstatic/i/logo/rebrand/ppcom.svg)
-# Support me via [![paypal](https://www.paypalobjects.com/webstatic/i/logo/rebrand/ppcom.svg)](https://www.paypalobjects.com/webstatic/i/logo/rebrand/ppcom.svg) * ☕️ [This coffee is on me!](https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=Z84P82H3V4Q26&lc=C2&item_name=This%20coffee%20is%20on%20me%21&item_number=Support%20FSCalendar%20%2d%20WenchaoIOS&amount=5%2e00¤cy_code=USD&button_subtype=services&bn=PP%2dBuyNowBF%3abtn_buynowCC_LG%2egif%3aNonHosted) * [Lunch is on me!](https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=Z84P82H3V4Q26&lc=C2&item_name=Lunch%20is%20on%20me%21&item_number=Support%20FSCalendar&amount=10%2e00¤cy_code=USD&button_subtype=services&bn=PP%2dBuyNowBF%3abtn_buynowCC_LG%2egif%3aNonHosted) * [Have a nice dinner!](https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=Z84P82H3V4Q26&lc=C2&item_name=Tonight%27s%20dinner%20is%20on%20me%21&item_number=Support%20FSCalendar%20%2d%20WenchaoIOS&amount=25%2e00¤cy_code=USD&button_subtype=services&bn=PP%2dBuyNowBF%3abtn_buynowCC_LG%2egif%3aNonHosted) * [Greate work! Keep the change!](https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=Z84P82H3V4Q26&lc=C2&item_name=Great%20work%21%20Keep%20the%20change%21&item_number=Support%20FSCalendar%20%2d%20WenchaoIOS&amount=100%2e00¤cy_code=USD&button_subtype=services&bn=PP%2dBuyNowBF%3abtn_buynowCC_LG%2egif%3aNonHosted) -# License -FSCalendar is available under the MIT license. See the LICENSE file for more info. +
-# Contributions -* Issues and pull requests are absolutely welcome. -* For code contributions, please follow [Coding Guidelines for Cocoa](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html) +# 打赏支持 -# Contact -* Email: `f33chobits@gmail.com` +

+ + +
+ + +# Communications +* If you found a bug ***with certain steps to reproduce***, open an issue. +* If you need help about your code, use [stackoverflow](http://stackoverflow.com/questions/tagged/fscalendar) and tag `fscalendar` +* If you want to contribute, submit a pull request. Make sure to follow [Coding Guidelines for Cocoa](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html) + +# License +FSCalendar is available under the MIT license. See the LICENSE file for more info. diff --git a/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTUHeadingRequest.h b/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTUHeadingRequest.h index d0963d37..d9352128 100644 --- a/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTUHeadingRequest.h +++ b/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTUHeadingRequest.h @@ -38,4 +38,4 @@ __INTU_ASSUME_NONNULL_BEGIN @end -__INTU_ASSUME_NONNULL_END \ No newline at end of file +__INTU_ASSUME_NONNULL_END diff --git a/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTURequestIDGenerator.h b/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTURequestIDGenerator.h index 0a633dfd..22da4706 100644 --- a/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTURequestIDGenerator.h +++ b/iOS/Pods/INTULocationManager/LocationManager/INTULocationManager/INTURequestIDGenerator.h @@ -36,4 +36,4 @@ __INTU_ASSUME_NONNULL_BEGIN @end -__INTU_ASSUME_NONNULL_END \ No newline at end of file +__INTU_ASSUME_NONNULL_END diff --git a/iOS/Pods/Local Podspecs/Alamofire.podspec.json b/iOS/Pods/Local Podspecs/Alamofire.podspec.json new file mode 100644 index 00000000..c8c5f7d0 --- /dev/null +++ b/iOS/Pods/Local Podspecs/Alamofire.podspec.json @@ -0,0 +1,22 @@ +{ + "name": "Alamofire", + "version": "3.4.1", + "license": "MIT", + "summary": "Elegant HTTP Networking in Swift", + "homepage": "https://github.com/Alamofire/Alamofire", + "social_media_url": "http://twitter.com/AlamofireSF", + "authors": { + "Alamofire Software Foundation": "info@alamofire.org" + }, + "source": { + "git": "https://github.com/Alamofire/Alamofire.git", + "tag": "3.4.1" + }, + "platforms": { + "ios": "8.0", + "osx": "10.9", + "tvos": "9.0", + "watchos": "2.0" + }, + "source_files": "Source/*.swift" +} diff --git a/iOS/Pods/Local Podspecs/Localize-Swift.podspec.json b/iOS/Pods/Local Podspecs/Localize-Swift.podspec.json index 63cf5721..02da8748 100644 --- a/iOS/Pods/Local Podspecs/Localize-Swift.podspec.json +++ b/iOS/Pods/Local Podspecs/Localize-Swift.podspec.json @@ -1,6 +1,6 @@ { "name": "Localize-Swift", - "version": "1.1.2", + "version": "1.5", "summary": "Swift-friendly localization and i18n syntax with in-app language switching.", "description": "A simple framework that improves localization and i18n in Swift apps with cleaner syntax and in-app language switching.", "homepage": "https://github.com/marmelroy/Localize-Swift", @@ -10,13 +10,15 @@ }, "source": { "git": "https://github.com/marmelroy/Localize-Swift.git", - "tag": "1.1.2", + "tag": "1.5", "submodules": true }, "social_media_url": "http://twitter.com/marmelroy", "platforms": { "ios": "8.0", - "tvos": "9.0" + "osx": "10.9", + "tvos": "9.0", + "watchos": "2.0" }, "requires_arc": true, "source_files": "Sources" diff --git a/iOS/Pods/Local Podspecs/Log.podspec.json b/iOS/Pods/Local Podspecs/Log.podspec.json deleted file mode 100644 index ec65244d..00000000 --- a/iOS/Pods/Local Podspecs/Log.podspec.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Log", - "version": "0.5", - "license": { - "type": "MIT" - }, - "homepage": "https://github.com/delba/Log", - "authors": { - "Damien": "damien@delba.io" - }, - "summary": "An extensible logging framework for Swift", - "source": { - "git": "https://github.com/delba/Log.git", - "tag": "v0.5" - }, - "platforms": { - "ios": "8.0", - "osx": "10.9", - "tvos": "9.0", - "watchos": "2.0" - }, - "source_files": "Source/**/*.{swift, h}", - "requires_arc": true -} diff --git a/iOS/Pods/Local Podspecs/NVActivityIndicatorView.podspec.json b/iOS/Pods/Local Podspecs/NVActivityIndicatorView.podspec.json index 9cfa2855..27d1c279 100644 --- a/iOS/Pods/Local Podspecs/NVActivityIndicatorView.podspec.json +++ b/iOS/Pods/Local Podspecs/NVActivityIndicatorView.podspec.json @@ -1,6 +1,6 @@ { "name": "NVActivityIndicatorView", - "version": "2.6", + "version": "2.9", "summary": "A collection of nice loading animations", "homepage": "https://github.com/ninjaprox/NVActivityIndicatorView", "screenshots": "https://raw.githubusercontent.com/ninjaprox/NVActivityIndicatorView/master/Demo.gif", @@ -16,7 +16,7 @@ }, "source": { "git": "https://github.com/ninjaprox/NVActivityIndicatorView.git", - "tag": "v2.6" + "tag": "v2.9" }, "source_files": "NVActivityIndicatorView/**/*.swift", "frameworks": [ diff --git a/iOS/Pods/Local Podspecs/SCLAlertView.podspec.json b/iOS/Pods/Local Podspecs/SCLAlertView.podspec.json index 1e58b68b..594c124f 100644 --- a/iOS/Pods/Local Podspecs/SCLAlertView.podspec.json +++ b/iOS/Pods/Local Podspecs/SCLAlertView.podspec.json @@ -1,6 +1,6 @@ { "name": "SCLAlertView", - "version": "0.5.8", + "version": "0.5.9", "summary": "Beautiful Alert View. Written in Swift", "homepage": "https://github.com/vikmeup/SCLAlertView-Swift", "screenshots": [ @@ -20,7 +20,7 @@ }, "source": { "git": "https://github.com/vikmeup/SCLAlertView-Swift.git", - "tag": "0.5.8" + "tag": "0.5.9" }, "source_files": "SCLAlertView/*", "requires_arc": true diff --git a/iOS/Pods/Local Podspecs/SwiftInAppPurchase.podspec.json b/iOS/Pods/Local Podspecs/SwiftInAppPurchase.podspec.json deleted file mode 100644 index 727c938b..00000000 --- a/iOS/Pods/Local Podspecs/SwiftInAppPurchase.podspec.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "SwiftInAppPurchase", - "version": "1.0.0", - "summary": "A swift wrapper for iOS in app purchases.", - "description": "This CocoaPod provide the ability of in app purchase (IAP)", - "homepage": "https://github.com/rpzzzzzz/IAPMaster", - "license": "Apache", - "authors": { - "Rawd": "suraphan.d@gmail.com" - }, - "source": { - "git": "https://github.com/rpzzzzzz/IAPMaster.git", - "tag": "1.0.0" - }, - "platforms": { - "ios": "8.0" - }, - "requires_arc": true, - "source_files": "Pod/Classes/**/*", - "resource_bundles": { - "SwiftInAppPurchase": [ - "Pod/Assets/*.png" - ] - }, - "frameworks": "StoreKit" -} diff --git a/iOS/Pods/Local Podspecs/SwiftTweaks.podspec.json b/iOS/Pods/Local Podspecs/SwiftTweaks.podspec.json deleted file mode 100644 index f82d9f96..00000000 --- a/iOS/Pods/Local Podspecs/SwiftTweaks.podspec.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "SwiftTweaks", - "version": "1.0", - "summary": "Tweak your Swift-based app on-device.", - "description": "SwiftTweaks is a way to adjust your Swift-based iOS app on-device without needing to recompile. Read more about it on our blog: http://engineering.khanacademy.org/posts/introducing-swifttweaks.htm", - "homepage": "https://github.com/Khan/SwiftTweaks", - "screenshots": [ - "https://raw.githubusercontent.com/Khan/SwiftTweaks/master/Images/SwiftTweaks%20Demo.gif", - "https://raw.githubusercontent.com/Khan/SwiftTweaks/master/Images/SwiftTweaks%20Overview.png" - ], - "license": { - "type": "MIT", - "file": "LICENSE" - }, - "authors": [ - "Khan Academy", - "Bryan Clark" - ], - "social_media_url": "https://twitter.com/khanacademy", - "platforms": { - "ios": "8.0" - }, - "source": { - "git": "https://github.com/Khan/SwiftTweaks.git", - "tag": "v1.0", - "submodules": true - }, - "source_files": "SwiftTweaks/**/*.swift", - "resources": "SwiftTweaks/*.xcassets", - "ios": { - "frameworks": "UIKit" - } -} diff --git a/iOS/Pods/Local Podspecs/SwiftyBeaver.podspec.json b/iOS/Pods/Local Podspecs/SwiftyBeaver.podspec.json new file mode 100644 index 00000000..f24acf7d --- /dev/null +++ b/iOS/Pods/Local Podspecs/SwiftyBeaver.podspec.json @@ -0,0 +1,26 @@ +{ + "name": "SwiftyBeaver", + "version": "0.6.3", + "summary": "Convenient logging during development & release in Swift 2 & 3", + "description": "Easy-to-use, extensible & powerful logging & analytics for Swift 2 & 3.\nGreat for development & release due to its support for many logging destinations & platforms.", + "homepage": "https://github.com/SwiftyBeaver/SwiftyBeaver", + "screenshots": [ + "https://cloud.githubusercontent.com/assets/564725/11452558/17fd5f04-95ec-11e5-96d2-427f62ed4f05.jpg", + "https://cloud.githubusercontent.com/assets/564725/11452560/33225d16-95ec-11e5-8461-78f50b9e8da7.jpg" + ], + "license": "MIT", + "authors": { + "Sebastian Kreutzberger": "s.kreutzberger@googlemail.com" + }, + "platforms": { + "ios": "8.0", + "watchos": "2.0", + "tvos": "9.0", + "osx": "10.10" + }, + "source": { + "git": "https://github.com/SwiftyBeaver/SwiftyBeaver.git", + "tag": "0.6.3" + }, + "source_files": "sources" +} diff --git a/iOS/Pods/Localize-Swift/README.md b/iOS/Pods/Localize-Swift/README.md index 9e083b4b..185ab811 100644 --- a/iOS/Pods/Localize-Swift/README.md +++ b/iOS/Pods/Localize-Swift/README.md @@ -1,3 +1,4 @@ +[![Platform](https://img.shields.io/cocoapods/p/Localize-Swift.svg?maxAge=2592000)](http://cocoapods.org/?q=Localize-Swift) [![Build Status](https://travis-ci.org/marmelroy/Localize-Swift.svg?branch=master)](https://travis-ci.org/marmelroy/Localize-Swift) [![Version](http://img.shields.io/cocoapods/v/Localize-Swift.svg)](http://cocoapods.org/?q=Localize-Swift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) @@ -11,7 +12,7 @@ Localize-Swift is a simple framework that improves i18n and localization in Swif - Keep the Localizable.strings file your app already uses. - Allow your users to change the app's language without changing their device language. - Use .localized() instead of NSLocalizedString(key,comment) - a more Swifty syntax. -- Generate your strings with a new genstrings python script that recognises .localized(). +- Generate your strings with a new genstrings swift/python script that recognises .localized(). ## Usage @@ -49,9 +50,14 @@ Localize.resetCurrentLanguageToDefault() ## genstrings -To support this new i18n syntax, Localize-Swift includes a custom genstrings python script. +To support this new i18n syntax, Localize-Swift includes custom genstrings swift and python scripts. -Copy the genstrings.py file into your project's root folder and run with +Copy the genstrings file (either .swift or .py) into your project's root folder and run with + +``` +./genstrings.swift +``` +or ``` python genstrings.py @@ -59,6 +65,7 @@ python genstrings.py This will print the collected strings in the terminal. Select and copy to your default Localizable.strings. +The swift genstrings includes the ability to specify excluded directories and files (by editing the script). ### Setting up with Carthage diff --git a/iOS/Pods/Localize-Swift/Sources/Localize.swift b/iOS/Pods/Localize-Swift/Sources/Localize.swift index 3ade44a0..4f4b27d7 100644 --- a/iOS/Pods/Localize-Swift/Sources/Localize.swift +++ b/iOS/Pods/Localize-Swift/Sources/Localize.swift @@ -98,8 +98,13 @@ public class Localize: NSObject { List available languages - Returns: Array of available languages. */ - public class func availableLanguages() -> [String] { - return NSBundle.mainBundle().localizations + public class func availableLanguages(excludeBase: Bool = false) -> [String] { + var availableLanguages = NSBundle.mainBundle().localizations + // If excludeBase = true, don't include "Base" in available languages + if let indexOfBase = availableLanguages.indexOf("Base") where excludeBase == true { + availableLanguages.removeAtIndex(indexOfBase) + } + return availableLanguages } /** diff --git a/iOS/Pods/Localize-Swift/Sources/Localize_Swift.h b/iOS/Pods/Localize-Swift/Sources/Localize_Swift.h index 36673b5c..be5dbc9b 100644 --- a/iOS/Pods/Localize-Swift/Sources/Localize_Swift.h +++ b/iOS/Pods/Localize-Swift/Sources/Localize_Swift.h @@ -6,7 +6,7 @@ // Copyright © 2016 Roy Marmelstein. All rights reserved. // -#import +@import Foundation; //! Project version number for Localize_Swift. FOUNDATION_EXPORT double Localize_SwiftVersionNumber; diff --git a/iOS/Pods/Log/LICENSE b/iOS/Pods/Log/LICENSE deleted file mode 100644 index c567f8ea..00000000 --- a/iOS/Pods/Log/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2016 Damien (http://delba.io) - -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/iOS/Pods/Log/README.md b/iOS/Pods/Log/README.md deleted file mode 100644 index e6c1ae3f..00000000 --- a/iOS/Pods/Log/README.md +++ /dev/null @@ -1,169 +0,0 @@ -

- -

- -

- Travis Status - CocoaPods compatible - Carthage compatible - Platform -

- -`Log` is a powerful logging framework that provides built-in themes and formatters, and a nice API to define your owns. - -> Get the most out of `Log` by installing [`XcodeColors`](https://github.com/robbiehanson/XcodeColors) and [`KZLinkedConsole`](https://github.com/krzysztofzablocki/KZLinkedConsole) - -

- UsageInstallationLicense -

- -### Usage - -#### The basics - -- Use `Log` just as you would use `print`. - -```swift -let Log = Logger() - -Log.trace("Called!!!") -Log.debug("Who is self:", self) -Log.info(some, objects, here) -Log.warning(one, two, three, separator: " - ") -Log.error(error, terminator: "😱😱😱\n") -``` - - - -- Disable `Log` by setting `enabled` to `false`: - -```swift -Log.enabled = false -``` - -- Define a minimum level of severity to only print the messages with a greater or equal severity: - -```swift -Log.minLevel = .Warning -``` - -> The severity levels are `Trace`, `Debug`, `Info`, `Warning`, and `Error`. - -#### Customization - -- Create your own `Logger` by changing its `Theme` and/or `Formatter`. - -A suggested way of doing it is by extending `Formatters` and `Themes`: - -```swift -extension Formatters { - static let Detailed = Formatter("[%@] %@.%@:%@ %@: %@", [ - .Date("yyyy-MM-dd HH:mm:ss.SSS"), - .File(fullPath: false, fileExtension: false), - .Function, - .Line, - .Level, - .Message - ]) -} - -extension Themes { - static let TomorrowNight = Theme( - trace: "#C5C8C6", - debug: "#81A2BE", - info: "#B5BD68", - warning: "#F0C674", - error: "#CC6666" - ) -} -``` - -```swift -let Log = Logger(formatter: .Detailed, theme: .TomorrowNight) -``` - - - -> See the built-in [formatters](https://github.com/delba/Log/blob/master/Source/Extensions/Formatters.swift) and [themes](https://github.com/delba/Log/blob/master/Source/Extensions/Themes.swift) for more examples. - -**Tip:** `Log.format` and `Log.colors` can be useful to visually debug your logger. - -Nothing prevents you from creating as many loggers as you want! - -```swift -let Basic = Logger(formatter: .Default, theme: nil) -let Short = Logger( - formatter: Formatter("%@: %@", .Level, .Message), - theme: .TomorrowNightEighties, - minLevel: .Info -) -``` - - - -- Turn off the colors by setting the theme to `nil`: - -```swift -Log.theme = nil -``` - -#### Advanced - -Include a custom `Block` component in your formatter to print its result in every log message: - -```swift -struct User { - static func token() -> Int { - return NSUserDefaults.standardUserDefaults.integerForKey("token") - } -} - -Log.formatter = Formatter("[%@] %@: %@", .Block(User.token), .Level, .Message) -``` - -## Installation - -### Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application. - -You can install Carthage with [Homebrew](http://brew.sh/) using the following command: - -```bash -$ brew update -$ brew install carthage -``` - -To integrate Log into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "delba/Log" -``` - -### CocoaPods - -[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. - -You can install it with the following command: - -```bash -$ gem install cocoapods -``` - -To integrate Log into your Xcode project using CocoaPods, specify it in your `Podfile`: - -```ruby -use_frameworks! - -pod 'Log' -``` - -## License - -Copyright (c) 2015-2016 Damien (http://delba.io) - -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/iOS/Pods/Log/Source/Benchmarker.swift b/iOS/Pods/Log/Source/Benchmarker.swift deleted file mode 100644 index d84a220c..00000000 --- a/iOS/Pods/Log/Source/Benchmarker.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// Benchmarker.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -internal class Benchmarker { - typealias Result = ( - description: String?, - average: Double, - relativeStandardDeviation: Double - ) - - /** - Measures the performance of code. - - - parameter description: The measure description. - - parameter n: The number of iterations. - - parameter block: The block to measure. - - - returns: The measure result. - */ - func measure(description: String? = nil, iterations n: Int = 10, block: () -> Void) -> Result { - precondition(n >= 1, "Iteration must be greater or equal to 1.") - - let durations = (0.. Void) -> Double { - let date = NSDate() - - block() - - return abs(date.timeIntervalSinceNow) - } - - private func average(durations: [Double]) -> Double { - return durations.reduce(0, combine: +) / Double(durations.count) - } - - private func standardDeviation(average: Double, durations: [Double]) -> Double { - return durations.reduce(0) { sum, duration in - return sum + pow(duration - average, 2) - } - } -} \ No newline at end of file diff --git a/iOS/Pods/Log/Source/Extensions/Formatters.swift b/iOS/Pods/Log/Source/Extensions/Formatters.swift deleted file mode 100644 index b288f3d5..00000000 --- a/iOS/Pods/Log/Source/Extensions/Formatters.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Formatters.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -extension Formatters { - public static let Default = Formatter("[%@] %@ %@: %@", [ - .Date("yyyy-MM-dd HH:mm:ss.SSS"), - .Location, - .Level, - .Message - ]) - - public static let Minimal = Formatter("%@ %@: %@", [ - .Location, - .Level, - .Message - ]) - - public static let Detailed = Formatter("[%@] %@.%@:%@ %@: %@", [ - .Date("yyyy-MM-dd HH:mm:ss.SSS"), - .File(fullPath: false, fileExtension: false), - .Function, - .Line, - .Level, - .Message - ]) -} diff --git a/iOS/Pods/Log/Source/Extensions/Themes.swift b/iOS/Pods/Log/Source/Extensions/Themes.swift deleted file mode 100644 index fce2eb20..00000000 --- a/iOS/Pods/Log/Source/Extensions/Themes.swift +++ /dev/null @@ -1,81 +0,0 @@ -// -// Themes.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -extension Themes { - public static let Default = Theme( - trace: "#C8C8C8", - debug: "#0000FF", - info: "#00FF00", - warning: "#FFFB00", - error: "#FF0000" - ) - - public static let Dusk = Theme( - trace: "#FFFFFF", - debug: "#526EDA", - info: "#93C96A", - warning: "#D28F5A", - error: "#E44347" - ) - - public static let Midnight = Theme( - trace: "#FFFFFF", - debug: "#527EFF", - info: "#08FA95", - warning: "#EB905A", - error: "#FF4647" - ) - - public static let Tomorrow = Theme( - trace: "#4D4D4C", - debug: "#4271AE", - info: "#718C00", - warning: "#EAB700", - error: "#C82829" - ) - - public static let TomorrowNight = Theme( - trace: "#C5C8C6", - debug: "#81A2BE", - info: "#B5BD68", - warning: "#F0C674", - error: "#CC6666" - ) - - public static let TomorrowNightEighties = Theme( - trace: "#CCCCCC", - debug: "#6699CC", - info: "#99CC99", - warning: "#FFCC66", - error: "#F2777A" - ) - - public static let TomorrowNightBright = Theme( - trace: "#EAEAEA", - debug: "#7AA6DA", - info: "#B9CA4A", - warning: "#E7C547", - error: "#D54E53" - ) -} \ No newline at end of file diff --git a/iOS/Pods/Log/Source/Formatter.swift b/iOS/Pods/Log/Source/Formatter.swift deleted file mode 100644 index 831cd31b..00000000 --- a/iOS/Pods/Log/Source/Formatter.swift +++ /dev/null @@ -1,315 +0,0 @@ -// -// Formatter.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -public enum Component { - case Date(String) - case Message - case Level - case File(fullPath: Bool, fileExtension: Bool) - case Line - case Column - case Function - case Location - case Block(() -> Any?) -} - -public class Formatters {} - -public class Formatter: Formatters { - /// The formatter format. - private var format: String - - /// The formatter components. - private var components: [Component] - - /// The date formatter. - private let dateFormatter = NSDateFormatter() - - /// The formatter logger. - internal weak var logger: Logger! - - /// The formatter textual representation. - internal var description: String { - return String(format: format, arguments: components.map { (component: Component) -> CVarArgType in - return String(component).uppercaseString - }) - } - - /** - Creates and returns a new formatter with the specified format and components. - - - parameter format: The formatter format. - - parameter components: The formatter components. - - - returns: A newly created formatter. - */ - public convenience init(_ format: String, _ components: Component...) { - self.init(format, components) - } - - /** - Creates and returns a new formatter with the specified format and components. - - - parameter format: The formatter format. - - parameter components: The formatter components. - - - returns: A newly created formatter. - */ - public init(_ format: String, _ components: [Component]) { - self.format = format - self.components = components - } - - /** - Formats a string with the formatter format and components. - - - parameter level: The severity level. - - parameter items: The items to format. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the formatted string. - - parameter file: The log file path. - - parameter line: The log line number. - - parameter column: The log column number. - - parameter function: The log function. - - parameter date: The log date. - - - returns: A formatted string. - */ - internal func format(level level: Level, items: [Any], separator: String, terminator: String, file: String, line: Int, column: Int, function: String, date: NSDate) -> String { - let arguments = components.map { (component: Component) -> CVarArgType in - switch component { - case .Date(let dateFormat): - return format(date: date, dateFormat: dateFormat) - case .File(let fullPath, let fileExtension): - return format(file: file, fullPath: fullPath, fileExtension: fileExtension) - case .Function: - return String(function) - case .Line: - return String(line) - case .Column: - return String(column) - case .Level: - return format(level: level) - case .Message: - return items.map({ String($0) }).joinWithSeparator(separator) - case .Location: - return format(file: file, line: line) - case .Block(let block): - return block().flatMap({ String($0) }) ?? "" - } - } - - return String(format: format, arguments: arguments) + terminator - } - - /** - Formats a string with the formatter format and components. - - - parameter description: The measure description. - - parameter average: The average time. - - parameter relativeStandardDeviation: The relative standard description. - - parameter file: The log file path. - - parameter line: The log line number. - - parameter column: The log column number. - - parameter function: The log function. - - parameter date: The log date. - - - returns: A formatted string. - */ - func format(description description: String?, average: Double, relativeStandardDeviation: Double, file: String, line: Int, column: Int, function: String, date: NSDate) -> String { - - let arguments = components.map { (component: Component) -> CVarArgType in - switch component { - case .Date(let dateFormat): - return format(date: date, dateFormat: dateFormat) - case .File(let fullPath, let fileExtension): - return format(file: file, fullPath: fullPath, fileExtension: fileExtension) - case .Function: - return String(function) - case .Line: - return String(line) - case .Column: - return String(column) - case .Level: - return format(description: description) - case .Message: - return format(average: average, relativeStandardDeviation: relativeStandardDeviation) - case .Location: - return format(file: file, line: line) - case .Block(let block): - return block().flatMap({ String($0) }) ?? "" - } - } - - return String(format: format, arguments: arguments) - } -} - -private extension Formatter { - /** - Formats a date with the specified date format. - - - parameter date: The date. - - parameter dateFormat: The date format. - - - returns: A formatted date. - */ - func format(date date: NSDate, dateFormat: String) -> String { - dateFormatter.dateFormat = dateFormat - return dateFormatter.stringFromDate(date) - } - - /** - Formats a file path with the specified parameters. - - - parameter file: The file path. - - parameter fullPath: Whether the full path should be included. - - parameter fileExtension: Whether the file extension should be included. - - - returns: A formatted file path. - */ - func format(file file: String, fullPath: Bool, fileExtension: Bool) -> String { - var file = file - - if !fullPath { file = file.lastPathComponent } - if !fileExtension { file = file.stringByDeletingPathExtension } - - return file - } - - /** - Formats a Location component with a specified file path and line number. - - - parameter file: The file path. - - parameter line: The line number. - - - returns: A formatted Location component. - */ - func format(file file: String, line: Int) -> String { - return [ - format(file: file, fullPath: false, fileExtension: true), - String(line) - ].joinWithSeparator(":") - } - - /** - Formats a Level component. - - - parameter level: The Level component. - - - returns: A formatted Level component. - */ - func format(level level: Level) -> String { - let text = level.description - - if let color = logger.theme?.colors[level] { - return text.withColor(color) - } - - return text - } - - /** - Formats a measure description. - - - parameter description: The measure description. - - - returns: A formatted measure description. - */ - func format(description description: String?) -> String { - var text = "MEASURE" - - if let color = logger.theme?.colors[.Debug] { - text = text.withColor(color) - } - - if let description = description { - text = "\(text) \(description)" - } - - return text - } - - /** - Formats an average time and a relative standard deviation. - - - parameter average: The average time. - - parameter relativeStandardDeviation: The relative standard deviation. - - - returns: A formatted average time and relative standard deviation. - */ - func format(average average: Double, relativeStandardDeviation: Double) -> String { - let average = format(average: average) - let relativeStandardDeviation = format(relativeStandardDeviation: relativeStandardDeviation) - - return "Time: \(average) sec (\(relativeStandardDeviation) STDEV)" - } - - /** - Formats an average time. - - - parameter average: An average time. - - - returns: A formatted average time. - */ - func format(average average: Double) -> String { - return String(format: "%.3f", average) - } - - /** - Formats a list of durations. - - - parameter durations: A list of durations. - - - returns: A formatted list of durations. - */ - func format(durations durations: [Double]) -> String { - var format = Array(count: durations.count, repeatedValue: "%.6f").joinWithSeparator(", ") - format = "[\(format)]" - - return String(format: format, arguments: durations.map{ $0 as CVarArgType }) - } - - /** - Formats a standard deviation. - - - parameter standardDeviation: A standard deviation. - - - returns: A formatted standard deviation. - */ - func format(standardDeviation standardDeviation: Double) -> String { - return String(format: "%.6f", standardDeviation) - } - - /** - Formats a relative standard deviation. - - - parameter relativeStandardDeviation: A relative standard deviation. - - - returns: A formatted relative standard deviation. - */ - func format(relativeStandardDeviation relativeStandardDeviation: Double) -> String { - return String(format: "%.3f%%", relativeStandardDeviation) - } -} \ No newline at end of file diff --git a/iOS/Pods/Log/Source/Logger.swift b/iOS/Pods/Log/Source/Logger.swift deleted file mode 100644 index 8ca20db2..00000000 --- a/iOS/Pods/Log/Source/Logger.swift +++ /dev/null @@ -1,232 +0,0 @@ -// -// Logger.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -private let benchmarker = Benchmarker() - -public enum Level { - case Trace, Debug, Info, Warning, Error - - var description: String { - return String(self).uppercaseString - } -} - -extension Level: Comparable {} - -public func ==(x: Level, y: Level) -> Bool { - return x.hashValue == y.hashValue -} - -public func <(x: Level, y: Level) -> Bool { - return x.hashValue < y.hashValue -} - -public class Logger { - /// The logger state. - public var enabled: Bool = true - - /// The logger formatter. - public var formatter: Formatter { - didSet { formatter.logger = self } - } - - /// The logger theme. - public var theme: Theme? - - /// The minimum level of severity. - public var minLevel: Level - - /// The logger format. - public var format: String { - return formatter.description - } - - /// The logger colors - public var colors: String { - return theme?.description ?? "" - } - - /// The queue used for logging. - private let queue = dispatch_queue_create("delba.log", DISPATCH_QUEUE_SERIAL) - - /** - Creates and returns a new logger. - - - parameter formatter: The formatter. - - parameter theme: The theme. - - parameter minLevel: The minimum level of severity. - - - returns: A newly created logger. - */ - public init(formatter: Formatter = .Default, theme: Theme? = nil, minLevel: Level = .Trace) { - self.formatter = formatter - self.theme = theme - self.minLevel = minLevel - - formatter.logger = self - } - - /** - Logs a message with a trace severity level. - - - parameter items: The items to log. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the log message. - - parameter file: The file in which the log happens. - - parameter line: The line at which the log happens. - - parameter column: The column at which the log happens. - - parameter function: The function in which the log happens. - */ - public func trace(items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) { - log(.Trace, items, separator, terminator, file, line, column, function) - } - - /** - Logs a message with a debug severity level. - - - parameter items: The items to log. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the log message. - - parameter file: The file in which the log happens. - - parameter line: The line at which the log happens. - - parameter column: The column at which the log happens. - - parameter function: The function in which the log happens. - */ - public func debug(items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) { - log(.Debug, items, separator, terminator, file, line, column, function) - } - - /** - Logs a message with an info severity level. - - - parameter items: The items to log. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the log message. - - parameter file: The file in which the log happens. - - parameter line: The line at which the log happens. - - parameter column: The column at which the log happens. - - parameter function: The function in which the log happens. - */ - public func info(items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) { - log(.Info, items, separator, terminator, file, line, column, function) - } - - /** - Logs a message with a warning severity level. - - - parameter items: The items to log. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the log message. - - parameter file: The file in which the log happens. - - parameter line: The line at which the log happens. - - parameter column: The column at which the log happens. - - parameter function: The function in which the log happens. - */ - public func warning(items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) { - log(.Warning, items, separator, terminator, file, line, column, function) - } - - /** - Logs a message with an error severity level. - - - parameter items: The items to log. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the log message. - - parameter file: The file in which the log happens. - - parameter line: The line at which the log happens. - - parameter column: The column at which the log happens. - - parameter function: The function in which the log happens. - */ - public func error(items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) { - log(.Error, items, separator, terminator, file, line, column, function) - } - - /** - Logs a message. - - - parameter level: The severity level. - - parameter items: The items to log. - - parameter separator: The separator between the items. - - parameter terminator: The terminator of the log message. - - parameter file: The file in which the log happens. - - parameter line: The line at which the log happens. - - parameter column: The column at which the log happens. - - parameter function: The function in which the log happens. - */ - private func log(level: Level, _ items: [Any], _ separator: String, _ terminator: String, _ file: String, _ line: Int, _ column: Int, _ function: String) { - guard enabled && level >= minLevel else { return } - - let date = NSDate() - - let result = formatter.format( - level: level, - items: items, - separator: separator, - terminator: terminator, - file: file, - line: line, - column: column, - function: function, - date: date - ) - - dispatch_async(queue) { - Swift.print(result, separator: "", terminator: "") - } - } - - /** - Measures the performance of code. - - - parameter description: The measure description. - - parameter n: The number of iterations. - - parameter file: The file in which the measure happens. - - parameter line: The line at which the measure happens. - - parameter column: The column at which the measure happens. - - parameter function: The function in which the measure happens. - - parameter block: The block to measure. - */ - public func measure(description: String? = nil, iterations n: Int = 10, file: String = #file, line: Int = #line, column: Int = #column, function: String = #function, block: () -> Void) { - guard enabled && .Debug >= minLevel else { return } - - let measure = benchmarker.measure(description, iterations: n, block: block) - - let date = NSDate() - - let result = formatter.format( - description: measure.description, - average: measure.average, - relativeStandardDeviation: measure.relativeStandardDeviation, - file: file, - line: line, - column: column, - function: function, - date: date - ) - - dispatch_async(queue) { - Swift.print(result) - } - } -} \ No newline at end of file diff --git a/iOS/Pods/Log/Source/Supporting Files/Utilities.swift b/iOS/Pods/Log/Source/Supporting Files/Utilities.swift deleted file mode 100644 index 78dddd8b..00000000 --- a/iOS/Pods/Log/Source/Supporting Files/Utilities.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// Utilities.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -internal extension String { - /// The last path component of the receiver. - var lastPathComponent: String { - return NSString(string: self).lastPathComponent - } - - /// A new string made by deleting the extension from the receiver. - var stringByDeletingPathExtension: String { - return NSString(string: self).stringByDeletingPathExtension - } - - /** - Returns a string colored with the specified color. - - - parameter color: The string representation of the color. - - - returns: A string colored with the specified color. - */ - func withColor(color: String) -> String { - return "\u{001b}[fg\(color);\(self)\u{001b}[;" - } -} \ No newline at end of file diff --git a/iOS/Pods/Log/Source/Theme.swift b/iOS/Pods/Log/Source/Theme.swift deleted file mode 100644 index d2e0cea2..00000000 --- a/iOS/Pods/Log/Source/Theme.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// Theme.swift -// -// Copyright (c) 2015-2016 Damien (http://delba.io) -// -// 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. -// - -public class Themes {} - -public class Theme: Themes { - /// The theme colors. - internal var colors: [Level: String] - - /// The theme textual representation. - internal var description: String { - return colors.keys.sort().map { - $0.description.withColor(colors[$0]!) - }.joinWithSeparator(" ") - } - - /** - Creates and returns a theme with the specified colors. - - - parameter trace: The color for the trace level. - - parameter debug: The color for the debug level. - - parameter info: The color for the info level. - - parameter warning: The color for the warning level. - - parameter error: The color for the error level. - - - returns: A theme with the specified colors. - */ - public init(trace: String, debug: String, info: String, warning: String, error: String) { - self.colors = [ - .Trace: Theme.formatHex(trace), - .Debug: Theme.formatHex(debug), - .Info: Theme.formatHex(info), - .Warning: Theme.formatHex(warning), - .Error: Theme.formatHex(error) - ] - } - - /** - Returns a string representation of the hex color. - - - parameter hex: The hex color. - - - returns: A string representation of the hex color. - */ - private static func formatHex(hex: String) -> String { - let scanner = NSScanner(string: hex) - var hex: UInt32 = 0 - - scanner.charactersToBeSkipped = NSCharacterSet(charactersInString: "#") - scanner.scanHexInt(&hex) - - let r = (hex & 0xFF0000) >> 16 - let g = (hex & 0xFF00) >> 8 - let b = (hex & 0xFF) - - return [r, g, b].map({ String($0) }).joinWithSeparator(",") - } -} \ No newline at end of file diff --git a/iOS/Pods/Manifest.lock b/iOS/Pods/Manifest.lock index bf25c8f1..112da2ac 100644 --- a/iOS/Pods/Manifest.lock +++ b/iOS/Pods/Manifest.lock @@ -1,11 +1,11 @@ PODS: - AKPickerView-Swift (1.0.1) - - Alamofire (3.4.0) + - Alamofire (3.4.1) - AsyncSwift (1.7.2) - ChameleonFramework/Default (2.1.0) - ChameleonFramework/Swift (2.1.0): - ChameleonFramework/Default - - Crashlytics (3.7.0): + - Crashlytics (3.7.2): - Fabric (~> 1.6.3) - DGElasticPullToRefresh (1.0.3) - DGRunkeeperSwitch (1.1.1) @@ -32,10 +32,9 @@ PODS: - FontAwesomeKit/Core - FontAwesomeKit/Zocial (2.2.1): - FontAwesomeKit/Core - - FSCalendar (2.1.1) + - FSCalendar (2.2.0) - INTULocationManager (4.2.0) - - Localize-Swift (1.1.2) - - Log (0.5) + - Localize-Swift (1.5) - MRProgress (0.8.3): - MRProgress/ActivityIndicator (= 0.8.3) - MRProgress/Blur (= 0.8.3) @@ -64,18 +63,17 @@ PODS: - MRProgress/ProgressBaseClass (0.8.3) - MRProgress/Stopable (0.8.3): - MRProgress/Helper - - NVActivityIndicatorView (2.6) + - NVActivityIndicatorView (2.9) - Onboard (2.1.9) - PermissionScope (1.0.2) - - SCLAlertView (0.5.8) + - SCLAlertView (0.5.9) - SwiftDate (3.0.9) - - SwiftInAppPurchase (1.0.0) - - SwiftTweaks (1.0) + - SwiftyBeaver (0.6.3) - SwiftyJSON (2.3.2) DEPENDENCIES: - AKPickerView-Swift (from `https://github.com/Akkyie/AKPickerView-Swift.git`) - - Alamofire + - Alamofire (from `https://github.com/Alamofire/Alamofire.git`) - AsyncSwift (from `https://github.com/duemunk/Async.git`) - ChameleonFramework/Swift (from `https://github.com/ViccAlexander/Chameleon.git`) - Crashlytics @@ -87,20 +85,20 @@ DEPENDENCIES: - FSCalendar - INTULocationManager (from `https://github.com/intuit/LocationManager.git`) - Localize-Swift (from `https://github.com/marmelroy/Localize-Swift.git`) - - Log (from `https://github.com/delba/Log.git`) - MRProgress (from `https://github.com/RemyDCF/MRProgress.git`) - NVActivityIndicatorView (from `https://github.com/ninjaprox/NVActivityIndicatorView.git`) - Onboard (from `https://github.com/mamaral/Onboard.git`, tag `v2.1.9`) - PermissionScope (from `https://github.com/nickoneill/PermissionScope.git`) - SCLAlertView (from `https://github.com/vikmeup/SCLAlertView-Swift.git`) - SwiftDate (from `https://github.com/malcommac/SwiftDate.git`) - - SwiftInAppPurchase (from `https://github.com/rpzzzzzz/SwiftInAppPurchase.git`) - - SwiftTweaks (from `https://github.com/Khan/SwiftTweaks.git`) + - SwiftyBeaver (from `https://github.com/SwiftyBeaver/SwiftyBeaver.git`) - SwiftyJSON (from `https://github.com/SwiftyJSON/SwiftyJSON.git`) EXTERNAL SOURCES: AKPickerView-Swift: :git: https://github.com/Akkyie/AKPickerView-Swift.git + Alamofire: + :git: https://github.com/Alamofire/Alamofire.git AsyncSwift: :git: https://github.com/duemunk/Async.git ChameleonFramework: @@ -117,8 +115,6 @@ EXTERNAL SOURCES: :git: https://github.com/intuit/LocationManager.git Localize-Swift: :git: https://github.com/marmelroy/Localize-Swift.git - Log: - :git: https://github.com/delba/Log.git MRProgress: :git: https://github.com/RemyDCF/MRProgress.git NVActivityIndicatorView: @@ -132,10 +128,8 @@ EXTERNAL SOURCES: :git: https://github.com/vikmeup/SCLAlertView-Swift.git SwiftDate: :git: https://github.com/malcommac/SwiftDate.git - SwiftInAppPurchase: - :git: https://github.com/rpzzzzzz/SwiftInAppPurchase.git - SwiftTweaks: - :git: https://github.com/Khan/SwiftTweaks.git + SwiftyBeaver: + :git: https://github.com/SwiftyBeaver/SwiftyBeaver.git SwiftyJSON: :git: https://github.com/SwiftyJSON/SwiftyJSON.git @@ -143,17 +137,20 @@ CHECKOUT OPTIONS: AKPickerView-Swift: :commit: 07c03dca3878fb3adaaa1087c40e5e4dc592fe0d :git: https://github.com/Akkyie/AKPickerView-Swift.git + Alamofire: + :commit: 0f506b1c455e5ce4312d27daeb98c10a608107d3 + :git: https://github.com/Alamofire/Alamofire.git AsyncSwift: :commit: e8e53f0fd39fabc226f4609d1c910c8af27a17cc :git: https://github.com/duemunk/Async.git ChameleonFramework: - :commit: 3f87b407bb84ad5e23a0ee8a2ef4023ebb62b00a + :commit: 5b51a317485339c3e6762cd7d2adb2b4c7481ca2 :git: https://github.com/ViccAlexander/Chameleon.git DGElasticPullToRefresh: :commit: 188a2ff3c498c81aa3a5fe1916c1f8ed15c85dda :git: https://github.com/gontovnik/DGElasticPullToRefresh.git DGRunkeeperSwitch: - :commit: 75829583f41c6eee1b86c66a0b2d947df70cc734 + :commit: aa5c3986905e7d5b320bf5c4499f9aef60201618 :git: https://github.com/gontovnik/DGRunkeeperSwitch.git EFCircularSlider: :commit: 6366f39721c33d0d457f17cc7f225d7795cea2da @@ -162,19 +159,16 @@ CHECKOUT OPTIONS: :commit: eac30313fee77f6db1b6832b1d4b7d8f2007b381 :git: https://github.com/PrideChung/FontAwesomeKit.git INTULocationManager: - :commit: 8e8402e8b4486e4a59581ed77efc928a2f727481 + :commit: 7741779256eae4fe727b027a046d6dcc7900566a :git: https://github.com/intuit/LocationManager.git Localize-Swift: - :commit: 9a2bc3a3749390bb92c40694a4da4829a9b602c4 + :commit: e3ce4b72c184dce8261a1cf35cb0875e55549e20 :git: https://github.com/marmelroy/Localize-Swift.git - Log: - :commit: 153e9c3d68031726f575bb255e3dc62267f4d1a1 - :git: https://github.com/delba/Log.git MRProgress: :commit: 0a9a8e9299c35f1ed1be0648910505fbd156e952 :git: https://github.com/RemyDCF/MRProgress.git NVActivityIndicatorView: - :commit: dfc0ea8b99e2be84548590f7786902c32c02098a + :commit: 49a0beb6a33eebc6cec322f05448516881615bf6 :git: https://github.com/ninjaprox/NVActivityIndicatorView.git Onboard: :git: https://github.com/mamaral/Onboard.git @@ -183,46 +177,41 @@ CHECKOUT OPTIONS: :commit: 8e7df5b5b676363b680a9fc0578ff232bcf8be5d :git: https://github.com/nickoneill/PermissionScope.git SCLAlertView: - :commit: 5824520fd0978c0ff5864639b6340d0d0abd8d5f + :commit: 58090eb84843bb4cea3a554eefbd8217e6a2ec13 :git: https://github.com/vikmeup/SCLAlertView-Swift.git SwiftDate: :commit: 0dd3a3c610f2147a92c834cb4bdb5d983dd5f37b :git: https://github.com/malcommac/SwiftDate.git - SwiftInAppPurchase: - :commit: 1080c4821443c5b71dff445a8c6c5b79f4bed2e4 - :git: https://github.com/rpzzzzzz/SwiftInAppPurchase.git - SwiftTweaks: - :commit: 88f8edd00c309afdd4490ce54c23bcc237802c8e - :git: https://github.com/Khan/SwiftTweaks.git + SwiftyBeaver: + :commit: 572c71899c772f22a7706e83ae92213237ef9940 + :git: https://github.com/SwiftyBeaver/SwiftyBeaver.git SwiftyJSON: - :commit: 2a5b70f06001316d4fb54501edc70b4084705da0 + :commit: 73670b94292b8d8496c398a973f56ac67789ba9f :git: https://github.com/SwiftyJSON/SwiftyJSON.git SPEC CHECKSUMS: AKPickerView-Swift: 8509d472bb257649383c276506334a7373d3cb33 - Alamofire: c19a627cefd6a95f840401c49ab1f124e07f54ee + Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c AsyncSwift: 15c496983f752a3ab8d1be17e64dd4c6f2a31239 ChameleonFramework: d21a3cc247abfe5e37609a283a8238b03575cf64 - Crashlytics: c3a2333dea9e2733d2777f730910321fc9e25c0d + Crashlytics: 130ab943f8c78cda7a814b434f270b2e2c8a3cba DGElasticPullToRefresh: 3129c558cd59d68f9c2472d79abcd68a49bcd345 DGRunkeeperSwitch: da12f199532a99958a1e87ec0a5af61efdba11ec EFCircularSlider: 8c9e901891fb813e89c4158508eefa8e35903454 Fabric: caf7580c725e64db144f610ac65cd60956911dc7 FontAwesomeKit: 3614979b3dbb0ec3f7fac1bd760b91f66c31db67 - FSCalendar: 04dc531f06fbde8a8e5b7394e9d4edebd45a591f + FSCalendar: 766367b91bcf2829c492c5ac50a58652c6df4ee8 INTULocationManager: 73f8254b3d05c897c56bb13c190e5b7c648c0998 - Localize-Swift: 584bcde9c6b13fcccb1333f398a46a0e60735e7a - Log: 5972312cb85cffbc56407b612936b610eb4af8a5 + Localize-Swift: 288aa763db72b0628d2cb111fbf5babc90529d0c MRProgress: b0c2bcff94ee700ac2aea810e1f51720c059cbd3 - NVActivityIndicatorView: b8207b369c012af32da0916a8346a56d16a5fbbe + NVActivityIndicatorView: 0084f6be71bdf4735b5424ebfb530b1e3db3276c Onboard: 4d92c763ed15f939071dec12e87ed9e8dc036746 PermissionScope: 860828c5516d349b6f49e5491799cfef33c5ccc7 - SCLAlertView: 653e84d1f9fd95333bc54671fbadb7d0c47fce49 + SCLAlertView: d7c6a48c7d340e60206d4ed0e8ebcbff3b9d2a44 SwiftDate: fa487d9b7d8c3070ea2553486902494f4915465d - SwiftInAppPurchase: e6d19c8a9d102635cb62fd9de7291eb6f3f0669e - SwiftTweaks: ac08b7565d90776a6668e37e60224a9daa1e9ba6 + SwiftyBeaver: c182c001d532111becf2285b8878abf54c7b5621 SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a -PODFILE CHECKSUM: a7106aefefacad5bbb4bc23c5be7c778bb25884d +PODFILE CHECKSUM: ef83cc600101fd8f5e6957cfa365b330a4325a07 -COCOAPODS: 1.0.0.rc.1 +COCOAPODS: 1.0.1 diff --git a/iOS/Pods/NVActivityIndicatorView/LICENSE b/iOS/Pods/NVActivityIndicatorView/LICENSE index 47517cfb..065499d5 100644 --- a/iOS/Pods/NVActivityIndicatorView/LICENSE +++ b/iOS/Pods/NVActivityIndicatorView/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 Nguyen Vinh +Copyright (c) 2016 Nguyen Vinh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift new file mode 100644 index 00000000..fdcd3a66 --- /dev/null +++ b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift @@ -0,0 +1,51 @@ +// +// NVActivityIndicatorAnimationAudioEqualizer.swift +// NVActivityIndicatorViewDemo +// +// Created by Nguyen Vinh on 6/14/16. +// Copyright © 2016 Nguyen Vinh. All rights reserved. +// + +import UIKit + +class NVActivityIndicatorAnimationAudioEqualizer: NVActivityIndicatorAnimationDelegate { + + func setUpAnimationInLayer(layer: CALayer, size: CGSize, color: UIColor) { + let lineSize = size.width / 9 + let x = (layer.bounds.size.width - lineSize * 7) / 2 + let y = (layer.bounds.size.height - size.height) / 2 + let duration: [CFTimeInterval] = [4.3, 2.5, 1.7, 3.1] + let values = [0, 0.7, 0.4, 0.05, 0.95, 0.3, 0.9, 0.4, 0.15, 0.18, 0.75, 0.01] + + // Draw lines + for i in 0 ..< 4 { + let animation = CAKeyframeAnimation() + + animation.keyPath = "path" + animation.additive = true + animation.values = [] + + for j in 0 ..< values.count { + let heightFactor = values[j] + let height = size.height * CGFloat(heightFactor) + let point = CGPointMake(0, size.height - height) + let path = UIBezierPath(rect: CGRect(origin: point, size: CGSize(width: lineSize, height: height))) + + animation.values?.append(path.CGPath) + } + animation.duration = duration[i] + animation.repeatCount = HUGE + animation.removedOnCompletion = false + + let line = NVActivityIndicatorShape.Line.createLayerWith(size: CGSize(width: lineSize, height: size.height), color: color) + let frame = CGRect(x: x + lineSize * 2 * CGFloat(i), + y: y, + width: lineSize, + height: size.height) + + line.frame = frame + line.addAnimation(animation, forKey: "animation") + layer.addSublayer(line) + } + } +} \ No newline at end of file diff --git a/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift new file mode 100644 index 00000000..3bceafba --- /dev/null +++ b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift @@ -0,0 +1,153 @@ +// +// NVActivityIndicatorAnimationOrbit.swift +// NVActivityIndicatorViewDemo +// +// Created by Nguyen Vinh on 6/12/16. +// Copyright © 2016 Nguyen Vinh. All rights reserved. +// + +import UIKit + +class NVActivityIndicatorAnimationOrbit: NVActivityIndicatorAnimationDelegate { + let duration: CFTimeInterval = 1.9 + let satelliteCoreRatio: CGFloat = 0.25 + let distanceRatio:CGFloat = 1.5 // distance / core size + + var coreSize: CGFloat = 0 + var satelliteSize: CGFloat = 0 + + func setUpAnimationInLayer(layer: CALayer, size: CGSize, color: UIColor) { + coreSize = size.width / (1 + satelliteCoreRatio + distanceRatio) + satelliteSize = coreSize * satelliteCoreRatio + + ring1InLayer(layer, size: size, color: color) + ring2InLayer(layer, size: size, color: color) + coreInLayer(layer, size: size, color: color) + satelliteInLayer(layer, size: size, color: color) + } + + func ring1InLayer(layer: CALayer, size: CGSize, color: UIColor) { + // Scale animation + let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") + + scaleAnimation.keyTimes = [0, 0.45, 0.45, 1] + scaleAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + scaleAnimation.values = [0, 0, 1.3, 2] + scaleAnimation.duration = duration + + // Opacity animation + let opacityAnimation = CAKeyframeAnimation(keyPath: "opacity") + let timingFunction = CAMediaTimingFunction(controlPoints: 0.19, 1, 0.22, 1) + + opacityAnimation.keyTimes = [0, 0.45, 1] + scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear), timingFunction] + opacityAnimation.values = [0.8, 0.8, 0] + opacityAnimation.duration = duration + + // Animation + let animation = CAAnimationGroup() + + animation.animations = [scaleAnimation, opacityAnimation] + animation.duration = duration + animation.repeatCount = HUGE + animation.removedOnCompletion = false + + // Draw circle + let circle = NVActivityIndicatorShape.Circle.createLayerWith(size: CGSize(width: coreSize, height: coreSize), color: color) + let frame = CGRectMake((layer.bounds.size.width - coreSize) / 2, + (layer.bounds.size.height - coreSize) / 2, + coreSize, + coreSize) + + circle.frame = frame + circle.addAnimation(animation, forKey: "animation") + layer.addSublayer(circle) + } + + func ring2InLayer(layer: CALayer, size: CGSize, color: UIColor) { + // Scale animation + let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") + + scaleAnimation.keyTimes = [0, 0.55, 0.55, 1] + scaleAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + scaleAnimation.values = [0, 0, 1.3, 2.1] + scaleAnimation.duration = duration + + // Opacity animation + let opacityAnimation = CAKeyframeAnimation(keyPath: "opacity") + let timingFunction = CAMediaTimingFunction(controlPoints: 0.19, 1, 0.22, 1) + + opacityAnimation.keyTimes = [0, 0.55, 0.65, 1] + scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear), timingFunction] + opacityAnimation.values = [0.7, 0.7, 0, 0] + opacityAnimation.duration = duration + + // Animation + let animation = CAAnimationGroup() + + animation.animations = [scaleAnimation, opacityAnimation] + animation.duration = duration + animation.repeatCount = HUGE + animation.removedOnCompletion = false + + // Draw circle + let circle = NVActivityIndicatorShape.Circle.createLayerWith(size: CGSize(width: coreSize, height: coreSize), color: color) + let frame = CGRectMake((layer.bounds.size.width - coreSize) / 2, + (layer.bounds.size.height - coreSize) / 2, + coreSize, + coreSize) + + circle.frame = frame + circle.addAnimation(animation, forKey: "animation") + layer.addSublayer(circle) + } + + func coreInLayer(layer: CALayer, size: CGSize, color: UIColor) { + let inTimingFunction = CAMediaTimingFunction(controlPoints: 0.7, 0, 1, 0.5) + let outTimingFunction = CAMediaTimingFunction(controlPoints: 0, 0.7, 0.5, 1) + let standByTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + + // Scale animation + let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") + + scaleAnimation.keyTimes = [0, 0.45, 0.55, 1] + scaleAnimation.timingFunctions = [inTimingFunction, standByTimingFunction, outTimingFunction]; + scaleAnimation.values = [1, 1.3, 1.3, 1] + scaleAnimation.duration = duration + scaleAnimation.repeatCount = HUGE + scaleAnimation.removedOnCompletion = false + + // Draw circle + let circle = NVActivityIndicatorShape.Circle.createLayerWith(size: CGSize(width: coreSize, height: coreSize), color: color) + let frame = CGRectMake((layer.bounds.size.width - coreSize) / 2, + (layer.bounds.size.height - coreSize) / 2, + coreSize, + coreSize) + + circle.frame = frame + circle.addAnimation(scaleAnimation, forKey: "animation") + layer.addSublayer(circle) + } + + func satelliteInLayer(layer: CALayer, size: CGSize, color: UIColor) { + // Rotate animation + let rotateAnimation = CAKeyframeAnimation(keyPath: "position") + + rotateAnimation.path = UIBezierPath(arcCenter: CGPoint(x: CGRectGetMidX(layer.bounds), y: CGRectGetMidY(layer.bounds)), + radius: (size.width - satelliteSize) / 2, + startAngle: CGFloat(M_PI) * 1.5, + endAngle: CGFloat(M_PI) * 1.5 + 4 * CGFloat(M_PI), + clockwise: true).CGPath + rotateAnimation.duration = duration * 2 + rotateAnimation.repeatCount = HUGE + rotateAnimation.removedOnCompletion = false + + // Draw circle + let circle = NVActivityIndicatorShape.Circle.createLayerWith(size: CGSize(width: satelliteSize, height: satelliteSize), color: color) + let frame = CGRectMake(0, 0, satelliteSize, satelliteSize) + + circle.frame = frame + circle.addAnimation(rotateAnimation, forKey: "animation") + layer.addSublayer(circle) + } +} \ No newline at end of file diff --git a/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift index ee174f72..306cd6b4 100644 --- a/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift +++ b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift @@ -41,6 +41,7 @@ import UIKit - BallGridBeat: BallGridBeat animation. - SemiCircleSpin: SemiCircleSpin animation. - BallRotateChase: BallRotateChase animation. + - Orbit: Orbit animation. */ public enum NVActivityIndicatorType: Int { /** @@ -223,8 +224,20 @@ public enum NVActivityIndicatorType: Int { - returns: Instance of NVActivityIndicatorAnimationBallRotateChase. */ case BallRotateChase + /** + Orbit. + + - returns: Instance of NVActivityIndicatorAnimationOrbit. + */ + case Orbit + /** + AudioEqualizer. + + - returns: Instance of NVActivityIndicatorAnimationAudioEqualizer. + */ + case AudioEqualizer - private static let allTypes = (Blank.rawValue ... BallRotateChase.rawValue).map{ NVActivityIndicatorType(rawValue: $0)! } + private static let allTypes = (Blank.rawValue ... Orbit.rawValue).map{ NVActivityIndicatorType(rawValue: $0)! } private func animation() -> NVActivityIndicatorAnimationDelegate { switch self { @@ -288,15 +301,27 @@ public enum NVActivityIndicatorType: Int { return NVActivityIndicatorAnimationSemiCircleSpin() case .BallRotateChase: return NVActivityIndicatorAnimationBallRotateChase() + case .Orbit: + return NVActivityIndicatorAnimationOrbit() + case .AudioEqualizer: + return NVActivityIndicatorAnimationAudioEqualizer() } } } /// Activity indicator view with nice animations public class NVActivityIndicatorView: UIView { - private static let DEFAULT_TYPE: NVActivityIndicatorType = .BallSpinFadeLoader - private static let DEFAULT_COLOR = UIColor.whiteColor() - private static let DEFAULT_PADDING: CGFloat = 0 + /// Default type. Default value is .BallSpinFadeLoader. + public static var DEFAULT_TYPE: NVActivityIndicatorType = .BallSpinFadeLoader + + /// Default color. Default value is UIColor.whiteColor(). + public static var DEFAULT_COLOR = UIColor.whiteColor() + + /// Default padding. Default value is 0. + public static var DEFAULT_PADDING: CGFloat = 0 + + /// Default size of activity indicator view in UI blocker. Default value is 60x60. + public static var DEFAULT_BLOCKER_SIZE = CGSizeMake(60, 60) /// Animation type, value of NVActivityIndicatorType enum. public var type: NVActivityIndicatorType = NVActivityIndicatorView.DEFAULT_TYPE @@ -355,10 +380,10 @@ public class NVActivityIndicatorView: UIView { - returns: The activity indicator view. */ - public init(frame: CGRect, type: NVActivityIndicatorType = DEFAULT_TYPE, color: UIColor = DEFAULT_COLOR, padding: CGFloat = DEFAULT_PADDING) { - self.type = type - self.color = color - self.padding = padding + public init(frame: CGRect, type: NVActivityIndicatorType? = nil, color: UIColor? = nil, padding: CGFloat? = nil) { + self.type = type ?? NVActivityIndicatorView.DEFAULT_TYPE + self.color = color ?? NVActivityIndicatorView.DEFAULT_COLOR + self.padding = padding ?? NVActivityIndicatorView.DEFAULT_PADDING super.init(frame: frame) } diff --git a/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorViewable.swift b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorViewable.swift new file mode 100644 index 00000000..c518c3d5 --- /dev/null +++ b/iOS/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorViewable.swift @@ -0,0 +1,77 @@ +// +// NVActivityIndicatorViewable.swift +// NVActivityIndicatorViewDemo +// +// Created by Basem Emara on 5/26/16. +// Copyright © 2016 Nguyen Vinh. All rights reserved. +// + +import UIKit + +/** + * UIViewController conforms this protocol to be able to display NVActivityIndicatorView as UI blocker. + * + * This will add functionalities to UIViewController to display and remove UI blocker. + */ +public protocol NVActivityIndicatorViewable { } + +public extension NVActivityIndicatorViewable where Self: UIViewController { + + private var activityRestorationIdentifier: String { + return "NVActivityIndicatorViewContainer" + } + + /** + Create a activity indicator view with specified frame, type, color and padding and start animation. + + - parameter size: activity indicator view's size. Default size is 60x60. + - parameter message: message under activity indicator view. + - parameter type: animation type, value of NVActivityIndicatorType enum. Default type is BallSpinFadeLoader. + - parameter color: color of activity indicator view. Default color is white. + - parameter padding: view's padding. Default padding is 0. + */ + public func startActivityAnimating(size: CGSize? = nil, message: String? = nil, type: NVActivityIndicatorType? = nil, color: UIColor? = nil, padding: CGFloat? = nil) { + let activityContainer: UIView = UIView(frame: view.bounds) + + activityContainer.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) + activityContainer.restorationIdentifier = activityRestorationIdentifier + + let actualSize = size ?? NVActivityIndicatorView.DEFAULT_BLOCKER_SIZE + let activityIndicatorView = NVActivityIndicatorView( + frame: CGRectMake(0, 0, actualSize.width, actualSize.height), + type: type, + color: color, + padding: padding) + + activityIndicatorView.center = activityContainer.center + activityIndicatorView.hidesWhenStopped = true + activityIndicatorView.startAnimation() + activityContainer.addSubview(activityIndicatorView) + + let width = activityContainer.frame.size.width / 3 + if let message = message where !message.isEmpty { + let label = UILabel(frame: CGRectMake(0, 0, width, 30)) + label.center = CGPointMake( + activityIndicatorView.center.x, + activityIndicatorView.center.y + actualSize.height) + label.textAlignment = .Center + label.text = message + label.font = UIFont.boldSystemFontOfSize(20) + label.textColor = activityIndicatorView.color + activityContainer.addSubview(label) + } + + view.addSubview(activityContainer) + } + + /** + Stop animation and remove from view hierarchy. + */ + public func stopActivityAnimating() { + for item in view.subviews + where item.restorationIdentifier == activityRestorationIdentifier { + item.removeFromSuperview() + } + } + +} \ No newline at end of file diff --git a/iOS/Pods/NVActivityIndicatorView/README.md b/iOS/Pods/NVActivityIndicatorView/README.md index 4a8830e0..e05f8672 100644 --- a/iOS/Pods/NVActivityIndicatorView/README.md +++ b/iOS/Pods/NVActivityIndicatorView/README.md @@ -47,6 +47,8 @@ For first-hand experience, just open the project and run it. 27. BallGridBeat 28. SemiCircleSpin 29. BallRotateChase +30. Orbit +31. AudioEqualizer # Installation @@ -165,6 +167,26 @@ Stop animation activityIndicatorView.stopAnimation() ``` +## UI blocker + +You can use `NVActivityIndicatorView` as UI blocker for `UIViewController` by conforming `NVActivityIndicatorViewable` protocol. + +```swift +class ViewController: UIViewController, NVActivityIndicatorViewable { } +``` + +Start animation + +```swift +startActivityAnimating(size, message) // plus other parameters as when initializing +``` + +Stop animation + +```swift +stopActivityAnimating() +``` + ## Change properties If you use `NVActivityIndicatorView` in storyboard, you can change these properties in Attributes inspector tab of Utilities panel. @@ -194,6 +216,17 @@ Get current status of animation animation = activityIndicatorView.animating ``` +## Change defaults + +Change global defaults if needed + +```swift +NVActivityIndicatorView.DEFAULT_TYPE = .Pacman +NVActivityIndicatorView.DEFAULT_COLOR = UIColor.yellowColor() +NVActivityIndicatorView.DEFAULT_PADDING = CGFloat(5.0) +NVActivityIndicatorView.DEFAULT_BLOCKER_SIZE = CGSizeMake(60, 60) +``` + # Acknowledgment Thanks [Connor Atherton](https://github.com/ConnorAtherton) for great loaders and [Danil Gontovnik](https://github.com/gontovnik) for kick-start. diff --git a/iOS/Pods/Pods.xcodeproj/project.pbxproj b/iOS/Pods/Pods.xcodeproj/project.pbxproj index c61e5ede..0850b1ee 100644 --- a/iOS/Pods/Pods.xcodeproj/project.pbxproj +++ b/iOS/Pods/Pods.xcodeproj/project.pbxproj @@ -1,5118 +1,15649 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 001A845B74D148EBB6F18AE5742E2D17 /* INTULocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 447B9A6A811DB3F64D3D83940CE3366D /* INTULocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0054438F822C8DE3B23E57F945C6733D /* SwiftInAppPurchase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A3457F1FC69AA54BCBEF35F1B158D039 /* SwiftInAppPurchase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 00967A34C0778275E41D1CBA32E398F8 /* UILabel+Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = 849C68141D31405B40D13AD2C8B773C6 /* UILabel+Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 01C6F32401BCBE9FF9B3C095B031D92B /* UIColor+Chameleon.m in Sources */ = {isa = PBXBuildFile; fileRef = B656B002A52FEAE9387B7EDD97D110E7 /* UIColor+Chameleon.m */; }; - 05F9EFB06257765DD08FB9D48590ECB5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 06720CD7705F71178390FE16A75D419A /* DGRunkeeperSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD32A5FBC69D7089DA79EE914D73AFB6 /* DGRunkeeperSwitch.swift */; }; - 0686B89336BC7948B8112632BE3BA8E6 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB90F07A4822A1DA79878873304DDF1E /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */; }; - 078D4DF75013A50AAFBCC75467214CFB /* NSString+FSExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = F11B98FD6A0C718D5DA609DF7EE5B2DC /* NSString+FSExtension.m */; }; - 082C46A244A1077339875D1132DF9874 /* FSCalendarAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = B8B5CF40640D21C440172236DBD428C2 /* FSCalendarAppearance.m */; }; - 095406039B4D371E48D08B38A2975AC8 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32872696A15B7ED2D762F49591E1D0A5 /* Error.swift */; }; - 097AE4014349090D14C6C5637F8A3464 /* ChameleonConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 57F146A001151D3104E6D36C4C128249 /* ChameleonConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0AB4C7D0B16AE708849843F055FC111C /* EFCircularTrig.m in Sources */ = {isa = PBXBuildFile; fileRef = 8406423E6114C31520801D4021859618 /* EFCircularTrig.m */; }; - 0B330B5573EB7B74DB2738315326E745 /* TweakCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89190DA7A50AAE4C6B178B872132CCC2 /* TweakCollection.swift */; }; - 0B87AEED887108FF3FDA89B00E048E1B /* MRCircularProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211FDEBCC6FEAC482F69A4DA39D7366 /* MRCircularProgressView.m */; }; - 0C47745482BBB2380A6E3806E725E1F2 /* DateInRegion+NSDatePort.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0857403C81F18B61814CA26C8A6C318 /* DateInRegion+NSDatePort.swift */; }; - 0E44012DD097816D61C9AF7B4D509469 /* FSCalendarHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = B308A9AA2A2121A6C76951E22E829A61 /* FSCalendarHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0EB9810F4FF177DB9FC568988A3D61AD /* NSCalendar+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A259EF94300F07E785F53C6DDB04D452 /* NSCalendar+SwiftDate.swift */; }; - 0F85524881D6DA94329304BA17B41E45 /* NVActivityIndicatorAnimationBlank.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD954368950DBE6188ABF6411D0E2F87 /* NVActivityIndicatorAnimationBlank.swift */; }; - 0FBD5E2C6A03099EC2D8BC9F1FCCE00C /* FAKOcticons.h in Headers */ = {isa = PBXBuildFile; fileRef = 482709D9A1EDC65C7090BE3F2A6BE946 /* FAKOcticons.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1070D2E058014E659F1475DC85A7C176 /* NSDateComponents+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2948F4158FE4D2BBE8C813788219DB9 /* NSDateComponents+SwiftDate.swift */; }; - 10AA9E0562348025E925BDD4096992F4 /* INTULocationManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 99583B8A48BFD9C00C28992142B2A014 /* INTULocationManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 114EC44860AE0279E6D99134F9AD6A4F /* NSDate+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F1DCE3FF7C8BD48A42884948C4E0A63 /* NSDate+SwiftDate.swift */; }; - 11BA64BC0B2FE8DDB41883B7241A8C49 /* DGElasticPullToRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3706DEF5E05D37992415349C6E630839 /* DGElasticPullToRefresh-dummy.m */; }; - 11F20D807E923A4DBE6CDFDA9A73C229 /* FSCalendarCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = F708B4EA38504B2CCFC0DB52F22A48E1 /* FSCalendarCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11F2BC52C5B615CDAEAFB7851AC38F94 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 728F8DE7C15B97A90553B6FDC5261775 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */; }; - 1236ECB96A915EC617957A42838CDD7B /* ChameleonConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = ECAD2275A230BC19D18511D36F75CB0E /* ChameleonConstants.m */; }; - 1250C15821D063438351CA3D374B8153 /* INTUHeadingRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = A144E1C7B06A6519A9145CE8AD66715A /* INTUHeadingRequest.m */; }; - 126169B8BF7430D89BB990B97C36D75F /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EEDECF77A1A763AF36DA8A58379BC01 /* Async.swift */; }; - 1317BB4073D01F6F798D8A71D02AA800 /* NVActivityIndicatorAnimationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7908A27084490866DA36B3A90495AB62 /* NVActivityIndicatorAnimationDelegate.swift */; }; - 1373B67E375E068650B2E2CBB034D392 /* SwiftTweaks-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A1DBD7224FF5E1783B1C86C2AB99816 /* SwiftTweaks-dummy.m */; }; - 13EDB09E7DEF6FFF1E38F91B668F718A /* NVActivityIndicatorShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67E17F81B9948A10A15D07BD52B27F9 /* NVActivityIndicatorShape.swift */; }; - 15E113F19F49C0C0472242BD6E849A1B /* UIImage+ChameleonPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 20EA86D5BABC04E604138A9939838E79 /* UIImage+ChameleonPrivate.m */; }; - 16102E4E35FAA0FC4161282FECE56469 /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7186E0433615B16D699B21AAC3BA1D /* Timeline.swift */; }; - 165244AE75779FAEAA05BF5A8F6CF526 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 18BC1B2A0EA94E2BF2DC912E1645E906 /* Permissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DC219A03C285CA4550E1EA425A657CA /* Permissions.swift */; }; - 18F7B1BC3DFC0A52FF8FB133607EEA02 /* zocial-regular-webfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AA6A5F7E3DE9DE7F172B6ED993415B2C /* zocial-regular-webfont.ttf */; }; - 1941EA048852E4C592F5A0C2F080720E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 195C882D7CF3B187A7ABD8D9A24ECDDC /* NVActivityIndicatorAnimationBallClipRotatePulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6122E275D2F9E5AF26DD833E4B1A3F3F /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */; }; - 19A44C55B25612B9721A27E7C49E03CF /* MRIconView.m in Sources */ = {isa = PBXBuildFile; fileRef = F0040F5CDC1B8B85F16675C3952BF53C /* MRIconView.m */; }; - 1A2435BB3EA4E8AEB8E91E18815012F0 /* UIEdgeInsets+EdgeInsetsTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20E6C13EB21880BDBB2FFC26B4497DD9 /* UIEdgeInsets+EdgeInsetsTweakTemplate.swift */; }; - 1CD9428D34F76710C9565467CF1F2F73 /* NVActivityIndicatorAnimationBallPulseRise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F8617638F2D9D06E35B6F8FB835920 /* NVActivityIndicatorAnimationBallPulseRise.swift */; }; - 1CECA6AF45BF404B2D2DFE7C83F28BA9 /* TweakClusterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EF0A4509D6442CBC9A8F75617BBAA0A /* TweakClusterType.swift */; }; - 1D2EFA0B86C5816E844D2436C2B5EBA7 /* INTULocationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CCEE1B5492455A6A571CE59384580EDA /* INTULocationManager+Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D35C1D706CC250647A30E728E9C1B30 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E591C42CC4E4658C8954976C3DB5CE1 /* QuartzCore.framework */; }; - 1DD0C4D6F1DB0270DD7A98B6BD82559E /* NVActivityIndicatorAnimationCubeTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 169BACA90582EBFD066DA19FDC8EB364 /* NVActivityIndicatorAnimationCubeTransition.swift */; }; - 20C5E87C1DF07DEA65CD74B8D07D6D1C /* DGElasticPullToRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B56AC12E15DE38849DD78F6AFF9A0093 /* DGElasticPullToRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 21209814564B699E013C0579D7617C88 /* FSCalendarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 569706BE3B48E5ADE03CE8CC5AE907D2 /* FSCalendarCell.m */; }; - 21545F160C46FD160CD617256FA82180 /* NVActivityIndicatorAnimationBallScale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1522ADB16DE3A06A2671763014ABD715 /* NVActivityIndicatorAnimationBallScale.swift */; }; - 21E13D0D47B4A85902BA6A603922906E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E591C42CC4E4658C8954976C3DB5CE1 /* QuartzCore.framework */; }; - 229DE6B8FE392023C9B9A74F3193F65D /* INTUHeadingRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A63280472AA63AA3827046A0A9320C9B /* INTUHeadingRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2344EEA95021B1E417191EFF5661A1E8 /* UIView+TweakGroupTemplateSpringAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD55E0D5E9305873433818D9DAAC229F /* UIView+TweakGroupTemplateSpringAnimation.swift */; }; - 237B3AC32C4A07FFE56EFB3E26E90013 /* INTURequestIDGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3D61728F1D9BA9148E11E01029BFB0 /* INTURequestIDGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 24E7D20FD204AF7AACB30A3B7C16388C /* NSArray+Chameleon.m in Sources */ = {isa = PBXBuildFile; fileRef = BE88A80595B96E4361417A5C09BE74AC /* NSArray+Chameleon.m */; }; - 263B82D79238953CC9F9619897122D31 /* NSDateFormatter+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11CD7B4D6796DE722E7E6AE91271E532 /* NSDateFormatter+SwiftDate.swift */; }; - 2678DD25584EF746F6C2B2451B25A499 /* Dictionary+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F7502E73C5C7AFF2D7C193B3CC17635 /* Dictionary+SwiftDate.swift */; }; - 2754C4E95E265639D7CFC90BA8264476 /* AsyncSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE356A9212EF12B261B74490F444E91 /* AsyncSwift-dummy.m */; }; - 28BFEF0F25609E5CF6D310771B92CD24 /* MRStopButton.m in Sources */ = {isa = PBXBuildFile; fileRef = BC89282A528D90977B0E6F31AA0FDEBF /* MRStopButton.m */; }; - 2A1C08A4886BAA4B1C137186C1922810 /* TweaksCollectionsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4BE8B37F5227AE9F22B760ABF5A04E0 /* TweaksCollectionsListViewController.swift */; }; - 2A356D564FA2B8D64F7081E23DD8A424 /* EFCircularTrig.h in Headers */ = {isa = PBXBuildFile; fileRef = CFC0D160A932B3831E1F860B453DEFF9 /* EFCircularTrig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2B760213EE78830957A29FF2AEC63E40 /* MRProgress-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A8F16B1600A0AB85750BF471BD387E4 /* MRProgress-dummy.m */; }; - 2BB77CD255C32BA9566C3A6110B43AFF /* TweakGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E12931828371D1F461C1EFA4DF0E6A1 /* TweakGroup.swift */; }; - 2D3405986FC586FA6C0A5E0B6BA7E64E /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24C4760F5DD4CB467A7112281E967C04 /* Validation.swift */; }; - 2F302D0DA9C29B0C831DCCAD09C11BA6 /* TweaksRootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB8B32E09A6D660843696180B2EA06FE /* TweaksRootViewController.swift */; }; - 2F903EAED6109D3BF3F180DDFD24D62A /* AsyncSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A5DF86838CC87F5636E6003B7B2A6FD /* AsyncSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2FCE1C00460CF74F457E0093A676A834 /* FSCalendarConstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BD65FFE029BD5131BE61C0203190CE62 /* FSCalendarConstance.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 308124B98FD3652B201324103914C0E7 /* TweakStore+Sharing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73B75EF826BC45E0FD16F366632E4061 /* TweakStore+Sharing.swift */; }; - 3084B72EA21046D2E806C9661E8FF54E /* MRCircularProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = 54FBED247FC03E61556D0E18EDE19BAA /* MRCircularProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 30F74FFB8022989294FEE27D2CF1B66B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - 31664405792D70A623BBBDF3A04A0776 /* DateInRegion+Components.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC646D44C22C4D190BD828E2FBDD9110 /* DateInRegion+Components.swift */; }; - 3229A4B8643CC32C52B866C29AF7D3F4 /* NVActivityIndicatorAnimationSemiCircleSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F794F15EA8EB2CF6949F988E303227F3 /* NVActivityIndicatorAnimationSemiCircleSpin.swift */; }; - 33196910D726B12C2DAE7B7F1F3E5517 /* SCLAlertView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4151BD174057BBEF8FDBFFB30DD54C24 /* SCLAlertView-dummy.m */; }; - 33BEEEDA9F79EFF262B940A9A9EA8D38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 34CCDCA848A701466256BC2927DA8856 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2D4BA395E15BF7D4DE9A5B98C09FD03 /* NetworkReachabilityManager.swift */; }; - 34F1A41432F9FD7D314BC11F66BBA40C /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD45079373CEF4DB383A974AA819997 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */; }; - 351D7AEB6A0C1AAB2267AD1216CE8B63 /* PermissionScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B80CAA48BD48E55BDE62C7CCFA8DA6D /* PermissionScope.swift */; }; - 3538271BE9957556474BEFD50E0DAB53 /* TweakStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D2F5D5E3664356890D3BACD6C700289 /* TweakStore.swift */; }; - 387C50EDB866026D550580B80DAD9021 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 389F4FC852E57772F6B9444E0013890F /* NSTimeZone+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F06F8B0DC961F6025FAE8D3C0D82F37D /* NSTimeZone+SwiftDate.swift */; }; - 38BC77477F17624F3CD61F54847FCFA1 /* TweakBackup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0395352DDFC006935068F7248640B54F /* TweakBackup.swift */; }; - 39142C7BD7BBC877D884D0CDB2A70EF0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 39582F80068C0DEF708DEE01B8C053F7 /* NSDate+FSExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = C87940E53F694BE749F7FA882590EBD0 /* NSDate+FSExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B202C12728218C238D98AEE659FF7D1 /* FSCalendarHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 83C00FF983D24287B17F2A761C657BB6 /* FSCalendarHeader.m */; }; - 3CBF88CA2DE4F67B82C36AE6290DCC90 /* FSCalendarStickyHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 32CA1C89376BDA8A4BA761521A0973B4 /* FSCalendarStickyHeader.m */; }; - 3E218859B14210B9FC24C75E5A9D7BDF /* SCLAlertView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 117385C631C97B0A140C7BAB9815BC8B /* SCLAlertView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3EA8F215C9C1432D74E5CCA4834AA8C0 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CE28601D5261E856C0D00DDAF43B5D0 /* ResponseSerialization.swift */; }; - 4081EA628AF0B73AC51FFB9D7AB3B89E /* Manager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68E47FA06F12259C88755EBCF2B5F6D0 /* Manager.swift */; }; - 40941F6499CC47BDB600BE4C748BD089 /* PermissionScope-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F513CD12D6CE1CEB681A67342D80B7A3 /* PermissionScope-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 414FBF440325FF92AD9E28D8FD38B0D5 /* TweaksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 569830AE11E3A35BD852B8ED6F3D5EF3 /* TweaksViewController.swift */; }; - 4194C2418EEF62E01342A820B5EF9C71 /* UIColor+ChameleonPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D3077E65F29689E9252DD264638DC02B /* UIColor+ChameleonPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 42550B9FB3F43C948A94F65969E2A2C8 /* BasicAnimationTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72A59E865956F9E03182D589274659E /* BasicAnimationTweakTemplate.swift */; }; - 42E18A7773D704188DAE03B594B0B690 /* UIView+FSExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3EA4423BD406CFC32F8401D8B98AD0 /* UIView+FSExtension.m */; }; - 4426A691D97D39921800FF233CF4D761 /* TweaksBackupsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D322867D872F05065D7739085407378 /* TweaksBackupsListViewController.swift */; }; - 454E1EB4F7B62721B59982B1E983DCFA /* MRProgressOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE3F8157087AA2025B0191725E87696 /* MRProgressOverlayView.m */; }; - 4573AE19937C8058AE5C21C64A3CA95B /* Log-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5B81E6F37FD70176FDCF14CAA80ACD /* Log-dummy.m */; }; - 45B28CDACD362CEF2CA6012BA0015DB6 /* OnboardingViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 548A620D1A26A399B464DDF4F7A1958C /* OnboardingViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4781EBC1F6439821D47B84B8FFDFA36D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - 47DD9712148A849597BF4BB6A7CF5B9C /* EFCircularSlider-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF63F2B8ADEAFA35248F1055F9E9167 /* EFCircularSlider-dummy.m */; }; - 47DE477BA301030E4897DBAF3C6F691A /* SwiftDate-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 07616EFF2950BF156B44B1883E4026C2 /* SwiftDate-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4814EE71271BC074621A5ABB07525ACF /* FSCalendar+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D97FB9255C36E255BC8927C3A6E463ED /* FSCalendar+IBExtension.m */; }; - 4A0E71E9E2BD86AA8CB6077A95CDC034 /* ChameleonEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = A982CC753D49BAF3586677608039BB2C /* ChameleonEnums.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4B799D845B4D8A77F7BBE9639B18FC4F /* FAKIonIcons.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD7A27382116A1BC71A4C5B2D59C2F3 /* FAKIonIcons.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4B9AD6ACBAAFB29322FBD43EE53822DE /* TweakableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C83D7B5517F1A42EBAFFD190376EACF /* TweakableType.swift */; }; - 4BDF7B753610E441D4237A2A11DF96E4 /* EdgeInsetsTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A924633224C2DB29B1DF6C655045F58 /* EdgeInsetsTweakTemplate.swift */; }; - 4C11C1DBB66C7F9B63E69D4185222DCA /* DateInRegion+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C83AD2BC1FBEB0750B19B093712D545 /* DateInRegion+Operations.swift */; }; - 4C6CEBA607BEA909A9CCB80C6AB6AE88 /* UINavigationController+Chameleon.m in Sources */ = {isa = PBXBuildFile; fileRef = D44F8A2880915B7FE2A827F1DC978F65 /* UINavigationController+Chameleon.m */; }; - 4CCFBAC76E15D8995C498F804B1C8916 /* NSDateInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E32D81915143777356AD901BFF95ED6 /* NSDateInterval.swift */; }; - 4CE052B699FE14245A9BC48EAB53D9F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 4D79EC114BE4E3A99C20702B190F2FCA /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1E25E16A3028704811EB5A6B5615C9 /* Constants.swift */; }; - 4EE7425D051C10CFC7D52095223EB7FA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - 4FED89D46A7E0802F4CE50A530FFD92C /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7FCECEA5B329F642D7DDE7E9C1161556 /* Media.xcassets */; }; - 501198AA5B6723D71C0194BAD075BF02 /* DGElasticPullToRefreshView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BA74DB244E08F0B20B447A60A292B28 /* DGElasticPullToRefreshView.swift */; }; - 50A0CC643EC96C430655196AA0BE47D0 /* HashingUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92CC62C5C9F65A5EE2CB374D204B665D /* HashingUtilities.swift */; }; - 511DB1410DA63BFA56F3BC2B311E14C9 /* Pods-tpg offline-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 57E26CB58B93C4F17A71252E0318205B /* Pods-tpg offline-dummy.m */; }; - 5177B3B95985D0A2CF8376A6FD4488C2 /* UIViewController+Chameleon.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C2BB2D6E127F0B0CAEF19791583027 /* UIViewController+Chameleon.m */; }; - 51D1AC1D010EA99E078E75C69C6D2111 /* FSCalendarEventIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = F8B6FABB6260EFAB6BE019E1F5E5F821 /* FSCalendarEventIndicator.m */; }; - 529B5FE84D8845B8B5FD0D72FB81FCAC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - 52A5E8263E7C91DDAB94F66A5364369B /* MRProgressOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 30BBB37269D011A14B4F6205299257E7 /* MRProgressOverlayView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 543CDB14C968232D7678AE5654E50C86 /* DateInRegion+Formatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA5B58475862B2A09FA58AEE9EFE1722 /* DateInRegion+Formatter.swift */; }; - 5808D58D1830247ACB009488726E1B06 /* NVActivityIndicatorView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 64ACDA21709E5496176A04222208D4E9 /* NVActivityIndicatorView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 581717436435D5B2B4CD456003D11B61 /* AKPickerView-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 23ED5B56EAD6A1100447D1DB06EC925A /* AKPickerView-Swift-dummy.m */; }; - 583AF6FB2DC5270369C73CAFABBE8025 /* HitTransparentWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B04BC6BFF42CAAED02C773D25DBCB /* HitTransparentWindow.swift */; }; - 58E841A4DCB11D3EB3499A93638E281D /* DateInRegion+StartEnd.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A22324BF4C3DF06D0A9FA09A7FA5 /* DateInRegion+StartEnd.swift */; }; - 595D2F50A91B50B34D1CA62399375A9C /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E56E9A3513EA29BB78B1359F627F1B9 /* StoreKit.framework */; }; - 599393E375A20A35BDA5AF34B08A443D /* EFCircularSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 8630F62CDC57FBD5BFE1B7C6E011FEDE /* EFCircularSlider.m */; }; - 5A06805481198392167DEC158CA02B1A /* SignedNumberTweakDefaultParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54A8A52B91480CCB30E99C484E02BEAA /* SignedNumberTweakDefaultParameters.swift */; }; - 5A287039D4F0CF32ACBFB84796C9FFC1 /* TweakLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6250EC902E949A4A30CA1FCAD56C9EBB /* TweakLibrary.swift */; }; - 5BC19E6E0F199276003F0AF96838BCE5 /* Upload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3520258A6D98CCE6EBB297C6877589 /* Upload.swift */; }; - 5BD99F146DD53623AB4C1BA232860E0C /* SwiftInAppPurchase.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 6AC0D26FE0B5388F306CF6D5FE85B74D /* SwiftInAppPurchase.bundle */; }; - 5C88EB02C6D789D20C6298CF77049112 /* FSCalendar+IBExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = E265939F188BA3C70277F6560858C0F9 /* FSCalendar+IBExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5CB05FBCB32D21E194B5ECF680CB6AE0 /* Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C34F39A3C8D212879095A190678BF3 /* Download.swift */; }; - 5CCC419BB423F48192FBA3C7D7D6B7DA /* ChameleonMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FE445956B1D21BF32C83E62B273F5BA /* ChameleonMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D8CC81D38FFCFD3A5745E8C2F86F40B /* DGRunkeeperSwitch-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 44989BC3C89A3F02752B8168BCD91229 /* DGRunkeeperSwitch-dummy.m */; }; - 5F7F40B822116B9DABC6B73B8EBE338B /* MRBlurView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1285CA76BFC0689BF0EFB5B31D3CDA77 /* MRBlurView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 605479F859F350D44EB0FF16021EE436 /* ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FAC9B52DFE28E8AEB442A5A727BEE41F /* ionicons.ttf */; }; - 615014C3941C729C35CD0B37DB1D8CCF /* PaymentRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2444A70958E420012AB33C638444FDE8 /* PaymentRequestHandler.swift */; }; - 62D098F264BA505FF93376E1817B7D31 /* Structs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94FF1A5EBC2411CFF06577497A0AEBD4 /* Structs.swift */; }; - 62DAB376C907D2E207CD97EBBBBD7D82 /* SwiftInAppPurchase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 800DC6EE597AB4A83203896E40F16190 /* SwiftInAppPurchase-dummy.m */; }; - 62E8346F03C03E7F4D631361F325689E /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F00C55BB4E20BF9BAB4D49ABA3E1A3F /* Response.swift */; }; - 62FD8C39DA7D9DF1AB613C34299AB9AB /* NVActivityIndicatorAnimationPacman.swift in Sources */ = {isa = PBXBuildFile; fileRef = 143249D2E9DB5B34C9E9D293FF3EE6EA /* NVActivityIndicatorAnimationPacman.swift */; }; - 636FA0BF7676E4972B8843F989D305F9 /* INTULocationRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = AB617AFAD86429EFA77D71183891A810 /* INTULocationRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 63FC2F696C591B06128339C15CBF70D9 /* FontAwesomeKit.h in Headers */ = {isa = PBXBuildFile; fileRef = D41FA0747FB93DA0D9215B7940ACF1BD /* FontAwesomeKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6438C9150C2D0298D0FDF8C3C6566842 /* NVActivityIndicatorAnimationBallRotateChase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51E13B0DA049BC0A09EBFF059D61434 /* NVActivityIndicatorAnimationBallRotateChase.swift */; }; - 64C89D98B9D3B9C57971E1E137233980 /* ChameleonFramework-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CD44BBFB869D5BFF18474F1453345EE9 /* ChameleonFramework-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 659026E53077FED17DB71A0B902F7ECD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 66323BA01DCC80D9617C3DC6EC93096B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 6706D233F78CA9528D6C410722BE09C5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 67BC2C4F5C488A9B4F8ECD0DF6611F2F /* NVActivityIndicatorAnimationBallRotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51797706944D4A52049858F0D5F68FA2 /* NVActivityIndicatorAnimationBallRotate.swift */; }; - 680BF2F437D5CBFE76A037E4752E343E /* TweakWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BC40F4D6EFA3E6DDA821A2CA0580C83 /* TweakWindow.swift */; }; - 68601DD8D1367CD635712B9FF4797A9A /* Onboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B524783A143F71DFD4F4E48E7D90C37A /* Onboard-dummy.m */; }; - 6983260381111B42F335961452EEE2B0 /* FSCalendarFlowLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C697A745766C38BAF738D2E56E9007 /* FSCalendarFlowLayout.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B058FB2BD6B6B55995F631EE4B61D8E /* DGElasticPullToRefreshExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 615133C94EA4E19E3A959E24DD35CD7C /* DGElasticPullToRefreshExtensions.swift */; }; - 6C92086C1DC08BB2A45B0A66F839CA48 /* FSCalendarFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B5895B5346264B522236A218B24E021 /* FSCalendarFlowLayout.m */; }; - 6DA60574521A1711FF18D06D5CDB10B9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 6DF83D3AA2FC55EC3A34594816BAAB73 /* NVActivityIndicatorAnimationBallGridPulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC78930784A2D8C9C7AA1646961C6FB /* NVActivityIndicatorAnimationBallGridPulse.swift */; }; - 6E311772AD258F10554F5686089C87DA /* ColorRepresentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012189AF218224586E70149DAEF1EAF6 /* ColorRepresentation.swift */; }; - 6EB12E0817F1017B691D7164C76E3AC4 /* SpringAnimationTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65685430497D7C66F47F350FAC62EEDE /* SpringAnimationTweakTemplate.swift */; }; - 6ECD11C96CBDCA50F0331F3FBDAECE64 /* FSCalendar.m in Sources */ = {isa = PBXBuildFile; fileRef = DBF9579287A757FEABC9C9D7D379C907 /* FSCalendar.m */; }; - 6F092C062F9052E042399723F30A51FD /* NVActivityIndicatorAnimationBallGridBeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDCAB3216A15D7C6D5EB472E9314C345 /* NVActivityIndicatorAnimationBallGridBeat.swift */; }; - 6FFDAD2F800BC27FCF40E92B71D88CF3 /* UINavigationController+Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE7C528A139F58C646149FE94EC5DFB /* UINavigationController+Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 70BEF2DCF1FC89FCF98648FD6786A1AC /* NVActivityIndicatorAnimationBallPulseSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F902121FD352F721FB38767860C7EDD /* NVActivityIndicatorAnimationBallPulseSync.swift */; }; - 717E6DF8C0702567A757898EEC4C07F7 /* Localize-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B87C9926EB91EE966744F50A33275833 /* Localize-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 72079B7D694FB64AA4109CDFB0181EB4 /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8EE31FD01C4A8007E12433A6E78CE5C /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */; }; - 738E4E0555CE3C233C400AE87B9887E4 /* Chameleon_.h in Headers */ = {isa = PBXBuildFile; fileRef = 353C100864557E00F0CB9AE5E823B140 /* Chameleon_.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 743D63D3EF95A875E73D332BC60C60BE /* FAKFontAwesome.h in Headers */ = {isa = PBXBuildFile; fileRef = EB412DCE625C4C5EC1F4B45499E42B49 /* FAKFontAwesome.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 744D91185307ACFC2DF330EE1875CB87 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3804017A096C4E2CA1596FC93D45728 /* CoreText.framework */; }; - 74DA1BB41C1D7C0DD17F213B20E23978 /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 475FF44C03EF51904E86BA0A0C5CDD89 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 75C2EC4E91C632BA530B5B1E60DC4AEE /* MRNavigationBarProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B08A1B36F0A6E4CD519408A67150374 /* MRNavigationBarProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76D105B81BEFA8C655354721EA448746 /* SwiftTweaks-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A163B5F0893795F7872B422D5A89A4 /* SwiftTweaks-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7708E07C85FF6C2BC400C15CCDB7EB1C /* UIImage+ChameleonPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3402FC82014D3F9A274CC1D9750A4A05 /* UIImage+ChameleonPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 774B3272DCC6211CA7AED1E05E400F76 /* TweakBinding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D89CF12858C8F74A57B7A3941152568 /* TweakBinding.swift */; }; - 776F694F5E6A073F685303E7083650F2 /* Region.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91E89C91C9DC0DA11924AF3FFF6B2AEB /* Region.swift */; }; - 77BA62656E59803B6782E00479704D93 /* DateInRegion+Comparisons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B466E914C58E53362C6F1A7983FC2AC /* DateInRegion+Comparisons.swift */; }; - 780A8FD22AD4E27401AF6F633520103F /* Info.plist in Sources */ = {isa = PBXBuildFile; fileRef = 7BB2FDDE4B22A473B310D6921A44C78F /* Info.plist */; }; - 785778BB36B2F9B21FAE5E476E1B6E2E /* FSCalendarAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A9B88BD886F9C7651F805A3DBCACC97 /* FSCalendarAnimator.m */; }; - 788907A105CE1BC948CBF1DC3F0099CD /* MRProgressHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DF31DB524F144E46EA30058681A9BD3 /* MRProgressHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 78FBD2D1B972B768E83DA7377CA955E2 /* Formatters.swift in Sources */ = {isa = PBXBuildFile; fileRef = E862FCBC80BDF066FF76FF03CF39124E /* Formatters.swift */; }; - 7A779B7652F894A80FBCAF67E3E960FA /* FSCalendar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B482A8605F29D73503290B9E4AA4EB2 /* FSCalendar-dummy.m */; }; - 7A88BF95853A69E550E9F63A060BED12 /* DGElasticPullToRefreshConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB7AFABF698F4CD279547D38D300AE6E /* DGElasticPullToRefreshConstants.swift */; }; - 7B48852C4D848FA2DA416A98F6425869 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFAD3D6865CCE62AEAAC55474370C395 /* ServerTrustPolicy.swift */; }; - 7B5D7C23C9847DCBB53E1088298700D7 /* SwiftInAppPurchase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91D8ED75DBB75FFF5A2554BE7A6B5FAE /* SwiftInAppPurchase.swift */; }; - 7BA049A8A530320D26A5FED8582518B9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - 7BF65A51F3250D8151856AA7EA2D44BA /* ProductRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 401E757E105FA6900E55FD5306AA9BB1 /* ProductRequestHandler.swift */; }; - 7C5E58BD5FB3BCDD5AD14F713E251CC8 /* INTULocationRequestDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B46F5758B7FFFECD9FDF111E82C65D84 /* INTULocationRequestDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7CFF3D11D2A80054659CB09F8D17A1A1 /* MRProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BB0113B0ACB514D4B71FA4E831AE43 /* MRProgress.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E1B58C9322E8E27C3376E330C124FC7 /* CALayer+FSExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 23463BA6B27E8D9CB734A84F68F678B9 /* CALayer+FSExtension.m */; }; - 7E20ADDFDF13E48484CEE7CF77123F5A /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAEB52F7F4B383C8C9502DF81A8B100A /* Accelerate.framework */; }; - 7EC9330EBDF327051B12E42AE8741B6E /* Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ACA4B77854E43D279CD57545ED64207 /* Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7EDBA77726C5EA875090AE0BFF3B6B41 /* NVActivityIndicatorView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EF5B0EADF433576B56E366D8A9988165 /* NVActivityIndicatorView-dummy.m */; }; - 7F3A0CA4D0F80DC61F79C17B9A13B09D /* FAKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 865ABBAEA184B126E10CEB031EDD3A03 /* FAKIcon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F4D112748EC34E41E3C773E84C2CF53 /* NVActivityIndicatorAnimationBallScaleMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6890441BBDE5909F0DA1EE0DC9744A4D /* NVActivityIndicatorAnimationBallScaleMultiple.swift */; }; - 7FADB403A7E3DF122A1F578277BF90A1 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92999EBA6A50997D0E3B0512FF70F9BA /* Utilities.swift */; }; - 7FE3ECFE7843570AAFAD9216E3546026 /* FSCalendarStickyHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C8D0A9C864A81B0108B45BBA2C7925C5 /* FSCalendarStickyHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 811BF3A1EDF9B595901E2FC404641EE7 /* MRProgress-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F38C1AA679DF04C7447321FF8B8A05 /* MRProgress-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81694B31763640FB3743C90CF3547673 /* MRStopableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C22F909FB0F3DD46C504563172D8789 /* MRStopableView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 832946EFD651EC8DD5310FAE546A6C47 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1504F4A49DFBE37627F7A0F13F6CF397 /* Extensions.swift */; }; - 83BC947C81CD6B24E1F1B4423A032DE5 /* MRNavigationBarProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 65E3C0FB9C1B9E53E853458A8AEAC330 /* MRNavigationBarProgressView.m */; }; - 84E3D8DE2C016D309B09DDB3593EC4A1 /* NVActivityIndicatorAnimationBallZigZag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BACC5238693EE10E41BDE9B4911F7ED /* NVActivityIndicatorAnimationBallZigZag.swift */; }; - 86BA959299BECF7B0314ECC08EC0614F /* OnboardingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 65A70CC4CB141D4EBFC59168958A4DE4 /* OnboardingViewController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 88850623C51D10BA9CCA83DD63DD37C0 /* SwiftDate-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 06FA87AAEDB4ADBC7A15BB295EF51C77 /* SwiftDate-dummy.m */; }; - 89CE4E0D4BEDD88C4B05A9D54526CE7E /* MRIconView.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A5D3D018E991DF04506D4F2E409148 /* MRIconView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A593E68797C15E2C6C1ED6DCFDC08BD /* octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB6447139423827E1B48125CF6EBC7D /* octicons.ttf */; }; - 8A609220390F13874F262B899AB318EF /* AKPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 576EA2DCE7FC1EBA169E434D12609F9A /* AKPickerView.swift */; }; - 8B2F84E37AD49AFA858923FC733FAAFA /* Formatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B920998E9D716910A06199E29C3B4CA9 /* Formatter.swift */; }; - 8B3B1230521CD79417882869334A6F06 /* Themes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C374256C3EAA6BCADFE9E6D19EEE07CF /* Themes.swift */; }; - 8B7CA5A9DA7A3F51B617639E50EB7484 /* FAKIonIcons.m in Sources */ = {isa = PBXBuildFile; fileRef = 5463B664413144D2EDFF39DBDA74EC6D /* FAKIonIcons.m */; }; - 8C12554B835AD5AE59B3E1F69124913E /* FAKFoundationIcons.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C65E5B0860811BF9D473D2B7234CAA5 /* FAKFoundationIcons.m */; }; - 8CF5ACA6C355B72E2CE843393A3E2C7C /* INTURequestIDGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = C20F20A58AC3A3CED2F92FA6CF39A190 /* INTURequestIDGenerator.m */; }; - 8D93F27DE77DEE3CDF1306A5B38A037C /* FontAwesomeKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F1085B33477CC15BC9967D6C2CDF37B8 /* FontAwesomeKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8E55107B59A92876B44B690F74B121E7 /* Onboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F7FC6CC300F147F92904D63290983456 /* Onboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8EB11202167FCDDF1257AAAB1D1FB244 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7B1618BF0E8E0C81276629C5204C7DC /* Alamofire.swift */; }; - 9244D3E44E9722D18CF2CF2DFF270DBE /* DateInRegion.swift in Sources */ = {isa = PBXBuildFile; fileRef = E45B3E088B8A31948DD3C3DC5F4BB790 /* DateInRegion.swift */; }; - 936D62983D016EF1A5FC1238D601A64B /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754EB805F4315EE916807F50F2AC5149 /* Tweak.swift */; }; - 93DF260DE076854C529392B11CE22D84 /* SCLAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94AD267C710FED7857E31BB2BC3790E8 /* SCLAlertView.swift */; }; - 9469DF81ECB494E84675969B5E13374C /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C7F846C0FC81F64022FEB010412C3936 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 95167CA6D4FE6CFA3762703F17002FC6 /* UIImage+MRImageEffects.m in Sources */ = {isa = PBXBuildFile; fileRef = 253904F995DD8A5114B6B8B23F201805 /* UIImage+MRImageEffects.m */; }; - 9522DA78F08119D9EAFA3E30698BDE41 /* FSCalendarCell.h in Headers */ = {isa = PBXBuildFile; fileRef = C557B9522D977500DD2538C1D01D753E /* FSCalendarCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9712567144195F679ABA719D41E4B5D1 /* EFCircularSlider-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52D3344CACCB26F275FC333B0B4C93 /* EFCircularSlider-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9AEE8CB9A438667C3BF905C6206BC1EB /* INTULocationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DE096B1AEA88EF91CBE7BEFC53544CB /* INTULocationRequest.m */; }; - 9B365A3A01EF135485F43412F83C7C65 /* Chameleon_.m in Sources */ = {isa = PBXBuildFile; fileRef = 380689C7DFF7A8B197B0DC7C4235D60E /* Chameleon_.m */; }; - 9B3EEA3CFA303B0D28A8034C16BFDA15 /* UILabel+Chameleon.m in Sources */ = {isa = PBXBuildFile; fileRef = 692B79B37557FDC85C5B409036925AAE /* UILabel+Chameleon.m */; }; - 9CB8A816A7DA1AD905C0E945B029B205 /* Localize.swift in Sources */ = {isa = PBXBuildFile; fileRef = D32E384C30E1A582BB08F7CB2A2F41DF /* Localize.swift */; }; - 9D0EE7B15E6199DA4C50FB7D88991814 /* NVActivityIndicatorAnimationBallBeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32DF8CD4A79283476F954B3B7E36487 /* NVActivityIndicatorAnimationBallBeat.swift */; }; - 9D7629BB3CA79C720578479C9AE8D811 /* TweakPersistency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A7DFC38D1884A0DF0F693FC2F6959C4 /* TweakPersistency.swift */; }; - 9E691E14C1B77ED5D56D132384AE4E8D /* FAKZocial.h in Headers */ = {isa = PBXBuildFile; fileRef = BA57754C4386A5B8C83765CBE24DB8C5 /* FAKZocial.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E8AD46572FB3FDAF618A6C1356C1E7A /* Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6111DF2E5FF984E07C99C0DEC8CD1497 /* Additions.swift */; }; - 9EFD5A3145CC48882E4B6F6A71EE1505 /* NSDate+FSExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = C090C0E8E1C05EFB8A9BF4B2D5B7E33B /* NSDate+FSExtension.m */; }; - 9F2A95262B6FE514152CEF9834A5E23A /* UIColor+Tweaks.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF6F19CE0D9BC761DCED5EFD7038967B /* UIColor+Tweaks.swift */; }; - 9F878A0F038942BF1B2AEF9C3866C8A7 /* Clip.swift in Sources */ = {isa = PBXBuildFile; fileRef = A69A8A7AE4AF7A5B1007DA19CEFEEEA1 /* Clip.swift */; }; - A28930DA66986E8D161FF256CFA2E2E9 /* MRStopButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 05DA5127D70005DF4A1926D0ECA6C42B /* MRStopButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A2AC9FD0F42F638C48E72F88E8BC4C80 /* ChameleonShorthand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82887638727A876D13CC7A099D199D60 /* ChameleonShorthand.swift */; }; - A3A24F2FE9B94B152877A4A4B048D6CD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - A3C8626AC35DC46D1291E4B38362F4FB /* MRActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A479638F18BC4159CD4A162894127C4 /* MRActivityIndicatorView.m */; }; - A46A3EAB602FB4840C5AB8493F86AE4F /* UIButton+Chameleon.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4248941F6AC5DA4F76E04CEDD23E60 /* UIButton+Chameleon.m */; }; - A4DCEF92F739D25D84C99E4A5FC95288 /* CALayer+ShadowTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16CFEEA46E9DB7A13A733AB5F8DF8B31 /* CALayer+ShadowTweakTemplate.swift */; }; - A6E2DF853665F4EC399BA881C3309C2F /* Precision.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A5E520707745E67BB7C2E8C9CB683E /* Precision.swift */; }; - A710FE984AD94FC5D56628BDC1DECEEE /* ShadowTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C94102413A8DC5A3E0C2AA2CDB1E75E /* ShadowTweakTemplate.swift */; }; - A8F50206CD66357B3514F8F057DE87B4 /* FAKMaterialIcons.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EDF3C4C5B01BF1A4204E0FCA8CC9D55 /* FAKMaterialIcons.m */; }; - A93B6A2AF2DBFD2AB32170E213BE0FEA /* Localize-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A32488174BA7657D1A1B6594AA1926F /* Localize-Swift-dummy.m */; }; - A9E85FF731AB7C5FBA248E0482C0571A /* NSLocale+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2A0E3EB72D2E622AE03568C5BCD3F6 /* NSLocale+SwiftDate.swift */; }; - AA314156AC500125F4078EE968DB14C6 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9DA28EC1AA04CB7380412B46AD2FFC8 /* Result.swift */; }; - AA4C2F68882DBBC02C6EF24AF45D2350 /* NVActivityIndicatorAnimationBallTrianglePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87EF30893B2C5830F8D91CC6097A5C93 /* NVActivityIndicatorAnimationBallTrianglePath.swift */; }; - ACF7C3C74DE8C78434656A73C2CE8CCA /* INTULocationManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 20FFC9B0591D66FBA439062F9DEACE33 /* INTULocationManager-dummy.m */; }; - ADF19C953CE2A7D0B72EC93A81FCCC26 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EC6FC930F54A7941EE9F398953A22CB7 /* Alamofire-dummy.m */; }; - AE208B115D3EC98547A417F875912B5E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E591C42CC4E4658C8954976C3DB5CE1 /* QuartzCore.framework */; }; - AE4CF87C02C042DF13ED5B21C4FDC1E0 /* Stream.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED2BB71913B580FA0DDB21429A64DEB /* Stream.swift */; }; - AE689678FC0C8BA7398F9D8874735970 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 164B0C51C22E65985D17281C16A13D15 /* CoreGraphics.framework */; }; - AEA72DCE63F6B01478EF51120E64A734 /* FAKMaterialIcons.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EE592F7637C053AFF7DC90997291B0 /* FAKMaterialIcons.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AEC65AA7DED93A21068C32F0BABCD88C /* FAKOcticons.m in Sources */ = {isa = PBXBuildFile; fileRef = A15BB207EBA58F3F5DEA357B503E27C3 /* FAKOcticons.m */; }; - AF3632DCF38D8A9FFE5DC667982E9460 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - AF9FDFE994A206795619E469B68C614E /* UIViewController+Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = F0E6CF08BA91D826830F089409668DE6 /* UIViewController+Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B032C65734E9DC58CD77E0D19CE4D133 /* UIImage+SwiftTweaks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53B3249BDE829A94F4286AAA0152420 /* UIImage+SwiftTweaks.swift */; }; - B08294E2247DE35943C7180A647EE72D /* NSString+FSExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E7C6A5429108261D8B83820BD32F246 /* NSString+FSExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B1CFEE9FF3EB53A1C0009F6EFD1A9043 /* FAKFontAwesome.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D44E5A2B1ED2B0337E9A4AD9067EEC /* FAKFontAwesome.m */; }; - B2F9711D635766F4754D415B41FFC818 /* DGElasticPullToRefreshLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75DD798E7D3D42C66695A6AF5CAAA19 /* DGElasticPullToRefreshLoadingView.swift */; }; - B3E855DC27E787D79472053C4DBA94B6 /* EFCircularSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 8813445013B43D7240ADDB91C29F0C8F /* EFCircularSlider.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B4C2D38D9DCCDD65CC30966C0A6186C2 /* SCLExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BD5CB26790BFDA44BA441707F8958D1 /* SCLExtensions.swift */; }; - B71968ADC80D9CA74C57959B609E46F6 /* UIAppearance+Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DAD7C30FD4D6DC7F5269E0A612B6A36 /* UIAppearance+Swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B75369FF87B3F9D706695005D71600C2 /* NVActivityIndicatorAnimationLineScale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4578FB1A019DD82FD8FD4CA2C3A37F60 /* NVActivityIndicatorAnimationLineScale.swift */; }; - B75B9D17D39561D7A2F3E67C79FA9F27 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C909FCCADC0AEDCF8376875F60FA2B6 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */; }; - B947C4D115342A33C6604EF0D7848766 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - BBCA1EEBD4D5812E7A6A79E93A1AAD92 /* NVActivityIndicatorAnimationBallClipRotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26D2207734A971357125F6D6E729B193 /* NVActivityIndicatorAnimationBallClipRotate.swift */; }; - BBD629D333A966C9DAEC646285909AC7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - BC25E5B3E461B68EA802BD657A72701A /* NVActivityIndicatorAnimationBallPulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA651F2A90E354D34F45409F0FFD358A /* NVActivityIndicatorAnimationBallPulse.swift */; }; - BD4BBFEFCA87BEF75752066B57CD39E8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - BD9F0543F7B4F444CA4A0948C0F03070 /* MRProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = 38A20C65B2DDE5ADA6C18A8560CA073D /* MRProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BDC0281540324E5A27D70A10BD529254 /* UIImage+MRImageEffects.h in Headers */ = {isa = PBXBuildFile; fileRef = EF16672313C1C6DF29D804092742EA43 /* UIImage+MRImageEffects.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BE325A5869FCE249947C11DED959C6A0 /* AKPickerView-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E9B48114062883632E4C68D9FB335E8 /* AKPickerView-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BE41196F6A3903E59C3306FE3F8B43FE /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8BE62B0DB38BE26830BA0802BE4087F /* Notifications.swift */; }; - BE6DEECD31FE32EF1E994DFAAD9F503A /* TweakTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 778FAA1882C875729C4E405795B361E6 /* TweakTableCell.swift */; }; - BEE56A40F61CD4315BEF518972E7E3AE /* Pods-tpg offline-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FBBFDF212822057BD5E4A7A48B921D2A /* Pods-tpg offline-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFA6BEC20D219FAF8C6924A8FC384CBF /* DateInRegion+Equations.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3220264804ECF24D8567464665E7A9 /* DateInRegion+Equations.swift */; }; - C08DCA5180F1A15542694844C66B0EFB /* UIView+ChameleonPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = BD668705D280F596E1207992E834E7E8 /* UIView+ChameleonPrivate.m */; }; - C0DB70AB368765DC64BFB5FEA75E0696 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = E82CAD7D235046418F082D5B0A8D1D1D /* ParameterEncoding.swift */; }; - C17B63D63425ED26125A32CC2E15B2A6 /* UIView+FSExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B72324C3C9166605A2805A2A5E7646A9 /* UIView+FSExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C5DC5509FE360B0C018179AEAB679380 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - C60C0BAB1840ED78E320BF832EB7D90F /* CALayer+FSExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = EF812FB579F24D01A081FBE04EFB98ED /* CALayer+FSExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6E011EAC995523734C90C4B3362D037 /* OnboardingContentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 077F96B6080AFA56C57756CC1B6BFED2 /* OnboardingContentViewController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C7B6DD7C0456C50289A2C381DFE9FA3F /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0240A81A134DD1E2D3C463B8013AF0D2 /* MultipartFormData.swift */; }; - C8A2FAD60F45E95A498EF0FD614844BF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - C8F191C4FA3530AAEBAD2DDE2604DCF2 /* UIButton+Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = AFF042E3819A5722A4E18DEE744CFA04 /* UIButton+Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CC4F3479033014A3EFFF0C4712CFB523 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F5A2E6587190800C702F2B44E52267 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */; }; - CC6706A5C5AC9744A850FC11730CA53E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - CC78BD4F08AE3B0638B853554389D7CA /* NVActivityIndicatorAnimationLineScaleParty.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5B76A6EC7318EA20649D1FD6905C38F /* NVActivityIndicatorAnimationLineScaleParty.swift */; }; - CCA8087439D9E8C2EAD3A4C533E7EFB1 /* Benchmarker.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB960B7A10FA8958C385E4D9EF969E3 /* Benchmarker.swift */; }; - CD3C1E8D1BAFF179B13FDDDD6118D146 /* MRBlurView.m in Sources */ = {isa = PBXBuildFile; fileRef = E1ADC7D00128B9A718A72BD4BA56F652 /* MRBlurView.m */; }; - CEBADA794147C66483B0C205EDED2F4B /* FSCalendarDynamicHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AC606C96D46045AC70EC388375A7BD5 /* FSCalendarDynamicHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CEDB724342476CBE063FFB437D7EE973 /* DGRunkeeperSwitch-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 454DA591C828EE125C4CD4E6829B9ED5 /* DGRunkeeperSwitch-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFB8C96C7D3F7331E409D296466B923A /* UIColor+Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = 10D6C959ADAB08F6EB230BC43BFC2FD6 /* UIColor+Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0A45C8A6CA3AF10051732462D30FEC0 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DF2FE20405EFBFF97566DBF9718C86 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */; }; - D0FDBDE18D6FAABAEABA137E6A6B2B9A /* Material-Design-Iconic-Font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C810E8892D2F625782B3A449D93647FD /* Material-Design-Iconic-Font.ttf */; }; - D2B61A78124FCB785E11A98BDD0471BC /* UIAppearance+Swift.m in Sources */ = {isa = PBXBuildFile; fileRef = 758162B8C0C5CAB0B598A3588DD4706F /* UIAppearance+Swift.m */; }; - D36BC9B0C925A5244E16EE70E4809EE6 /* UIView+ChameleonPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9944D6F8523318B37645CC37A0E06966 /* UIView+ChameleonPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D4B2E79A7850584715A743A46D4EFA14 /* FSCalendarConstance.m in Sources */ = {isa = PBXBuildFile; fileRef = BF2CFCDC407A045CB56009AD862C15E3 /* FSCalendarConstance.m */; }; - D4C09BD820399466CF0F48D5715A87C3 /* AnyTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FE8CFE54F5FD038412BD75F9D2890D2 /* AnyTweak.swift */; }; - D551E691006DBF532FE809BA00CE9870 /* TweakCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 100B619BBAE3DE405CC6DF902857E43C /* TweakCollectionViewController.swift */; }; - D603EE78D5DBF389EC429A33757BFF5C /* FSCalendarAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = 096E3E2ECB4B674FD113D8026B00053A /* FSCalendarAppearance.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D625A38F982BA2BB58D9FF6E58614806 /* Localize_Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A32003675B3ABBF1314CF933AB87375 /* Localize_Swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D63F7FC5B62A6D19BA38171777327391 /* TweakViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2192196CA44729C9D1505D22AADDCB7 /* TweakViewData.swift */; }; - D9AFEB183A6CB4D9B68B6F907D09F993 /* FontAwesomeKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 40CA6433785FC9F38E0E0F3BF97F4F95 /* FontAwesomeKit-dummy.m */; }; - DA711B72294670E9CDAF019922103A11 /* AppTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D4DA5B5F177A7FA50DE4292B29B6CC1 /* AppTheme.swift */; }; - DACEC73F51892F550928C78B65B4651A /* FAKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A5579509F95593DAED8FB04906B5FB9 /* FAKIcon.m */; }; - DB0D7D2A2EDB8D6D5C18B850CB779F7B /* FSCalendarCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8205CA4F95C78A184EBC77D2E0B2ED1B /* FSCalendarCollectionView.m */; }; - DD2FA3B21ECD486EA416583741BB1631 /* NVActivityIndicatorAnimationSquareSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DE1D25DC54E44FCD2AE272DC052C2A9 /* NVActivityIndicatorAnimationSquareSpin.swift */; }; - DE0A4E10ED1E104BF1DEF81453A6EBC8 /* FSCalendar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E06F971EA05F91B4956215AA8D2C6E /* FSCalendar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DEF6A4568B82118FAE7955FDD99F6E8C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - DFB3F12058051C96E88682F4CA437C55 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - E01442ABCD312C1599319B377D5613A9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 164B0C51C22E65985D17281C16A13D15 /* CoreGraphics.framework */; }; - E016B37F0BA5A823E7FCC5877A97B129 /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32613149A7AF175826CE1CFCF651CFBE /* Theme.swift */; }; - E0AFA39DA4A01D8A8FE3D4EC76250F46 /* UIColor+ChameleonPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D16A93616A9A640FF798E7840712607 /* UIColor+ChameleonPrivate.m */; }; - E0C720836FBA4E75E3E57069219B7107 /* ChameleonFramework-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DD07F5DB3DFC380B9784E9D99B4C5731 /* ChameleonFramework-dummy.m */; }; - E1A910F5234561A4C2EB1125836E91C2 /* INTULocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 21121123C5B33FF775BAA3D06D968739 /* INTULocationManager.m */; }; - E2B51184ECD219B7CB07CD73E1DC4224 /* UIView+BasicAnimationTweakTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237C787FECBD1138A66985CAC077E53E /* UIView+BasicAnimationTweakTemplate.swift */; }; - E6ABAD1063A8CB12D73A2783D0DB7216 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - E773A27D47BC2080FB249FBD4513AB1C /* FSCalendarAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9723CB2FC157980453D10224CEE0430E /* FSCalendarAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E790AFAB2583C46159772F294A0ADFFE /* ReceiptRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 536DBA6E97C669D79451FB7EC582F5D0 /* ReceiptRequestHandler.swift */; }; - E9868ED09710D93318015E60BA8486E9 /* Log-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D53E43A6E1A1D781835396A1F32DD588 /* Log-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EA0EC972B280E9EFDDE71403E549B8B0 /* NVActivityIndicatorAnimationBallScaleRipple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4065B136C6EFC843464BAF19A19F3F2E /* NVActivityIndicatorAnimationBallScaleRipple.swift */; }; - EB3E236040ACCF771CBCE9AD1789EF3D /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97F733E10E63932C16318469DF7C8D5C /* SwiftyJSON-dummy.m */; }; - ECDF2C04EED904A4AFC64DED8EA45544 /* DGElasticPullToRefreshLoadingViewCircle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 542CD4854F2F6D005416A4127DAC773A /* DGElasticPullToRefreshLoadingViewCircle.swift */; }; - ED6729BBCAA181743608834CFDA28B10 /* FAKZocial.m in Sources */ = {isa = PBXBuildFile; fileRef = CB235D3B34CCE108C64AACB06E7D031B /* FAKZocial.m */; }; - EE07C99FAD103050F7920FECE45C07D2 /* FAKFoundationIcons.h in Headers */ = {isa = PBXBuildFile; fileRef = AFFFE59B2788F7707E3E36955E993A6F /* FAKFoundationIcons.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE442E93E5BBC6AB805C3E1B2D3482CA /* MRActivityIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = BF6DD70BE4A19BCE9C1B986D54AC5C90 /* MRActivityIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE45E0FB3A26B7DFF80DDCF6C597970B /* PermissionScope-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F9F0CABD8AAE5E2035A6316FC2F9FA3 /* PermissionScope-dummy.m */; }; - EE5D6304D6519F6B8791C10525530DB8 /* NVActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B8DF4469A5D2B4DA2FF9BF71D53DC68 /* NVActivityIndicatorView.swift */; }; - EE691DA3C9B83F18E776E1437AC81D60 /* FontAwesome.otf in Resources */ = {isa = PBXBuildFile; fileRef = 611B8A00EE9A2180740BBBF5D94809B7 /* FontAwesome.otf */; }; - EF4066B0EEC6CF4D847A4C6810886BDA /* OnboardingContentViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 395FAC894A5ADF945D2B1653437240B7 /* OnboardingContentViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EFB1A09738CFD06D630DAE60519CA842 /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD209D5A87DE1524F3873D0C9A22F11F /* SwiftyJSON.swift */; }; - EFE92E8D3813DD26E78E93EEAF6D7E7E /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCE8A2553E5B9A016379202FDA207C7C /* Request.swift */; }; - F0062A0D1BD5D56ED254B194BB3B7EB4 /* MRProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E41F20516EA06D76ABB01C821CE0ADA /* MRProgressView.m */; }; - F06F0A5FD1403D3DD2A86D0D35E353A7 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0A3FDE44E8E4E33BE4E2821205460EF /* Logger.swift */; }; - F20261D324026E13795C3888A17CD315 /* NSTimeInterval+SwiftDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37516AE097D14D7139938C1A6A56E1D /* NSTimeInterval+SwiftDate.swift */; }; - F60E1974ADBE32987CC1F894A09C93CC /* foundation-icons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D9A2063443FE1336500CA6EE481925F /* foundation-icons.ttf */; }; - F7317B2BAF77EC9AF9422499C1D467AA /* FSCalendarEventIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = B7C966C5C4F0D4B0212EBAB97F455DDF /* FSCalendarEventIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F7944D091AD240B80D98066395A99B95 /* FSCalendar.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E36B1C494135FAF52B477E9E07EA99A /* FSCalendar.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA19565E2FF7CB15E8214ACA25479462 /* TweakColorEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEAED082D59B4CE39C8F6723C03E01CF /* TweakColorEditViewController.swift */; }; - FA63634FDB30074D8C573E62746B15F1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; - FAB7C37DE795BFC72E7BD013F4E23F70 /* TweakGroupTemplateType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74829C1847C33BE2BA16B72AAB4A4B94 /* TweakGroupTemplateType.swift */; }; - FB5734D36AF2C93820C669F247C63C36 /* FloatingTweakGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BB5DAE05A08902EF205597768C8D2 /* FloatingTweakGroupViewController.swift */; }; - FC513481E5E93CCD0D98FFE2339E5F3C /* NVActivityIndicatorAnimationLineScalePulseOut.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E0ADC0F48415673EFE2A2450859A825 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */; }; - FDEFC3630F3E6EF3D22FA7BE4B331689 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E591C42CC4E4658C8954976C3DB5CE1 /* QuartzCore.framework */; }; - FE21FC7BACB9BCD40402CF778F2A0C6E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */; }; - FF4A8EFE1154C1FFD58B48E978298871 /* NSArray+Chameleon.h in Headers */ = {isa = PBXBuildFile; fileRef = F3575C06FA5B2FEE49DE0106BD7F14A2 /* NSArray+Chameleon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FFBABEC849DD7ED1EEED415EDB35CCEB /* TweakColorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 651C38CADE593207E970A4FA4DF4FE65 /* TweakColorCell.swift */; }; - FFCD27FF219DEC63137D56C7AD5A048A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 032C469C00809BCA2844F06249CBEA05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = EF89A4DA92CC0D0F76CF983AB2A6F4F1; - remoteInfo = DGRunkeeperSwitch; - }; - 291946D90B5432246EA95B78E53576DC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = A59A93B402011A0E65D47D9CF441BB2B; - remoteInfo = SwiftDate; - }; - 2DDD9C17EEE66C0BBF883AEF77239EEC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5AF1C612F4CDA296FC4C82D9BD0BD25D; - remoteInfo = INTULocationManager; - }; - 3ABD836359387E4B93E15DDDCA4760B4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = D1DC35DB2C695031A72543555FB23729; - remoteInfo = AsyncSwift; - }; - 4054063BE0FF4557D9C02554D93EEE58 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = C55E46AC6A1E70A6AA25E306AE545375; - remoteInfo = PermissionScope; - }; - 4CD435AAF1DDF12580368D4D0EE9726B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = B2619B2813D910DBC9FE9714E0788D55; - remoteInfo = FSCalendar; - }; - 55CF4A04A38F093A1DDB1D38C304C53F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 99467F259B31FBA8DDB95086022B4977; - remoteInfo = FontAwesomeKit; - }; - 68BA1AAAE0B378C71D43AA97E1E82464 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 115824B7CB2E76E5ACB836A251E79404; - remoteInfo = DGElasticPullToRefresh; - }; - 770B642137C7C845FD19E0F8D49AD53C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 79C040AFDDCE1BCBF6D8B5EB0B85887F; - remoteInfo = Alamofire; - }; - 83CD15991BDDB1B489357CEECEC4C9CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = B8A49B21FD9EF99E936D68AE82846108; - remoteInfo = SCLAlertView; - }; - 88308D7E134981F1E3F98D70D35AAFD0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = B7C99010DEE22AAAB76BCF07F093651A; - remoteInfo = Log; - }; - A51B8E0F6AF84688C70971D422AED7B1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 32227DE82A25F38D0FB6FD6A6B51574B; - remoteInfo = SwiftTweaks; - }; - B7C26EEAE364AA545DE656A8F490939A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 626D49AD18621B0A3059EE726B27AE89; - remoteInfo = NVActivityIndicatorView; - }; - B8FB17933F3770833D99859B81D581E6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9CAAB2A1855182D992E2945796B03B4D; - remoteInfo = MRProgress; - }; - BDF7B9AE18DE37206659C7AF95B9DB24 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D48BE2E1C03FDDFE91191F0714E9095; - remoteInfo = SwiftyJSON; - }; - C2EBB6FA7C7FBF0B76E0CCA06BA2B080 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F17DD5BDDF65F3AB77F350BE14632BE; - remoteInfo = EFCircularSlider; - }; - C6BE78948DFC589E40ED1035746E5022 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4E3BBCA6078A6AAAD053C911572F0B0C; - remoteInfo = "Localize-Swift"; - }; - D6F68B7573AE43464C44B4C2EBB97952 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 05FE1F0D2B1FA1DC3263A13FCD68A0C1; - remoteInfo = SwiftInAppPurchase; - }; - E1CB140447FDC1130E04CA57E03CAC19 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5172ACAB7FEA22813859DC97CA0AA16F; - remoteInfo = ChameleonFramework; - }; - E8CA9C0ADAE37A93179C11D7C4397076 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = D7FF48F3092783E4E42B336F0DEF2D1A; - remoteInfo = Onboard; - }; - F094DD956FAA5F4696994A82D51AC840 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7EC1417298041145E9B1A4C7B395C179; - remoteInfo = "AKPickerView-Swift"; - }; - FD1D82C478088254698B77D05C5A37C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = AC21AA5E85F7C4BF354E6D4D7FC2D0DF; - remoteInfo = "SwiftInAppPurchase-SwiftInAppPurchase"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 00F7E960E08F42ACCC8917B304C13FEC /* FSCalendar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FSCalendar-prefix.pch"; sourceTree = ""; }; - 012189AF218224586E70149DAEF1EAF6 /* ColorRepresentation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ColorRepresentation.swift; path = SwiftTweaks/ColorRepresentation.swift; sourceTree = ""; }; - 021DC339F4390779FFA6D901574617AF /* DGElasticPullToRefresh.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DGElasticPullToRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0240A81A134DD1E2D3C463B8013AF0D2 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 0370319F2FA7B83D9BCA15C396CA0748 /* Pods-tpg offline.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-tpg offline.debug.xcconfig"; sourceTree = ""; }; - 0395352DDFC006935068F7248640B54F /* TweakBackup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakBackup.swift; path = SwiftTweaks/TweakBackup.swift; sourceTree = ""; }; - 05DA5127D70005DF4A1926D0ECA6C42B /* MRStopButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRStopButton.h; path = src/Components/MRStopButton.h; sourceTree = ""; }; - 06FA87AAEDB4ADBC7A15BB295EF51C77 /* SwiftDate-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftDate-dummy.m"; sourceTree = ""; }; - 07616EFF2950BF156B44B1883E4026C2 /* SwiftDate-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftDate-umbrella.h"; sourceTree = ""; }; - 07708D0251576271A17840367001B492 /* ChameleonFramework.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ChameleonFramework.xcconfig; sourceTree = ""; }; - 077F96B6080AFA56C57756CC1B6BFED2 /* OnboardingContentViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OnboardingContentViewController.m; path = Source/OnboardingContentViewController.m; sourceTree = ""; }; - 07D44E5A2B1ED2B0337E9A4AD9067EEC /* FAKFontAwesome.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKFontAwesome.m; path = FontAwesomeKit/FAKFontAwesome.m; sourceTree = ""; }; - 096E3E2ECB4B674FD113D8026B00053A /* FSCalendarAppearance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarAppearance.h; path = FSCalendar/FSCalendarAppearance.h; sourceTree = ""; }; - 09AD54C6E2914DE3B0E92BDD596F6AD8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 09E4A22324BF4C3DF06D0A9FA09A7FA5 /* DateInRegion+StartEnd.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+StartEnd.swift"; path = "Sources/SwiftDate/DateInRegion+StartEnd.swift"; sourceTree = ""; }; - 0A63A88E702614AA9B3512595A93EA20 /* Log.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Log.modulemap; sourceTree = ""; }; - 0A8F16B1600A0AB85750BF471BD387E4 /* MRProgress-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MRProgress-dummy.m"; sourceTree = ""; }; - 0B8DF4469A5D2B4DA2FF9BF71D53DC68 /* NVActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorView.swift; path = NVActivityIndicatorView/NVActivityIndicatorView.swift; sourceTree = ""; }; - 0C22F909FB0F3DD46C504563172D8789 /* MRStopableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRStopableView.h; path = src/Components/MRStopableView.h; sourceTree = ""; }; - 0C65E5B0860811BF9D473D2B7234CAA5 /* FAKFoundationIcons.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKFoundationIcons.m; path = FontAwesomeKit/FAKFoundationIcons.m; sourceTree = ""; }; - 0C83AD2BC1FBEB0750B19B093712D545 /* DateInRegion+Operations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+Operations.swift"; path = "Sources/SwiftDate/DateInRegion+Operations.swift"; sourceTree = ""; }; - 0DC29C54CADD9261CB2B0CACBD12A199 /* ChameleonFramework.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ChameleonFramework.modulemap; sourceTree = ""; }; - 0E72770DE0D17CFD80BE5FF3B7A57E83 /* FSCalendar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FSCalendar.modulemap; sourceTree = ""; }; - 0E7C6A5429108261D8B83820BD32F246 /* NSString+FSExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+FSExtension.h"; path = "FSCalendar/NSString+FSExtension.h"; sourceTree = ""; }; - 0EDF3C4C5B01BF1A4204E0FCA8CC9D55 /* FAKMaterialIcons.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKMaterialIcons.m; path = FontAwesomeKit/FAKMaterialIcons.m; sourceTree = ""; }; - 0FE626E37E62401F5B2AA468245A2B4A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1005CA704AA24D3EEBD7C2BFD47BA390 /* DGElasticPullToRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DGElasticPullToRefresh-prefix.pch"; sourceTree = ""; }; - 100B619BBAE3DE405CC6DF902857E43C /* TweakCollectionViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakCollectionViewController.swift; path = SwiftTweaks/TweakCollectionViewController.swift; sourceTree = ""; }; - 10D6C959ADAB08F6EB230BC43BFC2FD6 /* UIColor+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+Chameleon.h"; path = "Pod/Classes/Objective-C/UIColor+Chameleon.h"; sourceTree = ""; }; - 117385C631C97B0A140C7BAB9815BC8B /* SCLAlertView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SCLAlertView-umbrella.h"; sourceTree = ""; }; - 11CD7B4D6796DE722E7E6AE91271E532 /* NSDateFormatter+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSDateFormatter+SwiftDate.swift"; path = "Sources/SwiftDate/NSDateFormatter+SwiftDate.swift"; sourceTree = ""; }; - 1285CA76BFC0689BF0EFB5B31D3CDA77 /* MRBlurView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRBlurView.h; path = src/Blur/MRBlurView.h; sourceTree = ""; }; - 143249D2E9DB5B34C9E9D293FF3EE6EA /* NVActivityIndicatorAnimationPacman.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationPacman.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift; sourceTree = ""; }; - 1504F4A49DFBE37627F7A0F13F6CF397 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = PermissionScope/Extensions.swift; sourceTree = ""; }; - 1522ADB16DE3A06A2671763014ABD715 /* NVActivityIndicatorAnimationBallScale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScale.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift; sourceTree = ""; }; - 164B0C51C22E65985D17281C16A13D15 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 169BACA90582EBFD066DA19FDC8EB364 /* NVActivityIndicatorAnimationCubeTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationCubeTransition.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift; sourceTree = ""; }; - 16B9F126247EF67C8E784A58684997D4 /* SCLAlertView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SCLAlertView.modulemap; sourceTree = ""; }; - 16CFEEA46E9DB7A13A733AB5F8DF8B31 /* CALayer+ShadowTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CALayer+ShadowTweakTemplate.swift"; path = "SwiftTweaks/CALayer+ShadowTweakTemplate.swift"; sourceTree = ""; }; - 173F81A6134A7E817D9E2FDF0A396D0F /* SCLAlertView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SCLAlertView-prefix.pch"; sourceTree = ""; }; - 17AA292F3F46A8F70EB63C90D00A043D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1A924633224C2DB29B1DF6C655045F58 /* EdgeInsetsTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EdgeInsetsTweakTemplate.swift; path = SwiftTweaks/EdgeInsetsTweakTemplate.swift; sourceTree = ""; }; - 1A9B88BD886F9C7651F805A3DBCACC97 /* FSCalendarAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarAnimator.m; path = FSCalendar/FSCalendarAnimator.m; sourceTree = ""; }; - 1B08A1B36F0A6E4CD519408A67150374 /* MRNavigationBarProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRNavigationBarProgressView.h; path = src/Components/MRNavigationBarProgressView.h; sourceTree = ""; }; - 1B466E914C58E53362C6F1A7983FC2AC /* DateInRegion+Comparisons.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+Comparisons.swift"; path = "Sources/SwiftDate/DateInRegion+Comparisons.swift"; sourceTree = ""; }; - 1B5895B5346264B522236A218B24E021 /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarFlowLayout.m; path = FSCalendar/FSCalendarFlowLayout.m; sourceTree = ""; }; - 1CE28601D5261E856C0D00DDAF43B5D0 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - 1D16A93616A9A640FF798E7840712607 /* UIColor+ChameleonPrivate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+ChameleonPrivate.m"; path = "Pod/Classes/Objective-C/UIColor+ChameleonPrivate.m"; sourceTree = ""; }; - 1DE096B1AEA88EF91CBE7BEFC53544CB /* INTULocationRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = INTULocationRequest.m; path = LocationManager/INTULocationManager/INTULocationRequest.m; sourceTree = ""; }; - 1E12931828371D1F461C1EFA4DF0E6A1 /* TweakGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakGroup.swift; path = SwiftTweaks/TweakGroup.swift; sourceTree = ""; }; - 1E6194A20C15CB11C0ECDE11F0934EAD /* SwiftTweaks-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftTweaks-prefix.pch"; sourceTree = ""; }; - 1E9B48114062883632E4C68D9FB335E8 /* AKPickerView-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AKPickerView-Swift-umbrella.h"; sourceTree = ""; }; - 1F1C7B10C405C285F7BDF56720444EF7 /* FSCalendar.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FSCalendar.xcconfig; sourceTree = ""; }; - 1F36DA1EE58BB1A91340DB0685A26671 /* INTULocationManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = INTULocationManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1F7502E73C5C7AFF2D7C193B3CC17635 /* Dictionary+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Dictionary+SwiftDate.swift"; path = "Sources/SwiftDate/Dictionary+SwiftDate.swift"; sourceTree = ""; }; - 20D109B02F78A11AD7B77031C3804269 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; - 20E6C13EB21880BDBB2FFC26B4497DD9 /* UIEdgeInsets+EdgeInsetsTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIEdgeInsets+EdgeInsetsTweakTemplate.swift"; path = "SwiftTweaks/UIEdgeInsets+EdgeInsetsTweakTemplate.swift"; sourceTree = ""; }; - 20EA86D5BABC04E604138A9939838E79 /* UIImage+ChameleonPrivate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ChameleonPrivate.m"; path = "Pod/Classes/Objective-C/UIImage+ChameleonPrivate.m"; sourceTree = ""; }; - 20FFC9B0591D66FBA439062F9DEACE33 /* INTULocationManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "INTULocationManager-dummy.m"; sourceTree = ""; }; - 21121123C5B33FF775BAA3D06D968739 /* INTULocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = INTULocationManager.m; path = LocationManager/INTULocationManager/INTULocationManager.m; sourceTree = ""; }; - 21D6DBB62DF8E7BD317235591F214E73 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; - 2211FDEBCC6FEAC482F69A4DA39D7366 /* MRCircularProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRCircularProgressView.m; path = src/Components/MRCircularProgressView.m; sourceTree = ""; }; - 22340697ED9176CA38E1B91FAC17833A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 23463BA6B27E8D9CB734A84F68F678B9 /* CALayer+FSExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+FSExtension.m"; path = "FSCalendar/CALayer+FSExtension.m"; sourceTree = ""; }; - 2351275ADA76388D170C0A5C13AD8E98 /* Localize-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Localize-Swift.modulemap"; sourceTree = ""; }; - 237C787FECBD1138A66985CAC077E53E /* UIView+BasicAnimationTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+BasicAnimationTweakTemplate.swift"; path = "SwiftTweaks/UIView+BasicAnimationTweakTemplate.swift"; sourceTree = ""; }; - 23A34AA5CD92A090D44B23774301EF02 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 23ED5B56EAD6A1100447D1DB06EC925A /* AKPickerView-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AKPickerView-Swift-dummy.m"; sourceTree = ""; }; - 2444A70958E420012AB33C638444FDE8 /* PaymentRequestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PaymentRequestHandler.swift; path = Pod/Classes/PaymentRequestHandler.swift; sourceTree = ""; }; - 24C4760F5DD4CB467A7112281E967C04 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - 253904F995DD8A5114B6B8B23F201805 /* UIImage+MRImageEffects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MRImageEffects.m"; path = "src/Blur/UIImage+MRImageEffects.m"; sourceTree = ""; }; - 26D2207734A971357125F6D6E729B193 /* NVActivityIndicatorAnimationBallClipRotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotate.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift; sourceTree = ""; }; - 28D73AB258480A097A803D4F208B3542 /* Log-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Log-prefix.pch"; sourceTree = ""; }; - 294819245101964815C51BF087071704 /* Async.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Async.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 29574C1F2CC308A7ABD9E7FD370021D8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 29A163B5F0893795F7872B422D5A89A4 /* SwiftTweaks-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftTweaks-umbrella.h"; sourceTree = ""; }; - 2A54265BF06C63ACCBD029400FBB8882 /* AsyncSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = AsyncSwift.modulemap; sourceTree = ""; }; - 2AE3F8157087AA2025B0191725E87696 /* MRProgressOverlayView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRProgressOverlayView.m; path = src/Components/MRProgressOverlayView.m; sourceTree = ""; }; - 2D322867D872F05065D7739085407378 /* TweaksBackupsListViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweaksBackupsListViewController.swift; path = SwiftTweaks/TweaksBackupsListViewController.swift; sourceTree = ""; }; - 2E0ADC0F48415673EFE2A2450859A825 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScalePulseOut.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift; sourceTree = ""; }; - 30BBB37269D011A14B4F6205299257E7 /* MRProgressOverlayView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRProgressOverlayView.h; path = src/Components/MRProgressOverlayView.h; sourceTree = ""; }; - 30D41B656C99462D9F4D00E14498D6B3 /* MRProgress.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = MRProgress.modulemap; sourceTree = ""; }; - 30E6AE2E1BD4C674401E6B317147249B /* SwiftTweaks.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftTweaks.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 31160AB1A3FE7012378FCDEAE1BA7A6C /* Onboard.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Onboard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 32613149A7AF175826CE1CFCF651CFBE /* Theme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Theme.swift; path = Source/Theme.swift; sourceTree = ""; }; - 32872696A15B7ED2D762F49591E1D0A5 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Source/Error.swift; sourceTree = ""; }; - 32CA1C89376BDA8A4BA761521A0973B4 /* FSCalendarStickyHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarStickyHeader.m; path = FSCalendar/FSCalendarStickyHeader.m; sourceTree = ""; }; - 33295618FF88A0FAD24334AAA865C0A0 /* AsyncSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AsyncSwift-prefix.pch"; sourceTree = ""; }; - 33EB840B783AB3267C8C681297A1DC95 /* Pods-tpg offline-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-tpg offline-acknowledgements.plist"; sourceTree = ""; }; - 3402FC82014D3F9A274CC1D9750A4A05 /* UIImage+ChameleonPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ChameleonPrivate.h"; path = "Pod/Classes/Objective-C/UIImage+ChameleonPrivate.h"; sourceTree = ""; }; - 344D585A05C9D3B4BB8D386FF73777AC /* INTULocationManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = INTULocationManager.xcconfig; sourceTree = ""; }; - 353C100864557E00F0CB9AE5E823B140 /* Chameleon_.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chameleon_.h; path = "Pod/Classes/Objective-C/Chameleon_.h"; sourceTree = ""; }; - 3706DEF5E05D37992415349C6E630839 /* DGElasticPullToRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DGElasticPullToRefresh-dummy.m"; sourceTree = ""; }; - 380689C7DFF7A8B197B0DC7C4235D60E /* Chameleon_.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Chameleon_.m; path = "Pod/Classes/Objective-C/Chameleon_.m"; sourceTree = ""; }; - 38A20C65B2DDE5ADA6C18A8560CA073D /* MRProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRProgressView.h; path = src/Components/MRProgressView.h; sourceTree = ""; }; - 395FAC894A5ADF945D2B1653437240B7 /* OnboardingContentViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OnboardingContentViewController.h; path = Source/OnboardingContentViewController.h; sourceTree = ""; }; - 39680D13CAA4BAEA00B63EE9BDDFA403 /* NVActivityIndicatorView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NVActivityIndicatorView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3A1DBD7224FF5E1783B1C86C2AB99816 /* SwiftTweaks-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftTweaks-dummy.m"; sourceTree = ""; }; - 3A5579509F95593DAED8FB04906B5FB9 /* FAKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKIcon.m; path = FontAwesomeKit/FAKIcon.m; sourceTree = ""; }; - 3A5DF86838CC87F5636E6003B7B2A6FD /* AsyncSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AsyncSwift-umbrella.h"; sourceTree = ""; }; - 3ACA4B77854E43D279CD57545ED64207 /* Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chameleon.h; path = "Pod/Classes/Objective-C/Chameleon.h"; sourceTree = ""; }; - 3B3520258A6D98CCE6EBB297C6877589 /* Upload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Upload.swift; path = Source/Upload.swift; sourceTree = ""; }; - 3B80CAA48BD48E55BDE62C7CCFA8DA6D /* PermissionScope.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PermissionScope.swift; path = PermissionScope/PermissionScope.swift; sourceTree = ""; }; - 3BA74DB244E08F0B20B447A60A292B28 /* DGElasticPullToRefreshView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DGElasticPullToRefreshView.swift; path = DGElasticPullToRefresh/DGElasticPullToRefreshView.swift; sourceTree = ""; }; - 3BC40F4D6EFA3E6DDA821A2CA0580C83 /* TweakWindow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakWindow.swift; path = SwiftTweaks/TweakWindow.swift; sourceTree = ""; }; - 3D34BB12EA18038B02F24F7282FE226E /* AKPickerView-Swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "AKPickerView-Swift.xcconfig"; sourceTree = ""; }; - 3D9A2063443FE1336500CA6EE481925F /* foundation-icons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file; name = "foundation-icons.ttf"; path = "FontAwesomeKit/foundation-icons.ttf"; sourceTree = ""; }; - 3DF31DB524F144E46EA30058681A9BD3 /* MRProgressHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRProgressHelper.h; path = src/Utils/MRProgressHelper.h; sourceTree = ""; }; - 3EFDC87411DBA840DCC781C41CAAA87C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3F389FD129777AC1F01283A61ABEF404 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 401E757E105FA6900E55FD5306AA9BB1 /* ProductRequestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProductRequestHandler.swift; path = Pod/Classes/ProductRequestHandler.swift; sourceTree = ""; }; - 4065B136C6EFC843464BAF19A19F3F2E /* NVActivityIndicatorAnimationBallScaleRipple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleRipple.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift; sourceTree = ""; }; - 40CA6433785FC9F38E0E0F3BF97F4F95 /* FontAwesomeKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FontAwesomeKit-dummy.m"; sourceTree = ""; }; - 4151BD174057BBEF8FDBFFB30DD54C24 /* SCLAlertView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SCLAlertView-dummy.m"; sourceTree = ""; }; - 41F38C1AA679DF04C7447321FF8B8A05 /* MRProgress-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MRProgress-umbrella.h"; sourceTree = ""; }; - 4415036062D30932A796432DA868BF74 /* Onboard.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Onboard.xcconfig; sourceTree = ""; }; - 447B9A6A811DB3F64D3D83940CE3366D /* INTULocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = INTULocationManager.h; path = LocationManager/INTULocationManager/INTULocationManager.h; sourceTree = ""; }; - 44989BC3C89A3F02752B8168BCD91229 /* DGRunkeeperSwitch-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DGRunkeeperSwitch-dummy.m"; sourceTree = ""; }; - 454DA591C828EE125C4CD4E6829B9ED5 /* DGRunkeeperSwitch-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DGRunkeeperSwitch-umbrella.h"; sourceTree = ""; }; - 4578FB1A019DD82FD8FD4CA2C3A37F60 /* NVActivityIndicatorAnimationLineScale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScale.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift; sourceTree = ""; }; - 46597FA5EAF275C090D9B4273EEE0D53 /* MRProgress-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MRProgress-prefix.pch"; sourceTree = ""; }; - 475FF44C03EF51904E86BA0A0C5CDD89 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; - 47AD9FEEB5021C7822A96B70D1B28079 /* DGRunkeeperSwitch.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = DGRunkeeperSwitch.modulemap; sourceTree = ""; }; - 482709D9A1EDC65C7090BE3F2A6BE946 /* FAKOcticons.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKOcticons.h; path = FontAwesomeKit/FAKOcticons.h; sourceTree = ""; }; - 48410F3E0FB6DFDC49AFCC8A7F2F1200 /* FontAwesomeKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FontAwesomeKit-prefix.pch"; sourceTree = ""; }; - 492BC27888460D7791C0AEF0F65916BF /* FontAwesomeKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FontAwesomeKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4A32488174BA7657D1A1B6594AA1926F /* Localize-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Localize-Swift-dummy.m"; sourceTree = ""; }; - 4A68B533C75C155FA0480BE3E8007693 /* SwiftInAppPurchase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftInAppPurchase.xcconfig; sourceTree = ""; }; - 4C83D7B5517F1A42EBAFFD190376EACF /* TweakableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakableType.swift; path = SwiftTweaks/TweakableType.swift; sourceTree = ""; }; - 4D03FAC5FFD7706B2A1D655B63CD25FA /* Localize-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Localize-Swift-prefix.pch"; sourceTree = ""; }; - 4D2F5D5E3664356890D3BACD6C700289 /* TweakStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakStore.swift; path = SwiftTweaks/TweakStore.swift; sourceTree = ""; }; - 4D8AE4384AD61D05325B3A45E6D16C5E /* FontAwesomeKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FontAwesomeKit.modulemap; sourceTree = ""; }; - 4DAD7C30FD4D6DC7F5269E0A612B6A36 /* UIAppearance+Swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAppearance+Swift.h"; path = "Pod/Classes/Objective-C/UIAppearance+Swift.h"; sourceTree = ""; }; - 4DE2F7540F07676FE654870A2BA39E30 /* AsyncSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AsyncSwift.xcconfig; sourceTree = ""; }; - 4E32D81915143777356AD901BFF95ED6 /* NSDateInterval.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSDateInterval.swift; path = Sources/SwiftDate/NSDateInterval.swift; sourceTree = ""; }; - 4E36B1C494135FAF52B477E9E07EA99A /* FSCalendar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendar.h; path = FSCalendar/FSCalendar.h; sourceTree = ""; }; - 4F902121FD352F721FB38767860C7EDD /* NVActivityIndicatorAnimationBallPulseSync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulseSync.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift; sourceTree = ""; }; - 5060A44DA2E95A11C353E3822955BA8B /* FontAwesomeKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FontAwesomeKit.xcconfig; sourceTree = ""; }; - 51797706944D4A52049858F0D5F68FA2 /* NVActivityIndicatorAnimationBallRotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallRotate.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift; sourceTree = ""; }; - 536DBA6E97C669D79451FB7EC582F5D0 /* ReceiptRequestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReceiptRequestHandler.swift; path = Pod/Classes/ReceiptRequestHandler.swift; sourceTree = ""; }; - 53A733F5026792B56429C77348A720B9 /* Pods-tpg offline.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-tpg offline.release.xcconfig"; sourceTree = ""; }; - 53F8617638F2D9D06E35B6F8FB835920 /* NVActivityIndicatorAnimationBallPulseRise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulseRise.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift; sourceTree = ""; }; - 542CD4854F2F6D005416A4127DAC773A /* DGElasticPullToRefreshLoadingViewCircle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DGElasticPullToRefreshLoadingViewCircle.swift; path = DGElasticPullToRefresh/DGElasticPullToRefreshLoadingViewCircle.swift; sourceTree = ""; }; - 5463B664413144D2EDFF39DBDA74EC6D /* FAKIonIcons.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKIonIcons.m; path = FontAwesomeKit/FAKIonIcons.m; sourceTree = ""; }; - 548A620D1A26A399B464DDF4F7A1958C /* OnboardingViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OnboardingViewController.h; path = Source/OnboardingViewController.h; sourceTree = ""; }; - 54A8A52B91480CCB30E99C484E02BEAA /* SignedNumberTweakDefaultParameters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignedNumberTweakDefaultParameters.swift; path = SwiftTweaks/SignedNumberTweakDefaultParameters.swift; sourceTree = ""; }; - 54FBED247FC03E61556D0E18EDE19BAA /* MRCircularProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRCircularProgressView.h; path = src/Components/MRCircularProgressView.h; sourceTree = ""; }; - 560A61239DF4D9DDEA62AD4E59AC43EF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 569706BE3B48E5ADE03CE8CC5AE907D2 /* FSCalendarCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarCell.m; path = FSCalendar/FSCalendarCell.m; sourceTree = ""; }; - 569830AE11E3A35BD852B8ED6F3D5EF3 /* TweaksViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweaksViewController.swift; path = SwiftTweaks/TweaksViewController.swift; sourceTree = ""; }; - 576EA2DCE7FC1EBA169E434D12609F9A /* AKPickerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AKPickerView.swift; path = AKPickerView/AKPickerView.swift; sourceTree = ""; }; - 57E26CB58B93C4F17A71252E0318205B /* Pods-tpg offline-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-tpg offline-dummy.m"; sourceTree = ""; }; - 57F146A001151D3104E6D36C4C128249 /* ChameleonConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonConstants.h; path = "Pod/Classes/Objective-C/ChameleonConstants.h"; sourceTree = ""; }; - 5A32003675B3ABBF1314CF933AB87375 /* Localize_Swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Localize_Swift.h; path = Sources/Localize_Swift.h; sourceTree = ""; }; - 5AC606C96D46045AC70EC388375A7BD5 /* FSCalendarDynamicHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarDynamicHeader.h; path = FSCalendar/FSCalendarDynamicHeader.h; sourceTree = ""; }; - 5B65CD432E7FA5EAF2588655EFDE7F51 /* DGElasticPullToRefresh.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DGElasticPullToRefresh.xcconfig; sourceTree = ""; }; - 5BACC5238693EE10E41BDE9B4911F7ED /* NVActivityIndicatorAnimationBallZigZag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallZigZag.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift; sourceTree = ""; }; - 5C7186E0433615B16D699B21AAC3BA1D /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; - 5D2A0207C1930855687C529BC2244128 /* MRProgress.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MRProgress.xcconfig; sourceTree = ""; }; - 5D4DA5B5F177A7FA50DE4292B29B6CC1 /* AppTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppTheme.swift; path = SwiftTweaks/AppTheme.swift; sourceTree = ""; }; - 5E591C42CC4E4658C8954976C3DB5CE1 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 5E8413B979EE016E4F0B3B4B854D1CE3 /* FSCalendar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FSCalendar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5EF0A4509D6442CBC9A8F75617BBAA0A /* TweakClusterType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakClusterType.swift; path = SwiftTweaks/TweakClusterType.swift; sourceTree = ""; }; - 5F1DCE3FF7C8BD48A42884948C4E0A63 /* NSDate+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSDate+SwiftDate.swift"; path = "Sources/SwiftDate/NSDate+SwiftDate.swift"; sourceTree = ""; }; - 6111DF2E5FF984E07C99C0DEC8CD1497 /* Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Additions.swift; path = Sources/SwiftDate/Additions.swift; sourceTree = ""; }; - 611B8A00EE9A2180740BBBF5D94809B7 /* FontAwesome.otf */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file; name = FontAwesome.otf; path = FontAwesomeKit/FontAwesome.otf; sourceTree = ""; }; - 6122E275D2F9E5AF26DD833E4B1A3F3F /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotatePulse.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift; sourceTree = ""; }; - 615133C94EA4E19E3A959E24DD35CD7C /* DGElasticPullToRefreshExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DGElasticPullToRefreshExtensions.swift; path = DGElasticPullToRefresh/DGElasticPullToRefreshExtensions.swift; sourceTree = ""; }; - 617E9DE70412934B3F4398BDEC4D1974 /* SwiftDate.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftDate.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6250EC902E949A4A30CA1FCAD56C9EBB /* TweakLibrary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakLibrary.swift; path = SwiftTweaks/TweakLibrary.swift; sourceTree = ""; }; - 64245670253294D2139A6887F6CF0185 /* DGElasticPullToRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = DGElasticPullToRefresh.modulemap; sourceTree = ""; }; - 64ACDA21709E5496176A04222208D4E9 /* NVActivityIndicatorView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NVActivityIndicatorView-umbrella.h"; sourceTree = ""; }; - 651C38CADE593207E970A4FA4DF4FE65 /* TweakColorCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakColorCell.swift; path = SwiftTweaks/TweakColorCell.swift; sourceTree = ""; }; - 65685430497D7C66F47F350FAC62EEDE /* SpringAnimationTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SpringAnimationTweakTemplate.swift; path = SwiftTweaks/SpringAnimationTweakTemplate.swift; sourceTree = ""; }; - 65A70CC4CB141D4EBFC59168958A4DE4 /* OnboardingViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OnboardingViewController.m; path = Source/OnboardingViewController.m; sourceTree = ""; }; - 65E3C0FB9C1B9E53E853458A8AEAC330 /* MRNavigationBarProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRNavigationBarProgressView.m; path = src/Components/MRNavigationBarProgressView.m; sourceTree = ""; }; - 6627FEC475D21527AC29B5014EC906B7 /* PermissionScope.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PermissionScope.xcconfig; sourceTree = ""; }; - 68453EF70623263E54D4B92B5824D712 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6890441BBDE5909F0DA1EE0DC9744A4D /* NVActivityIndicatorAnimationBallScaleMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleMultiple.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift; sourceTree = ""; }; - 68E47FA06F12259C88755EBCF2B5F6D0 /* Manager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Manager.swift; path = Source/Manager.swift; sourceTree = ""; }; - 692B79B37557FDC85C5B409036925AAE /* UILabel+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+Chameleon.m"; path = "Pod/Classes/Objective-C/UILabel+Chameleon.m"; sourceTree = ""; }; - 69B6EC74EEF804F1CCAD5A532B0EE3CD /* PermissionScope.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = PermissionScope.modulemap; sourceTree = ""; }; - 6AC0D26FE0B5388F306CF6D5FE85B74D /* SwiftInAppPurchase.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftInAppPurchase.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B482A8605F29D73503290B9E4AA4EB2 /* FSCalendar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar-dummy.m"; sourceTree = ""; }; - 6C94102413A8DC5A3E0C2AA2CDB1E75E /* ShadowTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShadowTweakTemplate.swift; path = SwiftTweaks/ShadowTweakTemplate.swift; sourceTree = ""; }; - 6DBA4A6F0B23CE4BE713AC25EEB362F8 /* Onboard-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Onboard-prefix.pch"; sourceTree = ""; }; - 6DC219A03C285CA4550E1EA425A657CA /* Permissions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Permissions.swift; path = PermissionScope/Permissions.swift; sourceTree = ""; }; - 6E56E9A3513EA29BB78B1359F627F1B9 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; - 6F3EA4423BD406CFC32F8401D8B98AD0 /* UIView+FSExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+FSExtension.m"; path = "FSCalendar/UIView+FSExtension.m"; sourceTree = ""; }; - 6FE445956B1D21BF32C83E62B273F5BA /* ChameleonMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonMacros.h; path = "Pod/Classes/Objective-C/ChameleonMacros.h"; sourceTree = ""; }; - 728F8DE7C15B97A90553B6FDC5261775 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationTriangleSkewSpin.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift; sourceTree = ""; }; - 73B75EF826BC45E0FD16F366632E4061 /* TweakStore+Sharing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TweakStore+Sharing.swift"; path = "SwiftTweaks/TweakStore+Sharing.swift"; sourceTree = ""; }; - 741D7533A3555ACA2DF2396B59C7073C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 74829C1847C33BE2BA16B72AAB4A4B94 /* TweakGroupTemplateType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakGroupTemplateType.swift; path = SwiftTweaks/TweakGroupTemplateType.swift; sourceTree = ""; }; - 754EB805F4315EE916807F50F2AC5149 /* Tweak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Tweak.swift; path = SwiftTweaks/Tweak.swift; sourceTree = ""; }; - 758162B8C0C5CAB0B598A3588DD4706F /* UIAppearance+Swift.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAppearance+Swift.m"; path = "Pod/Classes/Objective-C/UIAppearance+Swift.m"; sourceTree = ""; }; - 75BAEF93F95F80D3D4AFA1E652247CB8 /* ChameleonFramework-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ChameleonFramework-prefix.pch"; sourceTree = ""; }; - 7708BD7415BE05A3D043D8D649E527FB /* SwiftTweaks.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftTweaks.xcconfig; sourceTree = ""; }; - 778FAA1882C875729C4E405795B361E6 /* TweakTableCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakTableCell.swift; path = SwiftTweaks/TweakTableCell.swift; sourceTree = ""; }; - 7800A05E739CBDDE2863D062784E17A4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7908A27084490866DA36B3A90495AB62 /* NVActivityIndicatorAnimationDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationDelegate.swift; path = NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift; sourceTree = ""; }; - 7A6B168885F607CAD9DFAD30CC19FA17 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7A7DFC38D1884A0DF0F693FC2F6959C4 /* TweakPersistency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakPersistency.swift; path = SwiftTweaks/TweakPersistency.swift; sourceTree = ""; }; - 7AA893DDB924B85DE7F08068EB12D864 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7BB2FDDE4B22A473B310D6921A44C78F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = SCLAlertView/Info.plist; sourceTree = ""; }; - 7BE7C528A139F58C646149FE94EC5DFB /* UINavigationController+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+Chameleon.h"; path = "Pod/Classes/Objective-C/UINavigationController+Chameleon.h"; sourceTree = ""; }; - 7E7F7EEDE4A6336989F738C08CD60BE7 /* MRProgress.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MRProgress.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7EE72D59CAF1F3278814D1278ADF49FF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7F9F0CABD8AAE5E2035A6316FC2F9FA3 /* PermissionScope-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PermissionScope-dummy.m"; sourceTree = ""; }; - 7FCECEA5B329F642D7DDE7E9C1161556 /* Media.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Media.xcassets; path = SwiftTweaks/Media.xcassets; sourceTree = ""; }; - 800DC6EE597AB4A83203896E40F16190 /* SwiftInAppPurchase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftInAppPurchase-dummy.m"; sourceTree = ""; }; - 8109158DD1A05826FC05ACA5B8BF7AAF /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftyJSON.modulemap; sourceTree = ""; }; - 8137FF6AAEFBD19340391A23C585D687 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Alamofire.modulemap; sourceTree = ""; }; - 8205CA4F95C78A184EBC77D2E0B2ED1B /* FSCalendarCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarCollectionView.m; path = FSCalendar/FSCalendarCollectionView.m; sourceTree = ""; }; - 82417D172FB5B1E7EA8BDD6B9F2DE558 /* SwiftDate.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftDate.modulemap; sourceTree = ""; }; - 82887638727A876D13CC7A099D199D60 /* ChameleonShorthand.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChameleonShorthand.swift; path = Pod/Classes/Swift/ChameleonShorthand.swift; sourceTree = ""; }; - 83C00FF983D24287B17F2A761C657BB6 /* FSCalendarHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarHeader.m; path = FSCalendar/FSCalendarHeader.m; sourceTree = ""; }; - 83EE592F7637C053AFF7DC90997291B0 /* FAKMaterialIcons.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKMaterialIcons.h; path = FontAwesomeKit/FAKMaterialIcons.h; sourceTree = ""; }; - 8406423E6114C31520801D4021859618 /* EFCircularTrig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EFCircularTrig.m; path = EFCircularSlider/EFCircularTrig.m; sourceTree = ""; }; - 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 8458F7E361AFE5DA87CBCA9E42C4E188 /* SwiftInAppPurchase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftInAppPurchase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 849C68141D31405B40D13AD2C8B773C6 /* UILabel+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+Chameleon.h"; path = "Pod/Classes/Objective-C/UILabel+Chameleon.h"; sourceTree = ""; }; - 84A5E520707745E67BB7C2E8C9CB683E /* Precision.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Precision.swift; path = SwiftTweaks/Precision.swift; sourceTree = ""; }; - 8630F62CDC57FBD5BFE1B7C6E011FEDE /* EFCircularSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EFCircularSlider.m; path = EFCircularSlider/EFCircularSlider.m; sourceTree = ""; }; - 865ABBAEA184B126E10CEB031EDD3A03 /* FAKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKIcon.h; path = FontAwesomeKit/FAKIcon.h; sourceTree = ""; }; - 871E25AA944D15C774077F641D876D1F /* Localize_Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Localize_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 87EF30893B2C5830F8D91CC6097A5C93 /* NVActivityIndicatorAnimationBallTrianglePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallTrianglePath.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift; sourceTree = ""; }; - 8813445013B43D7240ADDB91C29F0C8F /* EFCircularSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EFCircularSlider.h; path = EFCircularSlider/EFCircularSlider.h; sourceTree = ""; }; - 8842396EEC13F1AA15EADEC863533FDD /* Localize-Swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Localize-Swift.xcconfig"; sourceTree = ""; }; - 89190DA7A50AAE4C6B178B872132CCC2 /* TweakCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakCollection.swift; path = SwiftTweaks/TweakCollection.swift; sourceTree = ""; }; - 8BD5CB26790BFDA44BA441707F8958D1 /* SCLExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SCLExtensions.swift; path = SCLAlertView/SCLExtensions.swift; sourceTree = ""; }; - 8BD7A27382116A1BC71A4C5B2D59C2F3 /* FAKIonIcons.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKIonIcons.h; path = FontAwesomeKit/FAKIonIcons.h; sourceTree = ""; }; - 8C909FCCADC0AEDCF8376875F60FA2B6 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleRippleMultiple.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift; sourceTree = ""; }; - 8D5A788BE31AE67A2F682117054D11BA /* EFCircularSlider.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EFCircularSlider.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D790C3DB600556A09AE3A59B618B969 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 8D8544BE791FEE0A6F3803349C550AF9 /* INTULocationManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "INTULocationManager-prefix.pch"; sourceTree = ""; }; - 8E94A299422242F8A9EE35B7E90D847F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8EEDECF77A1A763AF36DA8A58379BC01 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Source/Async.swift; sourceTree = ""; }; - 9067483368E8900844AFD9014A739056 /* SCLAlertView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SCLAlertView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E06F971EA05F91B4956215AA8D2C6E /* FSCalendar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FSCalendar-umbrella.h"; sourceTree = ""; }; - 91D8ED75DBB75FFF5A2554BE7A6B5FAE /* SwiftInAppPurchase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftInAppPurchase.swift; path = Pod/Classes/SwiftInAppPurchase.swift; sourceTree = ""; }; - 91E89C91C9DC0DA11924AF3FFF6B2AEB /* Region.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Region.swift; path = Sources/SwiftDate/Region.swift; sourceTree = ""; }; - 92999EBA6A50997D0E3B0512FF70F9BA /* Utilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utilities.swift; path = "Source/Supporting Files/Utilities.swift"; sourceTree = ""; }; - 92CC62C5C9F65A5EE2CB374D204B665D /* HashingUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HashingUtilities.swift; path = SwiftTweaks/HashingUtilities.swift; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 94AD267C710FED7857E31BB2BC3790E8 /* SCLAlertView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SCLAlertView.swift; path = SCLAlertView/SCLAlertView.swift; sourceTree = ""; }; - 94FF1A5EBC2411CFF06577497A0AEBD4 /* Structs.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Structs.swift; path = PermissionScope/Structs.swift; sourceTree = ""; }; - 96565D8A48BDFEED9889517849C0DD1B /* SwiftDate.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftDate.xcconfig; sourceTree = ""; }; - 9723CB2FC157980453D10224CEE0430E /* FSCalendarAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarAnimator.h; path = FSCalendar/FSCalendarAnimator.h; sourceTree = ""; }; - 975C39377A67B1703B31E9F792F767D7 /* Pods_tpg_offline.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tpg_offline.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 97F733E10E63932C16318469DF7C8D5C /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; - 98600BEC33ADC75E6D2D9D95D2BC54B5 /* ResourceBundle-SwiftInAppPurchase-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SwiftInAppPurchase-Info.plist"; sourceTree = ""; }; - 9944D6F8523318B37645CC37A0E06966 /* UIView+ChameleonPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+ChameleonPrivate.h"; path = "Pod/Classes/Objective-C/UIView+ChameleonPrivate.h"; sourceTree = ""; }; - 99583B8A48BFD9C00C28992142B2A014 /* INTULocationManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "INTULocationManager-umbrella.h"; sourceTree = ""; }; - 9A479638F18BC4159CD4A162894127C4 /* MRActivityIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRActivityIndicatorView.m; path = src/Components/MRActivityIndicatorView.m; sourceTree = ""; }; - 9D52D3344CACCB26F275FC333B0B4C93 /* EFCircularSlider-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EFCircularSlider-umbrella.h"; sourceTree = ""; }; - 9D6F7F161E0D182FE50C73919F7D51B7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9D89CF12858C8F74A57B7A3941152568 /* TweakBinding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakBinding.swift; path = SwiftTweaks/TweakBinding.swift; sourceTree = ""; }; - 9DE1D25DC54E44FCD2AE272DC052C2A9 /* NVActivityIndicatorAnimationSquareSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationSquareSpin.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift; sourceTree = ""; }; - 9E41F20516EA06D76ABB01C821CE0ADA /* MRProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRProgressView.m; path = src/Components/MRProgressView.m; sourceTree = ""; }; - 9E5C84ABC7F1547BA90E3AC0EF0C4915 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9F00C55BB4E20BF9BAB4D49ABA3E1A3F /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - 9FE8CFE54F5FD038412BD75F9D2890D2 /* AnyTweak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyTweak.swift; path = SwiftTweaks/AnyTweak.swift; sourceTree = ""; }; - A144E1C7B06A6519A9145CE8AD66715A /* INTUHeadingRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = INTUHeadingRequest.m; path = LocationManager/INTULocationManager/INTUHeadingRequest.m; sourceTree = ""; }; - A15BB207EBA58F3F5DEA357B503E27C3 /* FAKOcticons.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKOcticons.m; path = FontAwesomeKit/FAKOcticons.m; sourceTree = ""; }; - A206CBD21C6C2512020E1EC238AFE5A8 /* Pods-tpg offline-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-tpg offline-acknowledgements.markdown"; sourceTree = ""; }; - A259EF94300F07E785F53C6DDB04D452 /* NSCalendar+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSCalendar+SwiftDate.swift"; path = "Sources/SwiftDate/NSCalendar+SwiftDate.swift"; sourceTree = ""; }; - A2B50D17781A7EADD3FD808BAAA0C1D5 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; - A2C38CF28E875608DDF403BE51CBA855 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A2D4BA395E15BF7D4DE9A5B98C09FD03 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - A3457F1FC69AA54BCBEF35F1B158D039 /* SwiftInAppPurchase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftInAppPurchase-umbrella.h"; sourceTree = ""; }; - A526B7120A05747404EE52F2AC987A56 /* ChameleonFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ChameleonFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A5C697A745766C38BAF738D2E56E9007 /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarFlowLayout.h; path = FSCalendar/FSCalendarFlowLayout.h; sourceTree = ""; }; - A63280472AA63AA3827046A0A9320C9B /* INTUHeadingRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = INTUHeadingRequest.h; path = LocationManager/INTULocationManager/INTUHeadingRequest.h; sourceTree = ""; }; - A69A8A7AE4AF7A5B1007DA19CEFEEEA1 /* Clip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Clip.swift; path = SwiftTweaks/Clip.swift; sourceTree = ""; }; - A8BE62B0DB38BE26830BA0802BE4087F /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - A8C34F39A3C8D212879095A190678BF3 /* Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Download.swift; path = Source/Download.swift; sourceTree = ""; }; - A982CC753D49BAF3586677608039BB2C /* ChameleonEnums.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonEnums.h; path = "Pod/Classes/Objective-C/ChameleonEnums.h"; sourceTree = ""; }; - A9D9C715E52E94B9C5F9694EC0589E30 /* SwiftDate-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftDate-prefix.pch"; sourceTree = ""; }; - AA6A5F7E3DE9DE7F172B6ED993415B2C /* zocial-regular-webfont.ttf */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file; name = "zocial-regular-webfont.ttf"; path = "FontAwesomeKit/zocial-regular-webfont.ttf"; sourceTree = ""; }; - AA8F4D240ACCC1D0C93D58C040C51216 /* EFCircularSlider-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EFCircularSlider-prefix.pch"; sourceTree = ""; }; - AAEB52F7F4B383C8C9502DF81A8B100A /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; - AB617AFAD86429EFA77D71183891A810 /* INTULocationRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = INTULocationRequest.h; path = LocationManager/INTULocationManager/INTULocationRequest.h; sourceTree = ""; }; - AB7AFABF698F4CD279547D38D300AE6E /* DGElasticPullToRefreshConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DGElasticPullToRefreshConstants.swift; path = DGElasticPullToRefresh/DGElasticPullToRefreshConstants.swift; sourceTree = ""; }; - AB8B32E09A6D660843696180B2EA06FE /* TweaksRootViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweaksRootViewController.swift; path = SwiftTweaks/TweaksRootViewController.swift; sourceTree = ""; }; - ABE0885DE704B90E2F446E6FDB3D4994 /* EFCircularSlider.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EFCircularSlider.xcconfig; sourceTree = ""; }; - ABF63F2B8ADEAFA35248F1055F9E9167 /* EFCircularSlider-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EFCircularSlider-dummy.m"; sourceTree = ""; }; - AC9254D6C01CC76B506F2FB7C0BE1C89 /* Pods-tpg offline-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-tpg offline-frameworks.sh"; sourceTree = ""; }; - AFF042E3819A5722A4E18DEE744CFA04 /* UIButton+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+Chameleon.h"; path = "Pod/Classes/Objective-C/UIButton+Chameleon.h"; sourceTree = ""; }; - AFFFE59B2788F7707E3E36955E993A6F /* FAKFoundationIcons.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKFoundationIcons.h; path = FontAwesomeKit/FAKFoundationIcons.h; sourceTree = ""; }; - B0A3FDE44E8E4E33BE4E2821205460EF /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Source/Logger.swift; sourceTree = ""; }; - B2192196CA44729C9D1505D22AADDCB7 /* TweakViewData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakViewData.swift; path = SwiftTweaks/TweakViewData.swift; sourceTree = ""; }; - B308A9AA2A2121A6C76951E22E829A61 /* FSCalendarHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarHeader.h; path = FSCalendar/FSCalendarHeader.h; sourceTree = ""; }; - B32DF8CD4A79283476F954B3B7E36487 /* NVActivityIndicatorAnimationBallBeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallBeat.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift; sourceTree = ""; }; - B335A0A5288AD20291BD01AD0919A2E9 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B46F5758B7FFFECD9FDF111E82C65D84 /* INTULocationRequestDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = INTULocationRequestDefines.h; path = LocationManager/INTULocationManager/INTULocationRequestDefines.h; sourceTree = ""; }; - B4BE8B37F5227AE9F22B760ABF5A04E0 /* TweaksCollectionsListViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweaksCollectionsListViewController.swift; path = SwiftTweaks/TweaksCollectionsListViewController.swift; sourceTree = ""; }; - B524783A143F71DFD4F4E48E7D90C37A /* Onboard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Onboard-dummy.m"; sourceTree = ""; }; - B53B3249BDE829A94F4286AAA0152420 /* UIImage+SwiftTweaks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+SwiftTweaks.swift"; path = "SwiftTweaks/UIImage+SwiftTweaks.swift"; sourceTree = ""; }; - B546106C99B5935D62E0EDA9C89C646F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B56AC12E15DE38849DD78F6AFF9A0093 /* DGElasticPullToRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DGElasticPullToRefresh-umbrella.h"; sourceTree = ""; }; - B571FCF36E7FD3FDBC5F237AF95679DD /* NVActivityIndicatorView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NVActivityIndicatorView.xcconfig; sourceTree = ""; }; - B629914A247BF9C11D4E2440CFEBD270 /* SwiftTweaks.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftTweaks.modulemap; sourceTree = ""; }; - B656B002A52FEAE9387B7EDD97D110E7 /* UIColor+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+Chameleon.m"; path = "Pod/Classes/Objective-C/UIColor+Chameleon.m"; sourceTree = ""; }; - B67E17F81B9948A10A15D07BD52B27F9 /* NVActivityIndicatorShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorShape.swift; path = NVActivityIndicatorView/NVActivityIndicatorShape.swift; sourceTree = ""; }; - B72324C3C9166605A2805A2A5E7646A9 /* UIView+FSExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+FSExtension.h"; path = "FSCalendar/UIView+FSExtension.h"; sourceTree = ""; }; - B7C966C5C4F0D4B0212EBAB97F455DDF /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarEventIndicator.h; path = FSCalendar/FSCalendarEventIndicator.h; sourceTree = ""; }; - B87C9926EB91EE966744F50A33275833 /* Localize-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Localize-Swift-umbrella.h"; sourceTree = ""; }; - B8B5CF40640D21C440172236DBD428C2 /* FSCalendarAppearance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarAppearance.m; path = FSCalendar/FSCalendarAppearance.m; sourceTree = ""; }; - B920998E9D716910A06199E29C3B4CA9 /* Formatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Formatter.swift; path = Source/Formatter.swift; sourceTree = ""; }; - B9DA28EC1AA04CB7380412B46AD2FFC8 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; - BA57754C4386A5B8C83765CBE24DB8C5 /* FAKZocial.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKZocial.h; path = FontAwesomeKit/FAKZocial.h; sourceTree = ""; }; - BA8C003F8898DEC00BAE37641DB9CA54 /* Log.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Log.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BBC78930784A2D8C9C7AA1646961C6FB /* NVActivityIndicatorAnimationBallGridPulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallGridPulse.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift; sourceTree = ""; }; - BC89282A528D90977B0E6F31AA0FDEBF /* MRStopButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRStopButton.m; path = src/Components/MRStopButton.m; sourceTree = ""; }; - BCE8A2553E5B9A016379202FDA207C7C /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - BD209D5A87DE1524F3873D0C9A22F11F /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON.swift; sourceTree = ""; }; - BD32A5FBC69D7089DA79EE914D73AFB6 /* DGRunkeeperSwitch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DGRunkeeperSwitch.swift; path = DGRunkeeperSwitch/DGRunkeeperSwitch.swift; sourceTree = ""; }; - BD65FFE029BD5131BE61C0203190CE62 /* FSCalendarConstance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarConstance.h; path = FSCalendar/FSCalendarConstance.h; sourceTree = ""; }; - BD668705D280F596E1207992E834E7E8 /* UIView+ChameleonPrivate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+ChameleonPrivate.m"; path = "Pod/Classes/Objective-C/UIView+ChameleonPrivate.m"; sourceTree = ""; }; - BDCAB3216A15D7C6D5EB472E9314C345 /* NVActivityIndicatorAnimationBallGridBeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallGridBeat.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift; sourceTree = ""; }; - BDD45079373CEF4DB383A974AA819997 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScalePulseOutRapid.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift; sourceTree = ""; }; - BE1DB65DF75987DDE87E3B45B5B3AF2A /* PermissionScope.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PermissionScope.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BE88A80595B96E4361417A5C09BE74AC /* NSArray+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Chameleon.m"; path = "Pod/Classes/Objective-C/NSArray+Chameleon.m"; sourceTree = ""; }; - BF2A0E3EB72D2E622AE03568C5BCD3F6 /* NSLocale+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSLocale+SwiftDate.swift"; path = "Sources/SwiftDate/NSLocale+SwiftDate.swift"; sourceTree = ""; }; - BF2CFCDC407A045CB56009AD862C15E3 /* FSCalendarConstance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarConstance.m; path = FSCalendar/FSCalendarConstance.m; sourceTree = ""; }; - BF3220264804ECF24D8567464665E7A9 /* DateInRegion+Equations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+Equations.swift"; path = "Sources/SwiftDate/DateInRegion+Equations.swift"; sourceTree = ""; }; - BF6DD70BE4A19BCE9C1B986D54AC5C90 /* MRActivityIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRActivityIndicatorView.h; path = src/Components/MRActivityIndicatorView.h; sourceTree = ""; }; - C090C0E8E1C05EFB8A9BF4B2D5B7E33B /* NSDate+FSExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+FSExtension.m"; path = "FSCalendar/NSDate+FSExtension.m"; sourceTree = ""; }; - C20F20A58AC3A3CED2F92FA6CF39A190 /* INTURequestIDGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = INTURequestIDGenerator.m; path = LocationManager/INTULocationManager/INTURequestIDGenerator.m; sourceTree = ""; }; - C2F5A2E6587190800C702F2B44E52267 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineSpinFadeLoader.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift; sourceTree = ""; }; - C33D866CE263B8EC6EB7120A05AD82B1 /* AKPickerView-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AKPickerView-Swift-prefix.pch"; sourceTree = ""; }; - C374256C3EAA6BCADFE9E6D19EEE07CF /* Themes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Themes.swift; path = Source/Extensions/Themes.swift; sourceTree = ""; }; - C557B9522D977500DD2538C1D01D753E /* FSCalendarCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarCell.h; path = FSCalendar/FSCalendarCell.h; sourceTree = ""; }; - C5BB0113B0ACB514D4B71FA4E831AE43 /* MRProgress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRProgress.h; path = src/MRProgress.h; sourceTree = ""; }; - C67F43829EB7756C6CAC2F9C8F8E7644 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - C6E61A4F6EBC20C76B9FDD881F27C371 /* DGRunkeeperSwitch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DGRunkeeperSwitch.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C7B1618BF0E8E0C81276629C5204C7DC /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - C7F846C0FC81F64022FEB010412C3936 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - C810E8892D2F625782B3A449D93647FD /* Material-Design-Iconic-Font.ttf */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file; name = "Material-Design-Iconic-Font.ttf"; path = "FontAwesomeKit/Material-Design-Iconic-Font.ttf"; sourceTree = ""; }; - C87940E53F694BE749F7FA882590EBD0 /* NSDate+FSExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+FSExtension.h"; path = "FSCalendar/NSDate+FSExtension.h"; sourceTree = ""; }; - C8D0A9C864A81B0108B45BBA2C7925C5 /* FSCalendarStickyHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarStickyHeader.h; path = FSCalendar/FSCalendarStickyHeader.h; sourceTree = ""; }; - C975963E7E7FA6F6FB3362195E0DC915 /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; - CA55DA18D78BF41D95C7A350A43071E0 /* Pods-tpg offline.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-tpg offline.modulemap"; sourceTree = ""; }; - CA5B58475862B2A09FA58AEE9EFE1722 /* DateInRegion+Formatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+Formatter.swift"; path = "Sources/SwiftDate/DateInRegion+Formatter.swift"; sourceTree = ""; }; - CB235D3B34CCE108C64AACB06E7D031B /* FAKZocial.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAKZocial.m; path = FontAwesomeKit/FAKZocial.m; sourceTree = ""; }; - CB3D61728F1D9BA9148E11E01029BFB0 /* INTURequestIDGenerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = INTURequestIDGenerator.h; path = LocationManager/INTULocationManager/INTURequestIDGenerator.h; sourceTree = ""; }; - CCEE1B5492455A6A571CE59384580EDA /* INTULocationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "INTULocationManager+Internal.h"; path = "LocationManager/INTULocationManager/INTULocationManager+Internal.h"; sourceTree = ""; }; - CD44BBFB869D5BFF18474F1453345EE9 /* ChameleonFramework-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ChameleonFramework-umbrella.h"; sourceTree = ""; }; - CD55E0D5E9305873433818D9DAAC229F /* UIView+TweakGroupTemplateSpringAnimation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+TweakGroupTemplateSpringAnimation.swift"; path = "SwiftTweaks/UIView+TweakGroupTemplateSpringAnimation.swift"; sourceTree = ""; }; - CD5B81E6F37FD70176FDCF14CAA80ACD /* Log-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Log-dummy.m"; sourceTree = ""; }; - CEB6447139423827E1B48125CF6EBC7D /* octicons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file; name = octicons.ttf; path = FontAwesomeKit/octicons.ttf; sourceTree = ""; }; - CEB960B7A10FA8958C385E4D9EF969E3 /* Benchmarker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Benchmarker.swift; path = Source/Benchmarker.swift; sourceTree = ""; }; - CED2BB71913B580FA0DDB21429A64DEB /* Stream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stream.swift; path = Source/Stream.swift; sourceTree = ""; }; - CF1E25E16A3028704811EB5A6B5615C9 /* Constants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constants.swift; path = PermissionScope/Constants.swift; sourceTree = ""; }; - CFC0D160A932B3831E1F860B453DEFF9 /* EFCircularTrig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EFCircularTrig.h; path = EFCircularSlider/EFCircularTrig.h; sourceTree = ""; }; - D0857403C81F18B61814CA26C8A6C318 /* DateInRegion+NSDatePort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+NSDatePort.swift"; path = "Sources/SwiftDate/DateInRegion+NSDatePort.swift"; sourceTree = ""; }; - D1E121BA37C8395E720C9AF9D7CE7BED /* EFCircularSlider.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = EFCircularSlider.modulemap; sourceTree = ""; }; - D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - D3077E65F29689E9252DD264638DC02B /* UIColor+ChameleonPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+ChameleonPrivate.h"; path = "Pod/Classes/Objective-C/UIColor+ChameleonPrivate.h"; sourceTree = ""; }; - D32E384C30E1A582BB08F7CB2A2F41DF /* Localize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Localize.swift; path = Sources/Localize.swift; sourceTree = ""; }; - D41FA0747FB93DA0D9215B7940ACF1BD /* FontAwesomeKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FontAwesomeKit.h; path = FontAwesomeKit/FontAwesomeKit.h; sourceTree = ""; }; - D443593571E3BADA1217AC04948DC574 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D44F8A2880915B7FE2A827F1DC978F65 /* UINavigationController+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+Chameleon.m"; path = "Pod/Classes/Objective-C/UINavigationController+Chameleon.m"; sourceTree = ""; }; - D53E43A6E1A1D781835396A1F32DD588 /* Log-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Log-umbrella.h"; sourceTree = ""; }; - D67197B83D7A41AA7843FAF48C376931 /* AKPickerView_Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AKPickerView_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D6AEFC82FD314C7D769CAC4861314550 /* AKPickerView-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "AKPickerView-Swift.modulemap"; sourceTree = ""; }; - D6B5BED61B1A615D7BCDCC60BC13276C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D75DD798E7D3D42C66695A6AF5CAAA19 /* DGElasticPullToRefreshLoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DGElasticPullToRefreshLoadingView.swift; path = DGElasticPullToRefresh/DGElasticPullToRefreshLoadingView.swift; sourceTree = ""; }; - D97FB9255C36E255BC8927C3A6E463ED /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FSCalendar+IBExtension.m"; path = "FSCalendar/FSCalendar+IBExtension.m"; sourceTree = ""; }; - D9DF2FE20405EFBFF97566DBF9718C86 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallSpinFadeLoader.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift; sourceTree = ""; }; - DA1BB5DAE05A08902EF205597768C8D2 /* FloatingTweakGroupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FloatingTweakGroupViewController.swift; path = SwiftTweaks/FloatingTweakGroupViewController.swift; sourceTree = ""; }; - DA651F2A90E354D34F45409F0FFD358A /* NVActivityIndicatorAnimationBallPulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulse.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift; sourceTree = ""; }; - DAE356A9212EF12B261B74490F444E91 /* AsyncSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AsyncSwift-dummy.m"; sourceTree = ""; }; - DB5B04BC6BFF42CAAED02C773D25DBCB /* HitTransparentWindow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HitTransparentWindow.swift; path = SwiftTweaks/HitTransparentWindow.swift; sourceTree = ""; }; - DBF9579287A757FEABC9C9D7D379C907 /* FSCalendar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendar.m; path = FSCalendar/FSCalendar.m; sourceTree = ""; }; - DD07F5DB3DFC380B9784E9D99B4C5731 /* ChameleonFramework-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ChameleonFramework-dummy.m"; sourceTree = ""; }; - DD31E0F3FF42AFE3E003E0951C596E83 /* Onboard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Onboard.modulemap; sourceTree = ""; }; - DD7D485A9905B86916556EFC722F6BEC /* PermissionScope-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PermissionScope-prefix.pch"; sourceTree = ""; }; - DE4248941F6AC5DA4F76E04CEDD23E60 /* UIButton+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+Chameleon.m"; path = "Pod/Classes/Objective-C/UIButton+Chameleon.m"; sourceTree = ""; }; - E1ADC7D00128B9A718A72BD4BA56F652 /* MRBlurView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRBlurView.m; path = src/Blur/MRBlurView.m; sourceTree = ""; }; - E265939F188BA3C70277F6560858C0F9 /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FSCalendar+IBExtension.h"; path = "FSCalendar/FSCalendar+IBExtension.h"; sourceTree = ""; }; - E2948F4158FE4D2BBE8C813788219DB9 /* NSDateComponents+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSDateComponents+SwiftDate.swift"; path = "Sources/SwiftDate/NSDateComponents+SwiftDate.swift"; sourceTree = ""; }; - E32E7E50509167D2844359D8DCF736DD /* SwiftInAppPurchase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftInAppPurchase.modulemap; sourceTree = ""; }; - E417E7E10C6372EBB14CEDBCA04C2490 /* DGRunkeeperSwitch-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DGRunkeeperSwitch-prefix.pch"; sourceTree = ""; }; - E45B3E088B8A31948DD3C3DC5F4BB790 /* DateInRegion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateInRegion.swift; path = Sources/SwiftDate/DateInRegion.swift; sourceTree = ""; }; - E5B76A6EC7318EA20649D1FD6905C38F /* NVActivityIndicatorAnimationLineScaleParty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScaleParty.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift; sourceTree = ""; }; - E82CAD7D235046418F082D5B0A8D1D1D /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - E83552986EC1CEECA2DB228B9D2ADBB9 /* Pods-tpg offline-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-tpg offline-resources.sh"; sourceTree = ""; }; - E862FCBC80BDF066FF76FF03CF39124E /* Formatters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Formatters.swift; path = Source/Extensions/Formatters.swift; sourceTree = ""; }; - E8EE31FD01C4A8007E12433A6E78CE5C /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotateMultiple.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift; sourceTree = ""; }; - E9C2BB2D6E127F0B0CAEF19791583027 /* UIViewController+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Chameleon.m"; path = "Pod/Classes/Objective-C/UIViewController+Chameleon.m"; sourceTree = ""; }; - EB412DCE625C4C5EC1F4B45499E42B49 /* FAKFontAwesome.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAKFontAwesome.h; path = FontAwesomeKit/FAKFontAwesome.h; sourceTree = ""; }; - EB90F07A4822A1DA79878873304DDF1E /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallZigZagDeflect.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift; sourceTree = ""; }; - EC6FC930F54A7941EE9F398953A22CB7 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - ECAD2275A230BC19D18511D36F75CB0E /* ChameleonConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ChameleonConstants.m; path = "Pod/Classes/Objective-C/ChameleonConstants.m"; sourceTree = ""; }; - EF16672313C1C6DF29D804092742EA43 /* UIImage+MRImageEffects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MRImageEffects.h"; path = "src/Blur/UIImage+MRImageEffects.h"; sourceTree = ""; }; - EF5B0EADF433576B56E366D8A9988165 /* NVActivityIndicatorView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NVActivityIndicatorView-dummy.m"; sourceTree = ""; }; - EF6F19CE0D9BC761DCED5EFD7038967B /* UIColor+Tweaks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIColor+Tweaks.swift"; path = "SwiftTweaks/UIColor+Tweaks.swift"; sourceTree = ""; }; - EF812FB579F24D01A081FBE04EFB98ED /* CALayer+FSExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+FSExtension.h"; path = "FSCalendar/CALayer+FSExtension.h"; sourceTree = ""; }; - EFAD3D6865CCE62AEAAC55474370C395 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - F0040F5CDC1B8B85F16675C3952BF53C /* MRIconView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MRIconView.m; path = src/Components/MRIconView.m; sourceTree = ""; }; - F06F8B0DC961F6025FAE8D3C0D82F37D /* NSTimeZone+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTimeZone+SwiftDate.swift"; path = "Sources/SwiftDate/NSTimeZone+SwiftDate.swift"; sourceTree = ""; }; - F0E6CF08BA91D826830F089409668DE6 /* UIViewController+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Chameleon.h"; path = "Pod/Classes/Objective-C/UIViewController+Chameleon.h"; sourceTree = ""; }; - F1085B33477CC15BC9967D6C2CDF37B8 /* FontAwesomeKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FontAwesomeKit-umbrella.h"; sourceTree = ""; }; - F11B98FD6A0C718D5DA609DF7EE5B2DC /* NSString+FSExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+FSExtension.m"; path = "FSCalendar/NSString+FSExtension.m"; sourceTree = ""; }; - F1A5D3D018E991DF04506D4F2E409148 /* MRIconView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MRIconView.h; path = src/Components/MRIconView.h; sourceTree = ""; }; - F3575C06FA5B2FEE49DE0106BD7F14A2 /* NSArray+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Chameleon.h"; path = "Pod/Classes/Objective-C/NSArray+Chameleon.h"; sourceTree = ""; }; - F37516AE097D14D7139938C1A6A56E1D /* NSTimeInterval+SwiftDate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTimeInterval+SwiftDate.swift"; path = "Sources/SwiftDate/NSTimeInterval+SwiftDate.swift"; sourceTree = ""; }; - F3804017A096C4E2CA1596FC93D45728 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; - F513CD12D6CE1CEB681A67342D80B7A3 /* PermissionScope-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PermissionScope-umbrella.h"; sourceTree = ""; }; - F51E13B0DA049BC0A09EBFF059D61434 /* NVActivityIndicatorAnimationBallRotateChase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallRotateChase.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift; sourceTree = ""; }; - F56711DBE9DD7968E18DBA00194ED08C /* Log.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Log.xcconfig; sourceTree = ""; }; - F708B4EA38504B2CCFC0DB52F22A48E1 /* FSCalendarCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSCalendarCollectionView.h; path = FSCalendar/FSCalendarCollectionView.h; sourceTree = ""; }; - F72A59E865956F9E03182D589274659E /* BasicAnimationTweakTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BasicAnimationTweakTemplate.swift; path = SwiftTweaks/BasicAnimationTweakTemplate.swift; sourceTree = ""; }; - F73E5D6629238B823C31845A1BAAF430 /* SwiftInAppPurchase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftInAppPurchase-prefix.pch"; sourceTree = ""; }; - F794F15EA8EB2CF6949F988E303227F3 /* NVActivityIndicatorAnimationSemiCircleSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationSemiCircleSpin.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift; sourceTree = ""; }; - F7FC6CC300F147F92904D63290983456 /* Onboard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Onboard-umbrella.h"; sourceTree = ""; }; - F8B6FABB6260EFAB6BE019E1F5E5F821 /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSCalendarEventIndicator.m; path = FSCalendar/FSCalendarEventIndicator.m; sourceTree = ""; }; - F98C0F7FB18743C27FA3FD01E8886170 /* SCLAlertView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SCLAlertView.xcconfig; sourceTree = ""; }; - FA14E2635E4A0FDBDD7953223C59CBDC /* DGRunkeeperSwitch.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DGRunkeeperSwitch.xcconfig; sourceTree = ""; }; - FAC9B52DFE28E8AEB442A5A727BEE41F /* ionicons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file; name = ionicons.ttf; path = FontAwesomeKit/ionicons.ttf; sourceTree = ""; }; - FBBFDF212822057BD5E4A7A48B921D2A /* Pods-tpg offline-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-tpg offline-umbrella.h"; sourceTree = ""; }; - FC41EAA6C8A22C7A93C05A6382447771 /* NVActivityIndicatorView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = NVActivityIndicatorView.modulemap; sourceTree = ""; }; - FC646D44C22C4D190BD828E2FBDD9110 /* DateInRegion+Components.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DateInRegion+Components.swift"; path = "Sources/SwiftDate/DateInRegion+Components.swift"; sourceTree = ""; }; - FCB18E81EBBA2A4D37A780DCCAA1548A /* INTULocationManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = INTULocationManager.modulemap; sourceTree = ""; }; - FD40D323A9F536C5A6076637F63563AE /* NVActivityIndicatorView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NVActivityIndicatorView-prefix.pch"; sourceTree = ""; }; - FD954368950DBE6188ABF6411D0E2F87 /* NVActivityIndicatorAnimationBlank.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBlank.swift; path = NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift; sourceTree = ""; }; - FEAED082D59B4CE39C8F6723C03E01CF /* TweakColorEditViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TweakColorEditViewController.swift; path = SwiftTweaks/TweakColorEditViewController.swift; sourceTree = ""; }; - FF33565EF115E0952908914E63A0E0C0 /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0C3240922851CEEC70B722E9B9D6B6AA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6DA60574521A1711FF18D06D5CDB10B9 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0C695BF3402437CDFF170B86B302914B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - BD4BBFEFCA87BEF75752066B57CD39E8 /* Foundation.framework in Frameworks */, - FDEFC3630F3E6EF3D22FA7BE4B331689 /* QuartzCore.framework in Frameworks */, - 30F74FFB8022989294FEE27D2CF1B66B /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1FDF39FC9AC8BB97395383590A295D72 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 33BEEEDA9F79EFF262B940A9A9EA8D38 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 24A6EBA9EAE5017F65E804F351F8C1E0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CC6706A5C5AC9744A850FC11730CA53E /* Foundation.framework in Frameworks */, - 1D35C1D706CC250647A30E728E9C1B30 /* QuartzCore.framework in Frameworks */, - 529B5FE84D8845B8B5FD0D72FB81FCAC /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 271BCC51F0050F9CAD885B0734030DCE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FFCD27FF219DEC63137D56C7AD5A048A /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 308EB9B41341FEAF006009FC79D74EC8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E20ADDFDF13E48484CEE7CF77123F5A /* Accelerate.framework in Frameworks */, - E01442ABCD312C1599319B377D5613A9 /* CoreGraphics.framework in Frameworks */, - 387C50EDB866026D550580B80DAD9021 /* Foundation.framework in Frameworks */, - AE208B115D3EC98547A417F875912B5E /* QuartzCore.framework in Frameworks */, - 4781EBC1F6439821D47B84B8FFDFA36D /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 427329835593AB54E796D1B03B829FD3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 165244AE75779FAEAA05BF5A8F6CF526 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50D2750C40F449BFD8567BAFCABB9C26 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4CE052B699FE14245A9BC48EAB53D9F5 /* Foundation.framework in Frameworks */, - A3A24F2FE9B94B152877A4A4B048D6CD /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 62C08C6DAE03909FE7943AFE35640149 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA63634FDB30074D8C573E62746B15F1 /* Foundation.framework in Frameworks */, - 595D2F50A91B50B34D1CA62399375A9C /* StoreKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6C19B8B0FB8302776225399BC3EDA931 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AF3632DCF38D8A9FFE5DC667982E9460 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 94E3A72588376F13003ACE60CA6B6535 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 744D91185307ACFC2DF330EE1875CB87 /* CoreText.framework in Frameworks */, - 1941EA048852E4C592F5A0C2F080720E /* Foundation.framework in Frameworks */, - FE21FC7BACB9BCD40402CF778F2A0C6E /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9CFB3E5D593071280A4928E6A3845B20 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 659026E53077FED17DB71A0B902F7ECD /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9E138A11AB568FDD962F892987F6F048 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DFB3F12058051C96E88682F4CA437C55 /* Foundation.framework in Frameworks */, - 4EE7425D051C10CFC7D52095223EB7FA /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A327B85222751A2A79801B77F7413CBF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B947C4D115342A33C6604EF0D7848766 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B1729F851F648EC60EE93CDB3C8BAEAD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7BA049A8A530320D26A5FED8582518B9 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B7C95AD8A7D52792F72BCD0DD8FBF0FF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6706D233F78CA9528D6C410722BE09C5 /* Foundation.framework in Frameworks */, - C5DC5509FE360B0C018179AEAB679380 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CA8D01D44A8DD61CC34CB9D6A3D9B272 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DEF6A4568B82118FAE7955FDD99F6E8C /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D1D996B64953C04FC8527BA7AA0B0504 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 66323BA01DCC80D9617C3DC6EC93096B /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA5786DE6FF2AA0BFF44C6FC0E5374F6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 05F9EFB06257765DD08FB9D48590ECB5 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC45B49DAE58A4E80A54C3888DA457F3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E6ABAD1063A8CB12D73A2783D0DB7216 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ED30B7DD7B886B42115F9F24B1029048 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 39142C7BD7BBC877D884D0CDB2A70EF0 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA56DE5702BE7E48B54172D194A10B16 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FC1A73E30C8322A70D5DCD63B04CAE84 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AE689678FC0C8BA7398F9D8874735970 /* CoreGraphics.framework in Frameworks */, - C8A2FAD60F45E95A498EF0FD614844BF /* Foundation.framework in Frameworks */, - 21E13D0D47B4A85902BA6A603922906E /* QuartzCore.framework in Frameworks */, - BBD629D333A966C9DAEC646285909AC7 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 04BFA460213DCA7809FD8E06B7A52B29 /* NavigationBarProgress */ = { - isa = PBXGroup; - children = ( - 1B08A1B36F0A6E4CD519408A67150374 /* MRNavigationBarProgressView.h */, - 65E3C0FB9C1B9E53E853458A8AEAC330 /* MRNavigationBarProgressView.m */, - ); - name = NavigationBarProgress; - sourceTree = ""; - }; - 0E03A9AA457E309B208883C05B3F2B7A /* Support Files */ = { - isa = PBXGroup; - children = ( - 47AD9FEEB5021C7822A96B70D1B28079 /* DGRunkeeperSwitch.modulemap */, - FA14E2635E4A0FDBDD7953223C59CBDC /* DGRunkeeperSwitch.xcconfig */, - 44989BC3C89A3F02752B8168BCD91229 /* DGRunkeeperSwitch-dummy.m */, - E417E7E10C6372EBB14CEDBCA04C2490 /* DGRunkeeperSwitch-prefix.pch */, - 454DA591C828EE125C4CD4E6829B9ED5 /* DGRunkeeperSwitch-umbrella.h */, - 7EE72D59CAF1F3278814D1278ADF49FF /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/DGRunkeeperSwitch"; - sourceTree = ""; - }; - 0E508A0877F38F777494ECBE9D88315D /* SCLAlertView */ = { - isa = PBXGroup; - children = ( - 7BB2FDDE4B22A473B310D6921A44C78F /* Info.plist */, - 94AD267C710FED7857E31BB2BC3790E8 /* SCLAlertView.swift */, - 8BD5CB26790BFDA44BA441707F8958D1 /* SCLExtensions.swift */, - BD6000722D809913006D5BA62223A316 /* Support Files */, - ); - path = SCLAlertView; - sourceTree = ""; - }; - 0EF73E3875A5CFF8612D07D685CCF2D8 /* Resources */ = { - isa = PBXGroup; - children = ( - AA6A5F7E3DE9DE7F172B6ED993415B2C /* zocial-regular-webfont.ttf */, - ); - name = Resources; - sourceTree = ""; - }; - 0F880AE10B1BAFBC705358A03E0C3427 /* Support Files */ = { - isa = PBXGroup; - children = ( - 0E72770DE0D17CFD80BE5FF3B7A57E83 /* FSCalendar.modulemap */, - 1F1C7B10C405C285F7BDF56720444EF7 /* FSCalendar.xcconfig */, - 6B482A8605F29D73503290B9E4AA4EB2 /* FSCalendar-dummy.m */, - 00F7E960E08F42ACCC8917B304C13FEC /* FSCalendar-prefix.pch */, - 90E06F971EA05F91B4956215AA8D2C6E /* FSCalendar-umbrella.h */, - 17AA292F3F46A8F70EB63C90D00A043D /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/FSCalendar"; - sourceTree = ""; - }; - 11401999D4E3D7450C59207A83C60F26 /* Zocial */ = { - isa = PBXGroup; - children = ( - BA57754C4386A5B8C83765CBE24DB8C5 /* FAKZocial.h */, - CB235D3B34CCE108C64AACB06E7D031B /* FAKZocial.m */, - 0EF73E3875A5CFF8612D07D685CCF2D8 /* Resources */, - ); - name = Zocial; - sourceTree = ""; - }; - 12563E2D128C66E181E788514962A46D /* Resources */ = { - isa = PBXGroup; - children = ( - CEB6447139423827E1B48125CF6EBC7D /* octicons.ttf */, - ); - name = Resources; - sourceTree = ""; - }; - 186462F6A9B5D883930C7E1BEF3B6149 /* SwiftTweaks */ = { - isa = PBXGroup; - children = ( - 9FE8CFE54F5FD038412BD75F9D2890D2 /* AnyTweak.swift */, - 5D4DA5B5F177A7FA50DE4292B29B6CC1 /* AppTheme.swift */, - F72A59E865956F9E03182D589274659E /* BasicAnimationTweakTemplate.swift */, - 16CFEEA46E9DB7A13A733AB5F8DF8B31 /* CALayer+ShadowTweakTemplate.swift */, - A69A8A7AE4AF7A5B1007DA19CEFEEEA1 /* Clip.swift */, - 012189AF218224586E70149DAEF1EAF6 /* ColorRepresentation.swift */, - 1A924633224C2DB29B1DF6C655045F58 /* EdgeInsetsTweakTemplate.swift */, - DA1BB5DAE05A08902EF205597768C8D2 /* FloatingTweakGroupViewController.swift */, - 92CC62C5C9F65A5EE2CB374D204B665D /* HashingUtilities.swift */, - DB5B04BC6BFF42CAAED02C773D25DBCB /* HitTransparentWindow.swift */, - 84A5E520707745E67BB7C2E8C9CB683E /* Precision.swift */, - 6C94102413A8DC5A3E0C2AA2CDB1E75E /* ShadowTweakTemplate.swift */, - 54A8A52B91480CCB30E99C484E02BEAA /* SignedNumberTweakDefaultParameters.swift */, - 65685430497D7C66F47F350FAC62EEDE /* SpringAnimationTweakTemplate.swift */, - 754EB805F4315EE916807F50F2AC5149 /* Tweak.swift */, - 4C83D7B5517F1A42EBAFFD190376EACF /* TweakableType.swift */, - 0395352DDFC006935068F7248640B54F /* TweakBackup.swift */, - 9D89CF12858C8F74A57B7A3941152568 /* TweakBinding.swift */, - 5EF0A4509D6442CBC9A8F75617BBAA0A /* TweakClusterType.swift */, - 89190DA7A50AAE4C6B178B872132CCC2 /* TweakCollection.swift */, - 100B619BBAE3DE405CC6DF902857E43C /* TweakCollectionViewController.swift */, - 651C38CADE593207E970A4FA4DF4FE65 /* TweakColorCell.swift */, - FEAED082D59B4CE39C8F6723C03E01CF /* TweakColorEditViewController.swift */, - 1E12931828371D1F461C1EFA4DF0E6A1 /* TweakGroup.swift */, - 74829C1847C33BE2BA16B72AAB4A4B94 /* TweakGroupTemplateType.swift */, - 6250EC902E949A4A30CA1FCAD56C9EBB /* TweakLibrary.swift */, - 7A7DFC38D1884A0DF0F693FC2F6959C4 /* TweakPersistency.swift */, - 2D322867D872F05065D7739085407378 /* TweaksBackupsListViewController.swift */, - B4BE8B37F5227AE9F22B760ABF5A04E0 /* TweaksCollectionsListViewController.swift */, - AB8B32E09A6D660843696180B2EA06FE /* TweaksRootViewController.swift */, - 4D2F5D5E3664356890D3BACD6C700289 /* TweakStore.swift */, - 73B75EF826BC45E0FD16F366632E4061 /* TweakStore+Sharing.swift */, - 569830AE11E3A35BD852B8ED6F3D5EF3 /* TweaksViewController.swift */, - 778FAA1882C875729C4E405795B361E6 /* TweakTableCell.swift */, - B2192196CA44729C9D1505D22AADDCB7 /* TweakViewData.swift */, - 3BC40F4D6EFA3E6DDA821A2CA0580C83 /* TweakWindow.swift */, - EF6F19CE0D9BC761DCED5EFD7038967B /* UIColor+Tweaks.swift */, - 20E6C13EB21880BDBB2FFC26B4497DD9 /* UIEdgeInsets+EdgeInsetsTweakTemplate.swift */, - B53B3249BDE829A94F4286AAA0152420 /* UIImage+SwiftTweaks.swift */, - 237C787FECBD1138A66985CAC077E53E /* UIView+BasicAnimationTweakTemplate.swift */, - CD55E0D5E9305873433818D9DAAC229F /* UIView+TweakGroupTemplateSpringAnimation.swift */, - B738B5A1D371912FFA3A824EF552DFE6 /* Resources */, - C810E26AE96C7DB0C2EBED0250408860 /* Support Files */, - ); - path = SwiftTweaks; - sourceTree = ""; - }; - 1C6AF9558A4AF7AA5707A3BD004BC732 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8137FF6AAEFBD19340391A23C585D687 /* Alamofire.modulemap */, - 21D6DBB62DF8E7BD317235591F214E73 /* Alamofire.xcconfig */, - EC6FC930F54A7941EE9F398953A22CB7 /* Alamofire-dummy.m */, - 8D790C3DB600556A09AE3A59B618B969 /* Alamofire-prefix.pch */, - C7F846C0FC81F64022FEB010412C3936 /* Alamofire-umbrella.h */, - 9E5C84ABC7F1547BA90E3AC0EF0C4915 /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/Alamofire"; - sourceTree = ""; - }; - 3231EA1DCD1C1DFC95BBDA7754FCE05A /* Support Files */ = { - isa = PBXGroup; - children = ( - 9D6F7F161E0D182FE50C73919F7D51B7 /* Info.plist */, - 8109158DD1A05826FC05ACA5B8BF7AAF /* SwiftyJSON.modulemap */, - C975963E7E7FA6F6FB3362195E0DC915 /* SwiftyJSON.xcconfig */, - 97F733E10E63932C16318469DF7C8D5C /* SwiftyJSON-dummy.m */, - C67F43829EB7756C6CAC2F9C8F8E7644 /* SwiftyJSON-prefix.pch */, - 475FF44C03EF51904E86BA0A0C5CDD89 /* SwiftyJSON-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftyJSON"; - sourceTree = ""; - }; - 332116071C07A7370E7C7E5BAE73689B /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 78CA117CAA91B43AB3F6919EC13C006A /* Pods-tpg offline */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 3404DFE98012D812CCC9068C777B5DF5 /* Resources */ = { - isa = PBXGroup; - children = ( - FAC9B52DFE28E8AEB442A5A727BEE41F /* ionicons.ttf */, - ); - name = Resources; - sourceTree = ""; - }; - 343D1BDC6B6830DDF89B98052E479E9B /* Log */ = { - isa = PBXGroup; - children = ( - CEB960B7A10FA8958C385E4D9EF969E3 /* Benchmarker.swift */, - B920998E9D716910A06199E29C3B4CA9 /* Formatter.swift */, - E862FCBC80BDF066FF76FF03CF39124E /* Formatters.swift */, - B0A3FDE44E8E4E33BE4E2821205460EF /* Logger.swift */, - 32613149A7AF175826CE1CFCF651CFBE /* Theme.swift */, - C374256C3EAA6BCADFE9E6D19EEE07CF /* Themes.swift */, - 92999EBA6A50997D0E3B0512FF70F9BA /* Utilities.swift */, - 4C0748B0D3EF362FF0A7326E79D2E3AB /* Support Files */, - ); - path = Log; - sourceTree = ""; - }; - 36888539D73D8A9D230B93F528457345 /* Fabric */ = { - isa = PBXGroup; - children = ( - 94108B4E287C6C43E78618D2F9480F30 /* Frameworks */, - ); - path = Fabric; - sourceTree = ""; - }; - 3991EBF7E462A2A5F958B91A888F3EAF /* Stopable */ = { - isa = PBXGroup; - children = ( - 0C22F909FB0F3DD46C504563172D8789 /* MRStopableView.h */, - 05DA5127D70005DF4A1926D0ECA6C42B /* MRStopButton.h */, - BC89282A528D90977B0E6F31AA0FDEBF /* MRStopButton.m */, - ); - name = Stopable; - sourceTree = ""; - }; - 3F7E0C6294777373185A3A5553B925A8 /* EFCircularSlider */ = { - isa = PBXGroup; - children = ( - 8813445013B43D7240ADDB91C29F0C8F /* EFCircularSlider.h */, - 8630F62CDC57FBD5BFE1B7C6E011FEDE /* EFCircularSlider.m */, - CFC0D160A932B3831E1F860B453DEFF9 /* EFCircularTrig.h */, - 8406423E6114C31520801D4021859618 /* EFCircularTrig.m */, - 5B63C82D6D1CF2C6A1A0E95464E20438 /* Support Files */, - ); - path = EFCircularSlider; - sourceTree = ""; - }; - 40B4BB6FE9A487220895A78AEF1EFAD8 /* Default */ = { - isa = PBXGroup; - children = ( - 3ACA4B77854E43D279CD57545ED64207 /* Chameleon.h */, - 353C100864557E00F0CB9AE5E823B140 /* Chameleon_.h */, - 380689C7DFF7A8B197B0DC7C4235D60E /* Chameleon_.m */, - 57F146A001151D3104E6D36C4C128249 /* ChameleonConstants.h */, - ECAD2275A230BC19D18511D36F75CB0E /* ChameleonConstants.m */, - A982CC753D49BAF3586677608039BB2C /* ChameleonEnums.h */, - 6FE445956B1D21BF32C83E62B273F5BA /* ChameleonMacros.h */, - F3575C06FA5B2FEE49DE0106BD7F14A2 /* NSArray+Chameleon.h */, - BE88A80595B96E4361417A5C09BE74AC /* NSArray+Chameleon.m */, - 4DAD7C30FD4D6DC7F5269E0A612B6A36 /* UIAppearance+Swift.h */, - 758162B8C0C5CAB0B598A3588DD4706F /* UIAppearance+Swift.m */, - AFF042E3819A5722A4E18DEE744CFA04 /* UIButton+Chameleon.h */, - DE4248941F6AC5DA4F76E04CEDD23E60 /* UIButton+Chameleon.m */, - 10D6C959ADAB08F6EB230BC43BFC2FD6 /* UIColor+Chameleon.h */, - B656B002A52FEAE9387B7EDD97D110E7 /* UIColor+Chameleon.m */, - D3077E65F29689E9252DD264638DC02B /* UIColor+ChameleonPrivate.h */, - 1D16A93616A9A640FF798E7840712607 /* UIColor+ChameleonPrivate.m */, - 3402FC82014D3F9A274CC1D9750A4A05 /* UIImage+ChameleonPrivate.h */, - 20EA86D5BABC04E604138A9939838E79 /* UIImage+ChameleonPrivate.m */, - 849C68141D31405B40D13AD2C8B773C6 /* UILabel+Chameleon.h */, - 692B79B37557FDC85C5B409036925AAE /* UILabel+Chameleon.m */, - 7BE7C528A139F58C646149FE94EC5DFB /* UINavigationController+Chameleon.h */, - D44F8A2880915B7FE2A827F1DC978F65 /* UINavigationController+Chameleon.m */, - 9944D6F8523318B37645CC37A0E06966 /* UIView+ChameleonPrivate.h */, - BD668705D280F596E1207992E834E7E8 /* UIView+ChameleonPrivate.m */, - F0E6CF08BA91D826830F089409668DE6 /* UIViewController+Chameleon.h */, - E9C2BB2D6E127F0B0CAEF19791583027 /* UIViewController+Chameleon.m */, - ); - name = Default; - sourceTree = ""; - }; - 41A75A3C39E25FB95713BE1D90EF0270 /* Blur */ = { - isa = PBXGroup; - children = ( - 1285CA76BFC0689BF0EFB5B31D3CDA77 /* MRBlurView.h */, - E1ADC7D00128B9A718A72BD4BA56F652 /* MRBlurView.m */, - EF16672313C1C6DF29D804092742EA43 /* UIImage+MRImageEffects.h */, - 253904F995DD8A5114B6B8B23F201805 /* UIImage+MRImageEffects.m */, - ); - name = Blur; - sourceTree = ""; - }; - 429ED6F74298631EBA15F6468CAEB492 /* Support Files */ = { - isa = PBXGroup; - children = ( - D443593571E3BADA1217AC04948DC574 /* Info.plist */, - FC41EAA6C8A22C7A93C05A6382447771 /* NVActivityIndicatorView.modulemap */, - B571FCF36E7FD3FDBC5F237AF95679DD /* NVActivityIndicatorView.xcconfig */, - EF5B0EADF433576B56E366D8A9988165 /* NVActivityIndicatorView-dummy.m */, - FD40D323A9F536C5A6076637F63563AE /* NVActivityIndicatorView-prefix.pch */, - 64ACDA21709E5496176A04222208D4E9 /* NVActivityIndicatorView-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/NVActivityIndicatorView"; - sourceTree = ""; - }; - 49D8EAA844B9E6E398BF27B4ED3C3AAD /* DGElasticPullToRefresh */ = { - isa = PBXGroup; - children = ( - AB7AFABF698F4CD279547D38D300AE6E /* DGElasticPullToRefreshConstants.swift */, - 615133C94EA4E19E3A959E24DD35CD7C /* DGElasticPullToRefreshExtensions.swift */, - D75DD798E7D3D42C66695A6AF5CAAA19 /* DGElasticPullToRefreshLoadingView.swift */, - 542CD4854F2F6D005416A4127DAC773A /* DGElasticPullToRefreshLoadingViewCircle.swift */, - 3BA74DB244E08F0B20B447A60A292B28 /* DGElasticPullToRefreshView.swift */, - 6B485503853FFE390AAF84655DD44F2B /* Support Files */, - ); - path = DGElasticPullToRefresh; - sourceTree = ""; - }; - 4B6F6DFDB815ECC0081587A2DEC9EA4C /* Alamofire */ = { - isa = PBXGroup; - children = ( - C7B1618BF0E8E0C81276629C5204C7DC /* Alamofire.swift */, - A8C34F39A3C8D212879095A190678BF3 /* Download.swift */, - 32872696A15B7ED2D762F49591E1D0A5 /* Error.swift */, - 68E47FA06F12259C88755EBCF2B5F6D0 /* Manager.swift */, - 0240A81A134DD1E2D3C463B8013AF0D2 /* MultipartFormData.swift */, - A2D4BA395E15BF7D4DE9A5B98C09FD03 /* NetworkReachabilityManager.swift */, - A8BE62B0DB38BE26830BA0802BE4087F /* Notifications.swift */, - E82CAD7D235046418F082D5B0A8D1D1D /* ParameterEncoding.swift */, - BCE8A2553E5B9A016379202FDA207C7C /* Request.swift */, - 9F00C55BB4E20BF9BAB4D49ABA3E1A3F /* Response.swift */, - 1CE28601D5261E856C0D00DDAF43B5D0 /* ResponseSerialization.swift */, - B9DA28EC1AA04CB7380412B46AD2FFC8 /* Result.swift */, - EFAD3D6865CCE62AEAAC55474370C395 /* ServerTrustPolicy.swift */, - CED2BB71913B580FA0DDB21429A64DEB /* Stream.swift */, - 5C7186E0433615B16D699B21AAC3BA1D /* Timeline.swift */, - 3B3520258A6D98CCE6EBB297C6877589 /* Upload.swift */, - 24C4760F5DD4CB467A7112281E967C04 /* Validation.swift */, - 1C6AF9558A4AF7AA5707A3BD004BC732 /* Support Files */, - ); - path = Alamofire; - sourceTree = ""; - }; - 4BE58E8D1F442480F0FC22E04DFCFAD1 /* Circular */ = { - isa = PBXGroup; - children = ( - 54FBED247FC03E61556D0E18EDE19BAA /* MRCircularProgressView.h */, - 2211FDEBCC6FEAC482F69A4DA39D7366 /* MRCircularProgressView.m */, - ); - name = Circular; - sourceTree = ""; - }; - 4C0748B0D3EF362FF0A7326E79D2E3AB /* Support Files */ = { - isa = PBXGroup; - children = ( - 0FE626E37E62401F5B2AA468245A2B4A /* Info.plist */, - 0A63A88E702614AA9B3512595A93EA20 /* Log.modulemap */, - F56711DBE9DD7968E18DBA00194ED08C /* Log.xcconfig */, - CD5B81E6F37FD70176FDCF14CAA80ACD /* Log-dummy.m */, - 28D73AB258480A097A803D4F208B3542 /* Log-prefix.pch */, - D53E43A6E1A1D781835396A1F32DD588 /* Log-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Log"; - sourceTree = ""; - }; - 5044629B47BDCB0FF12F3D21E8B32A53 /* SwiftInAppPurchase */ = { - isa = PBXGroup; - children = ( - 2444A70958E420012AB33C638444FDE8 /* PaymentRequestHandler.swift */, - 401E757E105FA6900E55FD5306AA9BB1 /* ProductRequestHandler.swift */, - 536DBA6E97C669D79451FB7EC582F5D0 /* ReceiptRequestHandler.swift */, - 91D8ED75DBB75FFF5A2554BE7A6B5FAE /* SwiftInAppPurchase.swift */, - E1ACB217C2F3CF296C59F36793D18C65 /* Support Files */, - ); - path = SwiftInAppPurchase; - sourceTree = ""; - }; - 5049A48EB56643D732837160CD07D2AF /* Support Files */ = { - isa = PBXGroup; - children = ( - 29574C1F2CC308A7ABD9E7FD370021D8 /* Info.plist */, - 82417D172FB5B1E7EA8BDD6B9F2DE558 /* SwiftDate.modulemap */, - 96565D8A48BDFEED9889517849C0DD1B /* SwiftDate.xcconfig */, - 06FA87AAEDB4ADBC7A15BB295EF51C77 /* SwiftDate-dummy.m */, - A9D9C715E52E94B9C5F9694EC0589E30 /* SwiftDate-prefix.pch */, - 07616EFF2950BF156B44B1883E4026C2 /* SwiftDate-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftDate"; - sourceTree = ""; - }; - 505BC6CEC62C1E234338798688844D95 /* Resources */ = { - isa = PBXGroup; - children = ( - 611B8A00EE9A2180740BBBF5D94809B7 /* FontAwesome.otf */, - ); - name = Resources; - sourceTree = ""; - }; - 57D7E1C0E4D0876B47A918E2648ECAA2 /* Swift */ = { - isa = PBXGroup; - children = ( - 82887638727A876D13CC7A099D199D60 /* ChameleonShorthand.swift */, - ); - name = Swift; - sourceTree = ""; - }; - 5B63C82D6D1CF2C6A1A0E95464E20438 /* Support Files */ = { - isa = PBXGroup; - children = ( - D1E121BA37C8395E720C9AF9D7CE7BED /* EFCircularSlider.modulemap */, - ABE0885DE704B90E2F446E6FDB3D4994 /* EFCircularSlider.xcconfig */, - ABF63F2B8ADEAFA35248F1055F9E9167 /* EFCircularSlider-dummy.m */, - AA8F4D240ACCC1D0C93D58C040C51216 /* EFCircularSlider-prefix.pch */, - 9D52D3344CACCB26F275FC333B0B4C93 /* EFCircularSlider-umbrella.h */, - 09AD54C6E2914DE3B0E92BDD596F6AD8 /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/EFCircularSlider"; - sourceTree = ""; - }; - 5F6DA0D4A887BAE12F952427C5C3400D /* SwiftDate */ = { - isa = PBXGroup; - children = ( - 6111DF2E5FF984E07C99C0DEC8CD1497 /* Additions.swift */, - E45B3E088B8A31948DD3C3DC5F4BB790 /* DateInRegion.swift */, - 1B466E914C58E53362C6F1A7983FC2AC /* DateInRegion+Comparisons.swift */, - FC646D44C22C4D190BD828E2FBDD9110 /* DateInRegion+Components.swift */, - BF3220264804ECF24D8567464665E7A9 /* DateInRegion+Equations.swift */, - CA5B58475862B2A09FA58AEE9EFE1722 /* DateInRegion+Formatter.swift */, - D0857403C81F18B61814CA26C8A6C318 /* DateInRegion+NSDatePort.swift */, - 0C83AD2BC1FBEB0750B19B093712D545 /* DateInRegion+Operations.swift */, - 09E4A22324BF4C3DF06D0A9FA09A7FA5 /* DateInRegion+StartEnd.swift */, - 1F7502E73C5C7AFF2D7C193B3CC17635 /* Dictionary+SwiftDate.swift */, - A259EF94300F07E785F53C6DDB04D452 /* NSCalendar+SwiftDate.swift */, - 5F1DCE3FF7C8BD48A42884948C4E0A63 /* NSDate+SwiftDate.swift */, - E2948F4158FE4D2BBE8C813788219DB9 /* NSDateComponents+SwiftDate.swift */, - 11CD7B4D6796DE722E7E6AE91271E532 /* NSDateFormatter+SwiftDate.swift */, - 4E32D81915143777356AD901BFF95ED6 /* NSDateInterval.swift */, - BF2A0E3EB72D2E622AE03568C5BCD3F6 /* NSLocale+SwiftDate.swift */, - F37516AE097D14D7139938C1A6A56E1D /* NSTimeInterval+SwiftDate.swift */, - F06F8B0DC961F6025FAE8D3C0D82F37D /* NSTimeZone+SwiftDate.swift */, - 91E89C91C9DC0DA11924AF3FFF6B2AEB /* Region.swift */, - 5049A48EB56643D732837160CD07D2AF /* Support Files */, - ); - path = SwiftDate; - sourceTree = ""; - }; - 6577A0598223D1CBF6A8C101F4F6DF25 /* Support Files */ = { - isa = PBXGroup; - children = ( - D6AEFC82FD314C7D769CAC4861314550 /* AKPickerView-Swift.modulemap */, - 3D34BB12EA18038B02F24F7282FE226E /* AKPickerView-Swift.xcconfig */, - 23ED5B56EAD6A1100447D1DB06EC925A /* AKPickerView-Swift-dummy.m */, - C33D866CE263B8EC6EB7120A05AD82B1 /* AKPickerView-Swift-prefix.pch */, - 1E9B48114062883632E4C68D9FB335E8 /* AKPickerView-Swift-umbrella.h */, - 560A61239DF4D9DDEA62AD4E59AC43EF /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/AKPickerView-Swift"; - sourceTree = ""; - }; - 66C34E076E4A5888C42704B67A1F4179 /* Resources */ = { - isa = PBXGroup; - children = ( - C810E8892D2F625782B3A449D93647FD /* Material-Design-Iconic-Font.ttf */, - ); - name = Resources; - sourceTree = ""; - }; - 66CC2A3436B31C792911323BC313A45C /* Resources */ = { - isa = PBXGroup; - children = ( - 3D9A2063443FE1336500CA6EE481925F /* foundation-icons.ttf */, - ); - name = Resources; - sourceTree = ""; - }; - 68744116F38BBF5891A8C8895D6F5F08 /* Support Files */ = { - isa = PBXGroup; - children = ( - 4D8AE4384AD61D05325B3A45E6D16C5E /* FontAwesomeKit.modulemap */, - 5060A44DA2E95A11C353E3822955BA8B /* FontAwesomeKit.xcconfig */, - 40CA6433785FC9F38E0E0F3BF97F4F95 /* FontAwesomeKit-dummy.m */, - 48410F3E0FB6DFDC49AFCC8A7F2F1200 /* FontAwesomeKit-prefix.pch */, - F1085B33477CC15BC9967D6C2CDF37B8 /* FontAwesomeKit-umbrella.h */, - D6B5BED61B1A615D7BCDCC60BC13276C /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/FontAwesomeKit"; - sourceTree = ""; - }; - 6AB4EDE9E17164FA4EA42756A1EF1FAF /* Support Files */ = { - isa = PBXGroup; - children = ( - 0DC29C54CADD9261CB2B0CACBD12A199 /* ChameleonFramework.modulemap */, - 07708D0251576271A17840367001B492 /* ChameleonFramework.xcconfig */, - DD07F5DB3DFC380B9784E9D99B4C5731 /* ChameleonFramework-dummy.m */, - 75BAEF93F95F80D3D4AFA1E652247CB8 /* ChameleonFramework-prefix.pch */, - CD44BBFB869D5BFF18474F1453345EE9 /* ChameleonFramework-umbrella.h */, - 3EFDC87411DBA840DCC781C41CAAA87C /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/ChameleonFramework"; - sourceTree = ""; - }; - 6AFB93D3645CEFD597B33DA2AC252B46 /* Helper */ = { - isa = PBXGroup; - children = ( - 3DF31DB524F144E46EA30058681A9BD3 /* MRProgressHelper.h */, - ); - name = Helper; - sourceTree = ""; - }; - 6B485503853FFE390AAF84655DD44F2B /* Support Files */ = { - isa = PBXGroup; - children = ( - 64245670253294D2139A6887F6CF0185 /* DGElasticPullToRefresh.modulemap */, - 5B65CD432E7FA5EAF2588655EFDE7F51 /* DGElasticPullToRefresh.xcconfig */, - 3706DEF5E05D37992415349C6E630839 /* DGElasticPullToRefresh-dummy.m */, - 1005CA704AA24D3EEBD7C2BFD47BA390 /* DGElasticPullToRefresh-prefix.pch */, - B56AC12E15DE38849DD78F6AFF9A0093 /* DGElasticPullToRefresh-umbrella.h */, - 7A6B168885F607CAD9DFAD30CC19FA17 /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/DGElasticPullToRefresh"; - sourceTree = ""; - }; - 78CA117CAA91B43AB3F6919EC13C006A /* Pods-tpg offline */ = { - isa = PBXGroup; - children = ( - 741D7533A3555ACA2DF2396B59C7073C /* Info.plist */, - CA55DA18D78BF41D95C7A350A43071E0 /* Pods-tpg offline.modulemap */, - A206CBD21C6C2512020E1EC238AFE5A8 /* Pods-tpg offline-acknowledgements.markdown */, - 33EB840B783AB3267C8C681297A1DC95 /* Pods-tpg offline-acknowledgements.plist */, - 57E26CB58B93C4F17A71252E0318205B /* Pods-tpg offline-dummy.m */, - AC9254D6C01CC76B506F2FB7C0BE1C89 /* Pods-tpg offline-frameworks.sh */, - E83552986EC1CEECA2DB228B9D2ADBB9 /* Pods-tpg offline-resources.sh */, - FBBFDF212822057BD5E4A7A48B921D2A /* Pods-tpg offline-umbrella.h */, - 0370319F2FA7B83D9BCA15C396CA0748 /* Pods-tpg offline.debug.xcconfig */, - 53A733F5026792B56429C77348A720B9 /* Pods-tpg offline.release.xcconfig */, - ); - name = "Pods-tpg offline"; - path = "Target Support Files/Pods-tpg offline"; - sourceTree = ""; - }; - 795208D435C25D07C82EBA44AB469B8C /* PermissionScope */ = { - isa = PBXGroup; - children = ( - CF1E25E16A3028704811EB5A6B5615C9 /* Constants.swift */, - 1504F4A49DFBE37627F7A0F13F6CF397 /* Extensions.swift */, - 6DC219A03C285CA4550E1EA425A657CA /* Permissions.swift */, - 3B80CAA48BD48E55BDE62C7CCFA8DA6D /* PermissionScope.swift */, - 94FF1A5EBC2411CFF06577497A0AEBD4 /* Structs.swift */, - CB0FE9C5AFE3CE2B6297A22BD0E3F2E1 /* Support Files */, - ); - path = PermissionScope; - sourceTree = ""; - }; - 7B78C98F645C1D785B5185CED8126741 /* Products */ = { - isa = PBXGroup; - children = ( - D67197B83D7A41AA7843FAF48C376931 /* AKPickerView_Swift.framework */, - 23A34AA5CD92A090D44B23774301EF02 /* Alamofire.framework */, - 294819245101964815C51BF087071704 /* Async.framework */, - A526B7120A05747404EE52F2AC987A56 /* ChameleonFramework.framework */, - 021DC339F4390779FFA6D901574617AF /* DGElasticPullToRefresh.framework */, - C6E61A4F6EBC20C76B9FDD881F27C371 /* DGRunkeeperSwitch.framework */, - 8D5A788BE31AE67A2F682117054D11BA /* EFCircularSlider.framework */, - 492BC27888460D7791C0AEF0F65916BF /* FontAwesomeKit.framework */, - 5E8413B979EE016E4F0B3B4B854D1CE3 /* FSCalendar.framework */, - 1F36DA1EE58BB1A91340DB0685A26671 /* INTULocationManager.framework */, - 871E25AA944D15C774077F641D876D1F /* Localize_Swift.framework */, - BA8C003F8898DEC00BAE37641DB9CA54 /* Log.framework */, - 7E7F7EEDE4A6336989F738C08CD60BE7 /* MRProgress.framework */, - 39680D13CAA4BAEA00B63EE9BDDFA403 /* NVActivityIndicatorView.framework */, - 31160AB1A3FE7012378FCDEAE1BA7A6C /* Onboard.framework */, - BE1DB65DF75987DDE87E3B45B5B3AF2A /* PermissionScope.framework */, - 975C39377A67B1703B31E9F792F767D7 /* Pods_tpg_offline.framework */, - 9067483368E8900844AFD9014A739056 /* SCLAlertView.framework */, - 617E9DE70412934B3F4398BDEC4D1974 /* SwiftDate.framework */, - 6AC0D26FE0B5388F306CF6D5FE85B74D /* SwiftInAppPurchase.bundle */, - 8458F7E361AFE5DA87CBCA9E42C4E188 /* SwiftInAppPurchase.framework */, - 30E6AE2E1BD4C674401E6B317147249B /* SwiftTweaks.framework */, - FF33565EF115E0952908914E63A0E0C0 /* SwiftyJSON.framework */, - ); - name = Products; - sourceTree = ""; - }; - 7C47D6577BDFD5A3A24BE52BBDC9E19B /* ChameleonFramework */ = { - isa = PBXGroup; - children = ( - 40B4BB6FE9A487220895A78AEF1EFAD8 /* Default */, - 6AB4EDE9E17164FA4EA42756A1EF1FAF /* Support Files */, - 57D7E1C0E4D0876B47A918E2648ECAA2 /* Swift */, - ); - path = ChameleonFramework; - sourceTree = ""; - }; - 7C84690666EE788950ADD9FC7B9EF5F5 /* AsyncSwift */ = { - isa = PBXGroup; - children = ( - 8EEDECF77A1A763AF36DA8A58379BC01 /* Async.swift */, - 93D2E2F277787CFF7D96152137F96769 /* Support Files */, - ); - path = AsyncSwift; - sourceTree = ""; - }; - 7D3857F50F33CF2902FE1448FAA281D1 /* Core */ = { - isa = PBXGroup; - children = ( - 865ABBAEA184B126E10CEB031EDD3A03 /* FAKIcon.h */, - 3A5579509F95593DAED8FB04906B5FB9 /* FAKIcon.m */, - ); - name = Core; - sourceTree = ""; - }; - 7DB346D0F39D3F0E887471402A8071AB = { - isa = PBXGroup; - children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - F4CDA5FA9197A41E0081E84F932906EB /* Frameworks */, - AD91195DDDD119CF701CC194BBE192CB /* Pods */, - 7B78C98F645C1D785B5185CED8126741 /* Products */, - 332116071C07A7370E7C7E5BAE73689B /* Targets Support Files */, - ); - sourceTree = ""; - }; - 82F5D57805F9F717D0D18128787ECFD8 /* ProgressBaseClass */ = { - isa = PBXGroup; - children = ( - 38A20C65B2DDE5ADA6C18A8560CA073D /* MRProgressView.h */, - 9E41F20516EA06D76ABB01C821CE0ADA /* MRProgressView.m */, - ); - name = ProgressBaseClass; - sourceTree = ""; - }; - 87652F10936F84BF1FF1D288C63826B9 /* iOS */ = { - isa = PBXGroup; - children = ( - AAEB52F7F4B383C8C9502DF81A8B100A /* Accelerate.framework */, - 164B0C51C22E65985D17281C16A13D15 /* CoreGraphics.framework */, - F3804017A096C4E2CA1596FC93D45728 /* CoreText.framework */, - D2EEBEDE07DCC047923720CEDA35982E /* Foundation.framework */, - 5E591C42CC4E4658C8954976C3DB5CE1 /* QuartzCore.framework */, - 6E56E9A3513EA29BB78B1359F627F1B9 /* StoreKit.framework */, - 8442BF0F0C3D860646481C46099D3C2A /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 8D8A8818FC92DA6F6C6D8FF3ED3A9869 /* Octicons */ = { - isa = PBXGroup; - children = ( - 482709D9A1EDC65C7090BE3F2A6BE946 /* FAKOcticons.h */, - A15BB207EBA58F3F5DEA357B503E27C3 /* FAKOcticons.m */, - 12563E2D128C66E181E788514962A46D /* Resources */, - ); - name = Octicons; - sourceTree = ""; - }; - 8F314C147796638BFE8BD20ECD8B6BDD /* Localize-Swift */ = { - isa = PBXGroup; - children = ( - D32E384C30E1A582BB08F7CB2A2F41DF /* Localize.swift */, - 5A32003675B3ABBF1314CF933AB87375 /* Localize_Swift.h */, - A40D06B1A3AF6A7DBE49A1E9CDEB93C2 /* Support Files */, - ); - path = "Localize-Swift"; - sourceTree = ""; - }; - 92C730C2954EF82AAA683E9F6D86E0E1 /* INTULocationManager */ = { - isa = PBXGroup; - children = ( - A63280472AA63AA3827046A0A9320C9B /* INTUHeadingRequest.h */, - A144E1C7B06A6519A9145CE8AD66715A /* INTUHeadingRequest.m */, - 447B9A6A811DB3F64D3D83940CE3366D /* INTULocationManager.h */, - 21121123C5B33FF775BAA3D06D968739 /* INTULocationManager.m */, - CCEE1B5492455A6A571CE59384580EDA /* INTULocationManager+Internal.h */, - AB617AFAD86429EFA77D71183891A810 /* INTULocationRequest.h */, - 1DE096B1AEA88EF91CBE7BEFC53544CB /* INTULocationRequest.m */, - B46F5758B7FFFECD9FDF111E82C65D84 /* INTULocationRequestDefines.h */, - CB3D61728F1D9BA9148E11E01029BFB0 /* INTURequestIDGenerator.h */, - C20F20A58AC3A3CED2F92FA6CF39A190 /* INTURequestIDGenerator.m */, - ACA82235110612F6F6691D97A2D386BE /* Support Files */, - ); - path = INTULocationManager; - sourceTree = ""; - }; - 93D2E2F277787CFF7D96152137F96769 /* Support Files */ = { - isa = PBXGroup; - children = ( - 2A54265BF06C63ACCBD029400FBB8882 /* AsyncSwift.modulemap */, - 4DE2F7540F07676FE654870A2BA39E30 /* AsyncSwift.xcconfig */, - DAE356A9212EF12B261B74490F444E91 /* AsyncSwift-dummy.m */, - 33295618FF88A0FAD24334AAA865C0A0 /* AsyncSwift-prefix.pch */, - 3A5DF86838CC87F5636E6003B7B2A6FD /* AsyncSwift-umbrella.h */, - 7AA893DDB924B85DE7F08068EB12D864 /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/AsyncSwift"; - sourceTree = ""; - }; - 94108B4E287C6C43E78618D2F9480F30 /* Frameworks */ = { - isa = PBXGroup; - children = ( - A2B50D17781A7EADD3FD808BAAA0C1D5 /* Fabric.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - A0ABA72059E70E44B38902CF42ED9765 /* Material */ = { - isa = PBXGroup; - children = ( - 83EE592F7637C053AFF7DC90997291B0 /* FAKMaterialIcons.h */, - 0EDF3C4C5B01BF1A4204E0FCA8CC9D55 /* FAKMaterialIcons.m */, - 66C34E076E4A5888C42704B67A1F4179 /* Resources */, - ); - name = Material; - sourceTree = ""; - }; - A40D06B1A3AF6A7DBE49A1E9CDEB93C2 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8E94A299422242F8A9EE35B7E90D847F /* Info.plist */, - 2351275ADA76388D170C0A5C13AD8E98 /* Localize-Swift.modulemap */, - 8842396EEC13F1AA15EADEC863533FDD /* Localize-Swift.xcconfig */, - 4A32488174BA7657D1A1B6594AA1926F /* Localize-Swift-dummy.m */, - 4D03FAC5FFD7706B2A1D655B63CD25FA /* Localize-Swift-prefix.pch */, - B87C9926EB91EE966744F50A33275833 /* Localize-Swift-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Localize-Swift"; - sourceTree = ""; - }; - ACA82235110612F6F6691D97A2D386BE /* Support Files */ = { - isa = PBXGroup; - children = ( - 3F389FD129777AC1F01283A61ABEF404 /* Info.plist */, - FCB18E81EBBA2A4D37A780DCCAA1548A /* INTULocationManager.modulemap */, - 344D585A05C9D3B4BB8D386FF73777AC /* INTULocationManager.xcconfig */, - 20FFC9B0591D66FBA439062F9DEACE33 /* INTULocationManager-dummy.m */, - 8D8544BE791FEE0A6F3803349C550AF9 /* INTULocationManager-prefix.pch */, - 99583B8A48BFD9C00C28992142B2A014 /* INTULocationManager-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/INTULocationManager"; - sourceTree = ""; - }; - ACC228CDB41D1E4BCAC6C93A3D365292 /* DGRunkeeperSwitch */ = { - isa = PBXGroup; - children = ( - BD32A5FBC69D7089DA79EE914D73AFB6 /* DGRunkeeperSwitch.swift */, - 0E03A9AA457E309B208883C05B3F2B7A /* Support Files */, - ); - path = DGRunkeeperSwitch; - sourceTree = ""; - }; - AD825CE4F9F2D3BF45FF48D58C72ABA7 /* NVActivityIndicatorView */ = { - isa = PBXGroup; - children = ( - B32DF8CD4A79283476F954B3B7E36487 /* NVActivityIndicatorAnimationBallBeat.swift */, - 26D2207734A971357125F6D6E729B193 /* NVActivityIndicatorAnimationBallClipRotate.swift */, - E8EE31FD01C4A8007E12433A6E78CE5C /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */, - 6122E275D2F9E5AF26DD833E4B1A3F3F /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */, - BDCAB3216A15D7C6D5EB472E9314C345 /* NVActivityIndicatorAnimationBallGridBeat.swift */, - BBC78930784A2D8C9C7AA1646961C6FB /* NVActivityIndicatorAnimationBallGridPulse.swift */, - DA651F2A90E354D34F45409F0FFD358A /* NVActivityIndicatorAnimationBallPulse.swift */, - 53F8617638F2D9D06E35B6F8FB835920 /* NVActivityIndicatorAnimationBallPulseRise.swift */, - 4F902121FD352F721FB38767860C7EDD /* NVActivityIndicatorAnimationBallPulseSync.swift */, - 51797706944D4A52049858F0D5F68FA2 /* NVActivityIndicatorAnimationBallRotate.swift */, - F51E13B0DA049BC0A09EBFF059D61434 /* NVActivityIndicatorAnimationBallRotateChase.swift */, - 1522ADB16DE3A06A2671763014ABD715 /* NVActivityIndicatorAnimationBallScale.swift */, - 6890441BBDE5909F0DA1EE0DC9744A4D /* NVActivityIndicatorAnimationBallScaleMultiple.swift */, - 4065B136C6EFC843464BAF19A19F3F2E /* NVActivityIndicatorAnimationBallScaleRipple.swift */, - 8C909FCCADC0AEDCF8376875F60FA2B6 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */, - D9DF2FE20405EFBFF97566DBF9718C86 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */, - 87EF30893B2C5830F8D91CC6097A5C93 /* NVActivityIndicatorAnimationBallTrianglePath.swift */, - 5BACC5238693EE10E41BDE9B4911F7ED /* NVActivityIndicatorAnimationBallZigZag.swift */, - EB90F07A4822A1DA79878873304DDF1E /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */, - FD954368950DBE6188ABF6411D0E2F87 /* NVActivityIndicatorAnimationBlank.swift */, - 169BACA90582EBFD066DA19FDC8EB364 /* NVActivityIndicatorAnimationCubeTransition.swift */, - 7908A27084490866DA36B3A90495AB62 /* NVActivityIndicatorAnimationDelegate.swift */, - 4578FB1A019DD82FD8FD4CA2C3A37F60 /* NVActivityIndicatorAnimationLineScale.swift */, - E5B76A6EC7318EA20649D1FD6905C38F /* NVActivityIndicatorAnimationLineScaleParty.swift */, - 2E0ADC0F48415673EFE2A2450859A825 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */, - BDD45079373CEF4DB383A974AA819997 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */, - C2F5A2E6587190800C702F2B44E52267 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */, - 143249D2E9DB5B34C9E9D293FF3EE6EA /* NVActivityIndicatorAnimationPacman.swift */, - F794F15EA8EB2CF6949F988E303227F3 /* NVActivityIndicatorAnimationSemiCircleSpin.swift */, - 9DE1D25DC54E44FCD2AE272DC052C2A9 /* NVActivityIndicatorAnimationSquareSpin.swift */, - 728F8DE7C15B97A90553B6FDC5261775 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */, - B67E17F81B9948A10A15D07BD52B27F9 /* NVActivityIndicatorShape.swift */, - 0B8DF4469A5D2B4DA2FF9BF71D53DC68 /* NVActivityIndicatorView.swift */, - 429ED6F74298631EBA15F6468CAEB492 /* Support Files */, - ); - path = NVActivityIndicatorView; - sourceTree = ""; - }; - AD91195DDDD119CF701CC194BBE192CB /* Pods */ = { - isa = PBXGroup; - children = ( - F430AB03E762F26B5E08F56D71629DD6 /* AKPickerView-Swift */, - 4B6F6DFDB815ECC0081587A2DEC9EA4C /* Alamofire */, - 7C84690666EE788950ADD9FC7B9EF5F5 /* AsyncSwift */, - 7C47D6577BDFD5A3A24BE52BBDC9E19B /* ChameleonFramework */, - B254B7787436F7BD70E25F37B6832E64 /* Crashlytics */, - 49D8EAA844B9E6E398BF27B4ED3C3AAD /* DGElasticPullToRefresh */, - ACC228CDB41D1E4BCAC6C93A3D365292 /* DGRunkeeperSwitch */, - 3F7E0C6294777373185A3A5553B925A8 /* EFCircularSlider */, - 36888539D73D8A9D230B93F528457345 /* Fabric */, - ED39CB16C8FCD2AAE6BB59AE3A417007 /* FontAwesomeKit */, - EC1703CA005D97071DA305D6AEDDB221 /* FSCalendar */, - 92C730C2954EF82AAA683E9F6D86E0E1 /* INTULocationManager */, - 8F314C147796638BFE8BD20ECD8B6BDD /* Localize-Swift */, - 343D1BDC6B6830DDF89B98052E479E9B /* Log */, - EC988B279AD18D8F7F09153BC0F7ABBD /* MRProgress */, - AD825CE4F9F2D3BF45FF48D58C72ABA7 /* NVActivityIndicatorView */, - AE13979A05B0C07A29D2B69EEBF13DA1 /* Onboard */, - 795208D435C25D07C82EBA44AB469B8C /* PermissionScope */, - 0E508A0877F38F777494ECBE9D88315D /* SCLAlertView */, - 5F6DA0D4A887BAE12F952427C5C3400D /* SwiftDate */, - 5044629B47BDCB0FF12F3D21E8B32A53 /* SwiftInAppPurchase */, - 186462F6A9B5D883930C7E1BEF3B6149 /* SwiftTweaks */, - E38E2E8EBA0D4D3A53C9C1CAF885A936 /* SwiftyJSON */, - ); - name = Pods; - sourceTree = ""; - }; - AE13979A05B0C07A29D2B69EEBF13DA1 /* Onboard */ = { - isa = PBXGroup; - children = ( - 395FAC894A5ADF945D2B1653437240B7 /* OnboardingContentViewController.h */, - 077F96B6080AFA56C57756CC1B6BFED2 /* OnboardingContentViewController.m */, - 548A620D1A26A399B464DDF4F7A1958C /* OnboardingViewController.h */, - 65A70CC4CB141D4EBFC59168958A4DE4 /* OnboardingViewController.m */, - B739A5070D5C4B56A922DA9AA2F6FDA2 /* Support Files */, - ); - path = Onboard; - sourceTree = ""; - }; - AF04E61917873BE161C0E528F9997CB2 /* FoundationIcons */ = { - isa = PBXGroup; - children = ( - AFFFE59B2788F7707E3E36955E993A6F /* FAKFoundationIcons.h */, - 0C65E5B0860811BF9D473D2B7234CAA5 /* FAKFoundationIcons.m */, - 66CC2A3436B31C792911323BC313A45C /* Resources */, - ); - name = FoundationIcons; - sourceTree = ""; - }; - B254B7787436F7BD70E25F37B6832E64 /* Crashlytics */ = { - isa = PBXGroup; - children = ( - FDAEC7656ABFAAAED8F52E8FC5660FCE /* Frameworks */, - ); - path = Crashlytics; - sourceTree = ""; - }; - B738B5A1D371912FFA3A824EF552DFE6 /* Resources */ = { - isa = PBXGroup; - children = ( - 7FCECEA5B329F642D7DDE7E9C1161556 /* Media.xcassets */, - ); - name = Resources; - sourceTree = ""; - }; - B739A5070D5C4B56A922DA9AA2F6FDA2 /* Support Files */ = { - isa = PBXGroup; - children = ( - 68453EF70623263E54D4B92B5824D712 /* Info.plist */, - DD31E0F3FF42AFE3E003E0951C596E83 /* Onboard.modulemap */, - 4415036062D30932A796432DA868BF74 /* Onboard.xcconfig */, - B524783A143F71DFD4F4E48E7D90C37A /* Onboard-dummy.m */, - 6DBA4A6F0B23CE4BE713AC25EEB362F8 /* Onboard-prefix.pch */, - F7FC6CC300F147F92904D63290983456 /* Onboard-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Onboard"; - sourceTree = ""; - }; - BD6000722D809913006D5BA62223A316 /* Support Files */ = { - isa = PBXGroup; - children = ( - B546106C99B5935D62E0EDA9C89C646F /* Info.plist */, - 16B9F126247EF67C8E784A58684997D4 /* SCLAlertView.modulemap */, - F98C0F7FB18743C27FA3FD01E8886170 /* SCLAlertView.xcconfig */, - 4151BD174057BBEF8FDBFFB30DD54C24 /* SCLAlertView-dummy.m */, - 173F81A6134A7E817D9E2FDF0A396D0F /* SCLAlertView-prefix.pch */, - 117385C631C97B0A140C7BAB9815BC8B /* SCLAlertView-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SCLAlertView"; - sourceTree = ""; - }; - BE761D657BCF5CDE0F9E0B0AD30349CD /* Icons */ = { - isa = PBXGroup; - children = ( - F1A5D3D018E991DF04506D4F2E409148 /* MRIconView.h */, - F0040F5CDC1B8B85F16675C3952BF53C /* MRIconView.m */, - ); - name = Icons; - sourceTree = ""; - }; - C4E4CC1BBF0BCA02123F21ACAB86F62B /* ActivityIndicator */ = { - isa = PBXGroup; - children = ( - BF6DD70BE4A19BCE9C1B986D54AC5C90 /* MRActivityIndicatorView.h */, - 9A479638F18BC4159CD4A162894127C4 /* MRActivityIndicatorView.m */, - ); - name = ActivityIndicator; - sourceTree = ""; - }; - C810E26AE96C7DB0C2EBED0250408860 /* Support Files */ = { - isa = PBXGroup; - children = ( - 7800A05E739CBDDE2863D062784E17A4 /* Info.plist */, - B629914A247BF9C11D4E2440CFEBD270 /* SwiftTweaks.modulemap */, - 7708BD7415BE05A3D043D8D649E527FB /* SwiftTweaks.xcconfig */, - 3A1DBD7224FF5E1783B1C86C2AB99816 /* SwiftTweaks-dummy.m */, - 1E6194A20C15CB11C0ECDE11F0934EAD /* SwiftTweaks-prefix.pch */, - 29A163B5F0893795F7872B422D5A89A4 /* SwiftTweaks-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftTweaks"; - sourceTree = ""; - }; - CB0FE9C5AFE3CE2B6297A22BD0E3F2E1 /* Support Files */ = { - isa = PBXGroup; - children = ( - 22340697ED9176CA38E1B91FAC17833A /* Info.plist */, - 69B6EC74EEF804F1CCAD5A532B0EE3CD /* PermissionScope.modulemap */, - 6627FEC475D21527AC29B5014EC906B7 /* PermissionScope.xcconfig */, - 7F9F0CABD8AAE5E2035A6316FC2F9FA3 /* PermissionScope-dummy.m */, - DD7D485A9905B86916556EFC722F6BEC /* PermissionScope-prefix.pch */, - F513CD12D6CE1CEB681A67342D80B7A3 /* PermissionScope-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/PermissionScope"; - sourceTree = ""; - }; - E108E1A725BBBEEF6B7B22FC0CE9C045 /* Support Files */ = { - isa = PBXGroup; - children = ( - A2C38CF28E875608DDF403BE51CBA855 /* Info.plist */, - 30D41B656C99462D9F4D00E14498D6B3 /* MRProgress.modulemap */, - 5D2A0207C1930855687C529BC2244128 /* MRProgress.xcconfig */, - 0A8F16B1600A0AB85750BF471BD387E4 /* MRProgress-dummy.m */, - 46597FA5EAF275C090D9B4273EEE0D53 /* MRProgress-prefix.pch */, - 41F38C1AA679DF04C7447321FF8B8A05 /* MRProgress-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/MRProgress"; - sourceTree = ""; - }; - E1ACB217C2F3CF296C59F36793D18C65 /* Support Files */ = { - isa = PBXGroup; - children = ( - B335A0A5288AD20291BD01AD0919A2E9 /* Info.plist */, - 98600BEC33ADC75E6D2D9D95D2BC54B5 /* ResourceBundle-SwiftInAppPurchase-Info.plist */, - E32E7E50509167D2844359D8DCF736DD /* SwiftInAppPurchase.modulemap */, - 4A68B533C75C155FA0480BE3E8007693 /* SwiftInAppPurchase.xcconfig */, - 800DC6EE597AB4A83203896E40F16190 /* SwiftInAppPurchase-dummy.m */, - F73E5D6629238B823C31845A1BAAF430 /* SwiftInAppPurchase-prefix.pch */, - A3457F1FC69AA54BCBEF35F1B158D039 /* SwiftInAppPurchase-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftInAppPurchase"; - sourceTree = ""; - }; - E38E2E8EBA0D4D3A53C9C1CAF885A936 /* SwiftyJSON */ = { - isa = PBXGroup; - children = ( - BD209D5A87DE1524F3873D0C9A22F11F /* SwiftyJSON.swift */, - 3231EA1DCD1C1DFC95BBDA7754FCE05A /* Support Files */, - ); - path = SwiftyJSON; - sourceTree = ""; - }; - EAA53A3CC006E0631ACFB82E6FFBFBA0 /* IonIcons */ = { - isa = PBXGroup; - children = ( - 8BD7A27382116A1BC71A4C5B2D59C2F3 /* FAKIonIcons.h */, - 5463B664413144D2EDFF39DBDA74EC6D /* FAKIonIcons.m */, - 3404DFE98012D812CCC9068C777B5DF5 /* Resources */, - ); - name = IonIcons; - sourceTree = ""; - }; - EC1703CA005D97071DA305D6AEDDB221 /* FSCalendar */ = { - isa = PBXGroup; - children = ( - EF812FB579F24D01A081FBE04EFB98ED /* CALayer+FSExtension.h */, - 23463BA6B27E8D9CB734A84F68F678B9 /* CALayer+FSExtension.m */, - 4E36B1C494135FAF52B477E9E07EA99A /* FSCalendar.h */, - DBF9579287A757FEABC9C9D7D379C907 /* FSCalendar.m */, - E265939F188BA3C70277F6560858C0F9 /* FSCalendar+IBExtension.h */, - D97FB9255C36E255BC8927C3A6E463ED /* FSCalendar+IBExtension.m */, - 9723CB2FC157980453D10224CEE0430E /* FSCalendarAnimator.h */, - 1A9B88BD886F9C7651F805A3DBCACC97 /* FSCalendarAnimator.m */, - 096E3E2ECB4B674FD113D8026B00053A /* FSCalendarAppearance.h */, - B8B5CF40640D21C440172236DBD428C2 /* FSCalendarAppearance.m */, - C557B9522D977500DD2538C1D01D753E /* FSCalendarCell.h */, - 569706BE3B48E5ADE03CE8CC5AE907D2 /* FSCalendarCell.m */, - F708B4EA38504B2CCFC0DB52F22A48E1 /* FSCalendarCollectionView.h */, - 8205CA4F95C78A184EBC77D2E0B2ED1B /* FSCalendarCollectionView.m */, - BD65FFE029BD5131BE61C0203190CE62 /* FSCalendarConstance.h */, - BF2CFCDC407A045CB56009AD862C15E3 /* FSCalendarConstance.m */, - 5AC606C96D46045AC70EC388375A7BD5 /* FSCalendarDynamicHeader.h */, - B7C966C5C4F0D4B0212EBAB97F455DDF /* FSCalendarEventIndicator.h */, - F8B6FABB6260EFAB6BE019E1F5E5F821 /* FSCalendarEventIndicator.m */, - A5C697A745766C38BAF738D2E56E9007 /* FSCalendarFlowLayout.h */, - 1B5895B5346264B522236A218B24E021 /* FSCalendarFlowLayout.m */, - B308A9AA2A2121A6C76951E22E829A61 /* FSCalendarHeader.h */, - 83C00FF983D24287B17F2A761C657BB6 /* FSCalendarHeader.m */, - C8D0A9C864A81B0108B45BBA2C7925C5 /* FSCalendarStickyHeader.h */, - 32CA1C89376BDA8A4BA761521A0973B4 /* FSCalendarStickyHeader.m */, - C87940E53F694BE749F7FA882590EBD0 /* NSDate+FSExtension.h */, - C090C0E8E1C05EFB8A9BF4B2D5B7E33B /* NSDate+FSExtension.m */, - 0E7C6A5429108261D8B83820BD32F246 /* NSString+FSExtension.h */, - F11B98FD6A0C718D5DA609DF7EE5B2DC /* NSString+FSExtension.m */, - B72324C3C9166605A2805A2A5E7646A9 /* UIView+FSExtension.h */, - 6F3EA4423BD406CFC32F8401D8B98AD0 /* UIView+FSExtension.m */, - 0F880AE10B1BAFBC705358A03E0C3427 /* Support Files */, - ); - path = FSCalendar; - sourceTree = ""; - }; - EC988B279AD18D8F7F09153BC0F7ABBD /* MRProgress */ = { - isa = PBXGroup; - children = ( - C5BB0113B0ACB514D4B71FA4E831AE43 /* MRProgress.h */, - C4E4CC1BBF0BCA02123F21ACAB86F62B /* ActivityIndicator */, - 41A75A3C39E25FB95713BE1D90EF0270 /* Blur */, - 4BE58E8D1F442480F0FC22E04DFCFAD1 /* Circular */, - 6AFB93D3645CEFD597B33DA2AC252B46 /* Helper */, - BE761D657BCF5CDE0F9E0B0AD30349CD /* Icons */, - 04BFA460213DCA7809FD8E06B7A52B29 /* NavigationBarProgress */, - FFF57E7AC55D18BA7F8ADE31B75DC9D1 /* Overlay */, - 82F5D57805F9F717D0D18128787ECFD8 /* ProgressBaseClass */, - 3991EBF7E462A2A5F958B91A888F3EAF /* Stopable */, - E108E1A725BBBEEF6B7B22FC0CE9C045 /* Support Files */, - ); - path = MRProgress; - sourceTree = ""; - }; - ED19F31CB13D2470064C9CE18C5FDB9D /* FontAwesome */ = { - isa = PBXGroup; - children = ( - EB412DCE625C4C5EC1F4B45499E42B49 /* FAKFontAwesome.h */, - 07D44E5A2B1ED2B0337E9A4AD9067EEC /* FAKFontAwesome.m */, - 505BC6CEC62C1E234338798688844D95 /* Resources */, - ); - name = FontAwesome; - sourceTree = ""; - }; - ED39CB16C8FCD2AAE6BB59AE3A417007 /* FontAwesomeKit */ = { - isa = PBXGroup; - children = ( - D41FA0747FB93DA0D9215B7940ACF1BD /* FontAwesomeKit.h */, - 7D3857F50F33CF2902FE1448FAA281D1 /* Core */, - ED19F31CB13D2470064C9CE18C5FDB9D /* FontAwesome */, - AF04E61917873BE161C0E528F9997CB2 /* FoundationIcons */, - EAA53A3CC006E0631ACFB82E6FFBFBA0 /* IonIcons */, - A0ABA72059E70E44B38902CF42ED9765 /* Material */, - 8D8A8818FC92DA6F6C6D8FF3ED3A9869 /* Octicons */, - 68744116F38BBF5891A8C8895D6F5F08 /* Support Files */, - 11401999D4E3D7450C59207A83C60F26 /* Zocial */, - ); - path = FontAwesomeKit; - sourceTree = ""; - }; - F430AB03E762F26B5E08F56D71629DD6 /* AKPickerView-Swift */ = { - isa = PBXGroup; - children = ( - 576EA2DCE7FC1EBA169E434D12609F9A /* AKPickerView.swift */, - 6577A0598223D1CBF6A8C101F4F6DF25 /* Support Files */, - ); - path = "AKPickerView-Swift"; - sourceTree = ""; - }; - F4CDA5FA9197A41E0081E84F932906EB /* Frameworks */ = { - isa = PBXGroup; - children = ( - 87652F10936F84BF1FF1D288C63826B9 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - FDAEC7656ABFAAAED8F52E8FC5660FCE /* Frameworks */ = { - isa = PBXGroup; - children = ( - 20D109B02F78A11AD7B77031C3804269 /* Crashlytics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - FFF57E7AC55D18BA7F8ADE31B75DC9D1 /* Overlay */ = { - isa = PBXGroup; - children = ( - 30BBB37269D011A14B4F6205299257E7 /* MRProgressOverlayView.h */, - 2AE3F8157087AA2025B0191725E87696 /* MRProgressOverlayView.m */, - ); - name = Overlay; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 031C742796D4BE1C43EAB3D494EA4F6B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 229DE6B8FE392023C9B9A74F3193F65D /* INTUHeadingRequest.h in Headers */, - 1D2EFA0B86C5816E844D2436C2B5EBA7 /* INTULocationManager+Internal.h in Headers */, - 10AA9E0562348025E925BDD4096992F4 /* INTULocationManager-umbrella.h in Headers */, - 001A845B74D148EBB6F18AE5742E2D17 /* INTULocationManager.h in Headers */, - 636FA0BF7676E4972B8843F989D305F9 /* INTULocationRequest.h in Headers */, - 7C5E58BD5FB3BCDD5AD14F713E251CC8 /* INTULocationRequestDefines.h in Headers */, - 237B3AC32C4A07FFE56EFB3E26E90013 /* INTURequestIDGenerator.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 08DA4665F97C11B2674E2245E4965358 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - EE442E93E5BBC6AB805C3E1B2D3482CA /* MRActivityIndicatorView.h in Headers */, - 5F7F40B822116B9DABC6B73B8EBE338B /* MRBlurView.h in Headers */, - 3084B72EA21046D2E806C9661E8FF54E /* MRCircularProgressView.h in Headers */, - 89CE4E0D4BEDD88C4B05A9D54526CE7E /* MRIconView.h in Headers */, - 75C2EC4E91C632BA530B5B1E60DC4AEE /* MRNavigationBarProgressView.h in Headers */, - 811BF3A1EDF9B595901E2FC404641EE7 /* MRProgress-umbrella.h in Headers */, - 7CFF3D11D2A80054659CB09F8D17A1A1 /* MRProgress.h in Headers */, - 788907A105CE1BC948CBF1DC3F0099CD /* MRProgressHelper.h in Headers */, - 52A5E8263E7C91DDAB94F66A5364369B /* MRProgressOverlayView.h in Headers */, - BD9F0543F7B4F444CA4A0948C0F03070 /* MRProgressView.h in Headers */, - 81694B31763640FB3743C90CF3547673 /* MRStopableView.h in Headers */, - A28930DA66986E8D161FF256CFA2E2E9 /* MRStopButton.h in Headers */, - BDC0281540324E5A27D70A10BD529254 /* UIImage+MRImageEffects.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A3CE55A8F617B7C89E10782CFB89CD5 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 74DA1BB41C1D7C0DD17F213B20E23978 /* SwiftyJSON-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1EC195E5817ED54F7E7069AA5ABCF9EB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0054438F822C8DE3B23E57F945C6733D /* SwiftInAppPurchase-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 200426898CFBEF623EEC0EC3811ABC89 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 717E6DF8C0702567A757898EEC4C07F7 /* Localize-Swift-umbrella.h in Headers */, - D625A38F982BA2BB58D9FF6E58614806 /* Localize_Swift.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3A91A1781435D2F6E292FCCF5F5356C1 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2F903EAED6109D3BF3F180DDFD24D62A /* AsyncSwift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 46206BDD9E1277EB08C090C8CF9B08A5 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - BEE56A40F61CD4315BEF518972E7E3AE /* Pods-tpg offline-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 52DAD6EFDB135C7CD627E448E4D1D854 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 47DE477BA301030E4897DBAF3C6F691A /* SwiftDate-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 59890BED3AF6CEBA2D3BC9A5C45EFBA4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7EC9330EBDF327051B12E42AE8741B6E /* Chameleon.h in Headers */, - 738E4E0555CE3C233C400AE87B9887E4 /* Chameleon_.h in Headers */, - 097AE4014349090D14C6C5637F8A3464 /* ChameleonConstants.h in Headers */, - 4A0E71E9E2BD86AA8CB6077A95CDC034 /* ChameleonEnums.h in Headers */, - 64C89D98B9D3B9C57971E1E137233980 /* ChameleonFramework-umbrella.h in Headers */, - 5CCC419BB423F48192FBA3C7D7D6B7DA /* ChameleonMacros.h in Headers */, - FF4A8EFE1154C1FFD58B48E978298871 /* NSArray+Chameleon.h in Headers */, - B71968ADC80D9CA74C57959B609E46F6 /* UIAppearance+Swift.h in Headers */, - C8F191C4FA3530AAEBAD2DDE2604DCF2 /* UIButton+Chameleon.h in Headers */, - CFB8C96C7D3F7331E409D296466B923A /* UIColor+Chameleon.h in Headers */, - 4194C2418EEF62E01342A820B5EF9C71 /* UIColor+ChameleonPrivate.h in Headers */, - 7708E07C85FF6C2BC400C15CCDB7EB1C /* UIImage+ChameleonPrivate.h in Headers */, - 00967A34C0778275E41D1CBA32E398F8 /* UILabel+Chameleon.h in Headers */, - 6FFDAD2F800BC27FCF40E92B71D88CF3 /* UINavigationController+Chameleon.h in Headers */, - D36BC9B0C925A5244E16EE70E4809EE6 /* UIView+ChameleonPrivate.h in Headers */, - AF9FDFE994A206795619E469B68C614E /* UIViewController+Chameleon.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 699C5E88186C866DBB1E27AFE83237FE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3E218859B14210B9FC24C75E5A9D7BDF /* SCLAlertView-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 848CAA779F22E44C4E79C91F9A46DA84 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C60C0BAB1840ED78E320BF832EB7D90F /* CALayer+FSExtension.h in Headers */, - 5C88EB02C6D789D20C6298CF77049112 /* FSCalendar+IBExtension.h in Headers */, - DE0A4E10ED1E104BF1DEF81453A6EBC8 /* FSCalendar-umbrella.h in Headers */, - F7944D091AD240B80D98066395A99B95 /* FSCalendar.h in Headers */, - E773A27D47BC2080FB249FBD4513AB1C /* FSCalendarAnimator.h in Headers */, - D603EE78D5DBF389EC429A33757BFF5C /* FSCalendarAppearance.h in Headers */, - 9522DA78F08119D9EAFA3E30698BDE41 /* FSCalendarCell.h in Headers */, - 11F20D807E923A4DBE6CDFDA9A73C229 /* FSCalendarCollectionView.h in Headers */, - 2FCE1C00460CF74F457E0093A676A834 /* FSCalendarConstance.h in Headers */, - CEBADA794147C66483B0C205EDED2F4B /* FSCalendarDynamicHeader.h in Headers */, - F7317B2BAF77EC9AF9422499C1D467AA /* FSCalendarEventIndicator.h in Headers */, - 6983260381111B42F335961452EEE2B0 /* FSCalendarFlowLayout.h in Headers */, - 0E44012DD097816D61C9AF7B4D509469 /* FSCalendarHeader.h in Headers */, - 7FE3ECFE7843570AAFAD9216E3546026 /* FSCalendarStickyHeader.h in Headers */, - 39582F80068C0DEF708DEE01B8C053F7 /* NSDate+FSExtension.h in Headers */, - B08294E2247DE35943C7180A647EE72D /* NSString+FSExtension.h in Headers */, - C17B63D63425ED26125A32CC2E15B2A6 /* UIView+FSExtension.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8E8A1B985504D5226697EB8E0FD7267C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - BE325A5869FCE249947C11DED959C6A0 /* AKPickerView-Swift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8FCCED683C001C0785AD28BD3880FA84 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 40941F6499CC47BDB600BE4C748BD089 /* PermissionScope-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9A19DE11B661EB726D46FF762B182054 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9712567144195F679ABA719D41E4B5D1 /* EFCircularSlider-umbrella.h in Headers */, - B3E855DC27E787D79472053C4DBA94B6 /* EFCircularSlider.h in Headers */, - 2A356D564FA2B8D64F7081E23DD8A424 /* EFCircularTrig.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9FC3AB2929BCDFA057C438E81756087C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 5808D58D1830247ACB009488726E1B06 /* NVActivityIndicatorView-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AB95512F3C299EEC15B2A0067AE63AED /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 743D63D3EF95A875E73D332BC60C60BE /* FAKFontAwesome.h in Headers */, - EE07C99FAD103050F7920FECE45C07D2 /* FAKFoundationIcons.h in Headers */, - 7F3A0CA4D0F80DC61F79C17B9A13B09D /* FAKIcon.h in Headers */, - 4B799D845B4D8A77F7BBE9639B18FC4F /* FAKIonIcons.h in Headers */, - AEA72DCE63F6B01478EF51120E64A734 /* FAKMaterialIcons.h in Headers */, - 0FBD5E2C6A03099EC2D8BC9F1FCCE00C /* FAKOcticons.h in Headers */, - 9E691E14C1B77ED5D56D132384AE4E8D /* FAKZocial.h in Headers */, - 8D93F27DE77DEE3CDF1306A5B38A037C /* FontAwesomeKit-umbrella.h in Headers */, - 63FC2F696C591B06128339C15CBF70D9 /* FontAwesomeKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B19E94B10D550DC02B1D33FCAD52BA8B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - CEDB724342476CBE063FFB437D7EE973 /* DGRunkeeperSwitch-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D3D6EBDB0FABF667D4C50776657BCBE8 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E9868ED09710D93318015E60BA8486E9 /* Log-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DD8D1A1E3CD8E497AC51AF94060F1931 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 8E55107B59A92876B44B690F74B121E7 /* Onboard-umbrella.h in Headers */, - EF4066B0EEC6CF4D847A4C6810886BDA /* OnboardingContentViewController.h in Headers */, - 45B28CDACD362CEF2CA6012BA0015DB6 /* OnboardingViewController.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EFDF3B631BBB965A372347705CA14854 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9469DF81ECB494E84675969B5E13374C /* Alamofire-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F5F8A7CB56184C7BC34D1E6F3E5D2A87 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 76D105B81BEFA8C655354721EA448746 /* SwiftTweaks-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F60BC667495022BB71DE0C146D3C99EA /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 20C5E87C1DF07DEA65CD74B8D07D6D1C /* DGElasticPullToRefresh-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 05FE1F0D2B1FA1DC3263A13FCD68A0C1 /* SwiftInAppPurchase */ = { - isa = PBXNativeTarget; - buildConfigurationList = B2B2EE168F7F62F16521D8A6F4F147C6 /* Build configuration list for PBXNativeTarget "SwiftInAppPurchase" */; - buildPhases = ( - B83948D1E5C8C5920D557445EDB93F7D /* Sources */, - 62C08C6DAE03909FE7943AFE35640149 /* Frameworks */, - 607559C57C2FC1AA24206DD71F3B7F84 /* Resources */, - 1EC195E5817ED54F7E7069AA5ABCF9EB /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - A69BCD1917CC59B2D038EF692BEF2520 /* PBXTargetDependency */, - ); - name = SwiftInAppPurchase; - productName = SwiftInAppPurchase; - productReference = 8458F7E361AFE5DA87CBCA9E42C4E188 /* SwiftInAppPurchase.framework */; - productType = "com.apple.product-type.framework"; - }; - 115824B7CB2E76E5ACB836A251E79404 /* DGElasticPullToRefresh */ = { - isa = PBXNativeTarget; - buildConfigurationList = 74DF8A9CBE6EAEB8C19105D047645443 /* Build configuration list for PBXNativeTarget "DGElasticPullToRefresh" */; - buildPhases = ( - 3943D764C0D525CFAF94F943648E17BE /* Sources */, - 9E138A11AB568FDD962F892987F6F048 /* Frameworks */, - F60BC667495022BB71DE0C146D3C99EA /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DGElasticPullToRefresh; - productName = DGElasticPullToRefresh; - productReference = 021DC339F4390779FFA6D901574617AF /* DGElasticPullToRefresh.framework */; - productType = "com.apple.product-type.framework"; - }; - 32227DE82A25F38D0FB6FD6A6B51574B /* SwiftTweaks */ = { - isa = PBXNativeTarget; - buildConfigurationList = 56E3140E772A6966FED2655C4F34E03D /* Build configuration list for PBXNativeTarget "SwiftTweaks" */; - buildPhases = ( - 2CD72483291FE95724AD80B77F3B20A1 /* Sources */, - B7C95AD8A7D52792F72BCD0DD8FBF0FF /* Frameworks */, - E68D169EECB0E9DBB79C284979DF123B /* Resources */, - F5F8A7CB56184C7BC34D1E6F3E5D2A87 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SwiftTweaks; - productName = SwiftTweaks; - productReference = 30E6AE2E1BD4C674401E6B317147249B /* SwiftTweaks.framework */; - productType = "com.apple.product-type.framework"; - }; - 4D48BE2E1C03FDDFE91191F0714E9095 /* SwiftyJSON */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50EBC08458F0CC5D265A8C4A69301D47 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */; - buildPhases = ( - 02023C834096EAEA09BE3BF1F35B1117 /* Sources */, - 6C19B8B0FB8302776225399BC3EDA931 /* Frameworks */, - 1A3CE55A8F617B7C89E10782CFB89CD5 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SwiftyJSON; - productName = SwiftyJSON; - productReference = FF33565EF115E0952908914E63A0E0C0 /* SwiftyJSON.framework */; - productType = "com.apple.product-type.framework"; - }; - 4E3BBCA6078A6AAAD053C911572F0B0C /* Localize-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7968F6B30DE34885335567998D7E4853 /* Build configuration list for PBXNativeTarget "Localize-Swift" */; - buildPhases = ( - ED9693054C5D644ECD60224CD91698D6 /* Sources */, - 271BCC51F0050F9CAD885B0734030DCE /* Frameworks */, - 200426898CFBEF623EEC0EC3811ABC89 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Localize-Swift"; - productName = "Localize-Swift"; - productReference = 871E25AA944D15C774077F641D876D1F /* Localize_Swift.framework */; - productType = "com.apple.product-type.framework"; - }; - 5172ACAB7FEA22813859DC97CA0AA16F /* ChameleonFramework */ = { - isa = PBXNativeTarget; - buildConfigurationList = 48E21BC30675BE10E5FB0192B03002EA /* Build configuration list for PBXNativeTarget "ChameleonFramework" */; - buildPhases = ( - A007306A9F7EAF30B21BFDB4E741628B /* Sources */, - FC1A73E30C8322A70D5DCD63B04CAE84 /* Frameworks */, - 59890BED3AF6CEBA2D3BC9A5C45EFBA4 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ChameleonFramework; - productName = ChameleonFramework; - productReference = A526B7120A05747404EE52F2AC987A56 /* ChameleonFramework.framework */; - productType = "com.apple.product-type.framework"; - }; - 5AF1C612F4CDA296FC4C82D9BD0BD25D /* INTULocationManager */ = { - isa = PBXNativeTarget; - buildConfigurationList = 71C202ED706116B59F510C850DABC016 /* Build configuration list for PBXNativeTarget "INTULocationManager" */; - buildPhases = ( - EA794BFDB9159F5E73606E92A28BA8AF /* Sources */, - 9CFB3E5D593071280A4928E6A3845B20 /* Frameworks */, - 031C742796D4BE1C43EAB3D494EA4F6B /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = INTULocationManager; - productName = INTULocationManager; - productReference = 1F36DA1EE58BB1A91340DB0685A26671 /* INTULocationManager.framework */; - productType = "com.apple.product-type.framework"; - }; - 626D49AD18621B0A3059EE726B27AE89 /* NVActivityIndicatorView */ = { - isa = PBXNativeTarget; - buildConfigurationList = F4F8A67C8FCC5B2A6025788DA6595442 /* Build configuration list for PBXNativeTarget "NVActivityIndicatorView" */; - buildPhases = ( - 45B8928705B1C80CD136C427F025726C /* Sources */, - 0C695BF3402437CDFF170B86B302914B /* Frameworks */, - 9FC3AB2929BCDFA057C438E81756087C /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = NVActivityIndicatorView; - productName = NVActivityIndicatorView; - productReference = 39680D13CAA4BAEA00B63EE9BDDFA403 /* NVActivityIndicatorView.framework */; - productType = "com.apple.product-type.framework"; - }; - 79C040AFDDCE1BCBF6D8B5EB0B85887F /* Alamofire */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3CFB42910790CF0BDBCCEBAACD6B9367 /* Build configuration list for PBXNativeTarget "Alamofire" */; - buildPhases = ( - 95CC2C7E06DC188A05DAAEE9CAA555A3 /* Sources */, - B1729F851F648EC60EE93CDB3C8BAEAD /* Frameworks */, - EFDF3B631BBB965A372347705CA14854 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Alamofire; - productName = Alamofire; - productReference = 23A34AA5CD92A090D44B23774301EF02 /* Alamofire.framework */; - productType = "com.apple.product-type.framework"; - }; - 7EC1417298041145E9B1A4C7B395C179 /* AKPickerView-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = CA4CCD706EC7E8169DCCA8D9AFEDB127 /* Build configuration list for PBXNativeTarget "AKPickerView-Swift" */; - buildPhases = ( - 9DA31D67DD51AB1E170328CC579FF319 /* Sources */, - 0C3240922851CEEC70B722E9B9D6B6AA /* Frameworks */, - 8E8A1B985504D5226697EB8E0FD7267C /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "AKPickerView-Swift"; - productName = "AKPickerView-Swift"; - productReference = D67197B83D7A41AA7843FAF48C376931 /* AKPickerView_Swift.framework */; - productType = "com.apple.product-type.framework"; - }; - 8F17DD5BDDF65F3AB77F350BE14632BE /* EFCircularSlider */ = { - isa = PBXNativeTarget; - buildConfigurationList = E22E022678FF41228D1CF045A77C6D61 /* Build configuration list for PBXNativeTarget "EFCircularSlider" */; - buildPhases = ( - F3DBC8682135AF5B36382E304C0CEF08 /* Sources */, - ED30B7DD7B886B42115F9F24B1029048 /* Frameworks */, - 9A19DE11B661EB726D46FF762B182054 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = EFCircularSlider; - productName = EFCircularSlider; - productReference = 8D5A788BE31AE67A2F682117054D11BA /* EFCircularSlider.framework */; - productType = "com.apple.product-type.framework"; - }; - 99467F259B31FBA8DDB95086022B4977 /* FontAwesomeKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = C5FE88605B8796B643ABD6FE18770299 /* Build configuration list for PBXNativeTarget "FontAwesomeKit" */; - buildPhases = ( - 03898318E84FF14F797A2ED995DAA321 /* Sources */, - 94E3A72588376F13003ACE60CA6B6535 /* Frameworks */, - AB95512F3C299EEC15B2A0067AE63AED /* Headers */, - 258D59FBC0E4492363937A4FBCE41E6B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FontAwesomeKit; - productName = FontAwesomeKit; - productReference = 492BC27888460D7791C0AEF0F65916BF /* FontAwesomeKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 9CAAB2A1855182D992E2945796B03B4D /* MRProgress */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2E95DB18B92B10FFD1F819FA2896C284 /* Build configuration list for PBXNativeTarget "MRProgress" */; - buildPhases = ( - 2EA167F2369E9F84FB1F8E9B272C5798 /* Sources */, - 308EB9B41341FEAF006009FC79D74EC8 /* Frameworks */, - 08DA4665F97C11B2674E2245E4965358 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = MRProgress; - productName = MRProgress; - productReference = 7E7F7EEDE4A6336989F738C08CD60BE7 /* MRProgress.framework */; - productType = "com.apple.product-type.framework"; - }; - A59A93B402011A0E65D47D9CF441BB2B /* SwiftDate */ = { - isa = PBXNativeTarget; - buildConfigurationList = 51B5211356B608A5EF08A7E09EC4C958 /* Build configuration list for PBXNativeTarget "SwiftDate" */; - buildPhases = ( - 53AAE1D43F03BF92F8B6BEA69B45CDDD /* Sources */, - A327B85222751A2A79801B77F7413CBF /* Frameworks */, - 52DAD6EFDB135C7CD627E448E4D1D854 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SwiftDate; - productName = SwiftDate; - productReference = 617E9DE70412934B3F4398BDEC4D1974 /* SwiftDate.framework */; - productType = "com.apple.product-type.framework"; - }; - AC21AA5E85F7C4BF354E6D4D7FC2D0DF /* SwiftInAppPurchase-SwiftInAppPurchase */ = { - isa = PBXNativeTarget; - buildConfigurationList = CECA1B458E504A6B3B429C72B880EDDB /* Build configuration list for PBXNativeTarget "SwiftInAppPurchase-SwiftInAppPurchase" */; - buildPhases = ( - 12296A0944F23DE01D8DC16B063A0CA0 /* Sources */, - FA56DE5702BE7E48B54172D194A10B16 /* Frameworks */, - 685B840E92D97614C16B3F6C1F602BE3 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SwiftInAppPurchase-SwiftInAppPurchase"; - productName = "SwiftInAppPurchase-SwiftInAppPurchase"; - productReference = 6AC0D26FE0B5388F306CF6D5FE85B74D /* SwiftInAppPurchase.bundle */; - productType = "com.apple.product-type.bundle"; - }; - B02222757DD07A46E150C0E11274C937 /* Pods-tpg offline */ = { - isa = PBXNativeTarget; - buildConfigurationList = B027ABEC44F8279DC90E69916140CC9D /* Build configuration list for PBXNativeTarget "Pods-tpg offline" */; - buildPhases = ( - E2EB87E0D2F0FB0092B9FB7AC53CBB51 /* Sources */, - DA5786DE6FF2AA0BFF44C6FC0E5374F6 /* Frameworks */, - 46206BDD9E1277EB08C090C8CF9B08A5 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - 1887F9D4CC484786BAA41A4ADFBB0D09 /* PBXTargetDependency */, - A90D790AB5C6A7AC187E6417D383780B /* PBXTargetDependency */, - F05D1026C054269EDF18BB8A94FC8EBE /* PBXTargetDependency */, - E1BE865B5929574A1BCAC2B8BD97915F /* PBXTargetDependency */, - C8B2190BC94C52A6390C0D75E7FC3B6C /* PBXTargetDependency */, - 22AB82AEFD6C1967F6F53D85302D93FE /* PBXTargetDependency */, - 0A635C77AB694975B1A17F2D130FA737 /* PBXTargetDependency */, - 169638438C8E7D2B24583E7A5ACC6F6A /* PBXTargetDependency */, - 5C91A5E75C4A7B99E084C5C87A7F9776 /* PBXTargetDependency */, - 082E9EAC74507BCF47F1478C6805915E /* PBXTargetDependency */, - D0AA47C2F622C56B94C8B35CD154FED0 /* PBXTargetDependency */, - 67D6F5469BC0AD919AFE9C427E5975DB /* PBXTargetDependency */, - 58DD68BBA716B6C718EF82174EB7FCC5 /* PBXTargetDependency */, - 1D48C81583D5E314681CCBC984BF8BC7 /* PBXTargetDependency */, - 690F7480E217D1C455844D1623357F05 /* PBXTargetDependency */, - 1A14B5FAA6F846879917EF9DA430E63D /* PBXTargetDependency */, - 560AB38E0A3FE573CC4134B00AF9A72C /* PBXTargetDependency */, - 36E0D33A6E6DDE1902326E670C10B26C /* PBXTargetDependency */, - B82E4CAB9749E6AF2B6163BD246F5241 /* PBXTargetDependency */, - 90AB9D544AED9DE63DFB47B27CA4E224 /* PBXTargetDependency */, - F9EE8CA2680E1351D20E16CE854C7AB6 /* PBXTargetDependency */, - ); - name = "Pods-tpg offline"; - productName = "Pods-tpg offline"; - productReference = 975C39377A67B1703B31E9F792F767D7 /* Pods_tpg_offline.framework */; - productType = "com.apple.product-type.framework"; - }; - B2619B2813D910DBC9FE9714E0788D55 /* FSCalendar */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7E66DDA4D9ACEE4559FE14589C5F582B /* Build configuration list for PBXNativeTarget "FSCalendar" */; - buildPhases = ( - 4C57AC1B079DBD5A5910873EA4FE09F2 /* Sources */, - 24A6EBA9EAE5017F65E804F351F8C1E0 /* Frameworks */, - 848CAA779F22E44C4E79C91F9A46DA84 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FSCalendar; - productName = FSCalendar; - productReference = 5E8413B979EE016E4F0B3B4B854D1CE3 /* FSCalendar.framework */; - productType = "com.apple.product-type.framework"; - }; - B7C99010DEE22AAAB76BCF07F093651A /* Log */ = { - isa = PBXNativeTarget; - buildConfigurationList = 71DB2417F54CCFE971489719124713F2 /* Build configuration list for PBXNativeTarget "Log" */; - buildPhases = ( - 681F809F3D5CB50C69EFC0DC45DBA081 /* Sources */, - D1D996B64953C04FC8527BA7AA0B0504 /* Frameworks */, - D3D6EBDB0FABF667D4C50776657BCBE8 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Log; - productName = Log; - productReference = BA8C003F8898DEC00BAE37641DB9CA54 /* Log.framework */; - productType = "com.apple.product-type.framework"; - }; - B8A49B21FD9EF99E936D68AE82846108 /* SCLAlertView */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9391EE566C183141B0AABD9AA075C5CF /* Build configuration list for PBXNativeTarget "SCLAlertView" */; - buildPhases = ( - B039E7706C2C02F0900792B275A8C798 /* Sources */, - CA8D01D44A8DD61CC34CB9D6A3D9B272 /* Frameworks */, - 699C5E88186C866DBB1E27AFE83237FE /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SCLAlertView; - productName = SCLAlertView; - productReference = 9067483368E8900844AFD9014A739056 /* SCLAlertView.framework */; - productType = "com.apple.product-type.framework"; - }; - C55E46AC6A1E70A6AA25E306AE545375 /* PermissionScope */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1E11764067A3FE3683F412DF7BCE2D79 /* Build configuration list for PBXNativeTarget "PermissionScope" */; - buildPhases = ( - 756248B291D366F8B29EA3A7AE47C79A /* Sources */, - 1FDF39FC9AC8BB97395383590A295D72 /* Frameworks */, - 8FCCED683C001C0785AD28BD3880FA84 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = PermissionScope; - productName = PermissionScope; - productReference = BE1DB65DF75987DDE87E3B45B5B3AF2A /* PermissionScope.framework */; - productType = "com.apple.product-type.framework"; - }; - D1DC35DB2C695031A72543555FB23729 /* AsyncSwift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2C22D6720637A1B2B2F95C2B902C0C7D /* Build configuration list for PBXNativeTarget "AsyncSwift" */; - buildPhases = ( - 8A50EC43E2E52EC3C02907FFC4A43D50 /* Sources */, - EC45B49DAE58A4E80A54C3888DA457F3 /* Frameworks */, - 3A91A1781435D2F6E292FCCF5F5356C1 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AsyncSwift; - productName = AsyncSwift; - productReference = 294819245101964815C51BF087071704 /* Async.framework */; - productType = "com.apple.product-type.framework"; - }; - D7FF48F3092783E4E42B336F0DEF2D1A /* Onboard */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0A984F75D7AF9321E9237A1F65995B44 /* Build configuration list for PBXNativeTarget "Onboard" */; - buildPhases = ( - 0B525EABCAC4BAEA6B73CF7A5C7EAFDF /* Sources */, - 427329835593AB54E796D1B03B829FD3 /* Frameworks */, - DD8D1A1E3CD8E497AC51AF94060F1931 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Onboard; - productName = Onboard; - productReference = 31160AB1A3FE7012378FCDEAE1BA7A6C /* Onboard.framework */; - productType = "com.apple.product-type.framework"; - }; - EF89A4DA92CC0D0F76CF983AB2A6F4F1 /* DGRunkeeperSwitch */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9AF2EF1CAE695BB53E5A8461232EBAD5 /* Build configuration list for PBXNativeTarget "DGRunkeeperSwitch" */; - buildPhases = ( - 3F70216E96FADB6650A523C5B0D82ABA /* Sources */, - 50D2750C40F449BFD8567BAFCABB9C26 /* Frameworks */, - B19E94B10D550DC02B1D33FCAD52BA8B /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DGRunkeeperSwitch; - productName = DGRunkeeperSwitch; - productReference = C6E61A4F6EBC20C76B9FDD881F27C371 /* DGRunkeeperSwitch.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0700; - }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 7B78C98F645C1D785B5185CED8126741 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 7EC1417298041145E9B1A4C7B395C179 /* AKPickerView-Swift */, - 79C040AFDDCE1BCBF6D8B5EB0B85887F /* Alamofire */, - D1DC35DB2C695031A72543555FB23729 /* AsyncSwift */, - 5172ACAB7FEA22813859DC97CA0AA16F /* ChameleonFramework */, - 115824B7CB2E76E5ACB836A251E79404 /* DGElasticPullToRefresh */, - EF89A4DA92CC0D0F76CF983AB2A6F4F1 /* DGRunkeeperSwitch */, - 8F17DD5BDDF65F3AB77F350BE14632BE /* EFCircularSlider */, - 99467F259B31FBA8DDB95086022B4977 /* FontAwesomeKit */, - B2619B2813D910DBC9FE9714E0788D55 /* FSCalendar */, - 5AF1C612F4CDA296FC4C82D9BD0BD25D /* INTULocationManager */, - 4E3BBCA6078A6AAAD053C911572F0B0C /* Localize-Swift */, - B7C99010DEE22AAAB76BCF07F093651A /* Log */, - 9CAAB2A1855182D992E2945796B03B4D /* MRProgress */, - 626D49AD18621B0A3059EE726B27AE89 /* NVActivityIndicatorView */, - D7FF48F3092783E4E42B336F0DEF2D1A /* Onboard */, - C55E46AC6A1E70A6AA25E306AE545375 /* PermissionScope */, - B02222757DD07A46E150C0E11274C937 /* Pods-tpg offline */, - B8A49B21FD9EF99E936D68AE82846108 /* SCLAlertView */, - A59A93B402011A0E65D47D9CF441BB2B /* SwiftDate */, - 05FE1F0D2B1FA1DC3263A13FCD68A0C1 /* SwiftInAppPurchase */, - AC21AA5E85F7C4BF354E6D4D7FC2D0DF /* SwiftInAppPurchase-SwiftInAppPurchase */, - 32227DE82A25F38D0FB6FD6A6B51574B /* SwiftTweaks */, - 4D48BE2E1C03FDDFE91191F0714E9095 /* SwiftyJSON */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 258D59FBC0E4492363937A4FBCE41E6B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EE691DA3C9B83F18E776E1437AC81D60 /* FontAwesome.otf in Resources */, - F60E1974ADBE32987CC1F894A09C93CC /* foundation-icons.ttf in Resources */, - 605479F859F350D44EB0FF16021EE436 /* ionicons.ttf in Resources */, - D0FDBDE18D6FAABAEABA137E6A6B2B9A /* Material-Design-Iconic-Font.ttf in Resources */, - 8A593E68797C15E2C6C1ED6DCFDC08BD /* octicons.ttf in Resources */, - 18F7B1BC3DFC0A52FF8FB133607EEA02 /* zocial-regular-webfont.ttf in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607559C57C2FC1AA24206DD71F3B7F84 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5BD99F146DD53623AB4C1BA232860E0C /* SwiftInAppPurchase.bundle in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 685B840E92D97614C16B3F6C1F602BE3 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E68D169EECB0E9DBB79C284979DF123B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4FED89D46A7E0802F4CE50A530FFD92C /* Media.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 02023C834096EAEA09BE3BF1F35B1117 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EB3E236040ACCF771CBCE9AD1789EF3D /* SwiftyJSON-dummy.m in Sources */, - EFB1A09738CFD06D630DAE60519CA842 /* SwiftyJSON.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 03898318E84FF14F797A2ED995DAA321 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B1CFEE9FF3EB53A1C0009F6EFD1A9043 /* FAKFontAwesome.m in Sources */, - 8C12554B835AD5AE59B3E1F69124913E /* FAKFoundationIcons.m in Sources */, - DACEC73F51892F550928C78B65B4651A /* FAKIcon.m in Sources */, - 8B7CA5A9DA7A3F51B617639E50EB7484 /* FAKIonIcons.m in Sources */, - A8F50206CD66357B3514F8F057DE87B4 /* FAKMaterialIcons.m in Sources */, - AEC65AA7DED93A21068C32F0BABCD88C /* FAKOcticons.m in Sources */, - ED6729BBCAA181743608834CFDA28B10 /* FAKZocial.m in Sources */, - D9AFEB183A6CB4D9B68B6F907D09F993 /* FontAwesomeKit-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0B525EABCAC4BAEA6B73CF7A5C7EAFDF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68601DD8D1367CD635712B9FF4797A9A /* Onboard-dummy.m in Sources */, - C6E011EAC995523734C90C4B3362D037 /* OnboardingContentViewController.m in Sources */, - 86BA959299BECF7B0314ECC08EC0614F /* OnboardingViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 12296A0944F23DE01D8DC16B063A0CA0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2CD72483291FE95724AD80B77F3B20A1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D4C09BD820399466CF0F48D5715A87C3 /* AnyTweak.swift in Sources */, - DA711B72294670E9CDAF019922103A11 /* AppTheme.swift in Sources */, - 42550B9FB3F43C948A94F65969E2A2C8 /* BasicAnimationTweakTemplate.swift in Sources */, - A4DCEF92F739D25D84C99E4A5FC95288 /* CALayer+ShadowTweakTemplate.swift in Sources */, - 9F878A0F038942BF1B2AEF9C3866C8A7 /* Clip.swift in Sources */, - 6E311772AD258F10554F5686089C87DA /* ColorRepresentation.swift in Sources */, - 4BDF7B753610E441D4237A2A11DF96E4 /* EdgeInsetsTweakTemplate.swift in Sources */, - FB5734D36AF2C93820C669F247C63C36 /* FloatingTweakGroupViewController.swift in Sources */, - 50A0CC643EC96C430655196AA0BE47D0 /* HashingUtilities.swift in Sources */, - 583AF6FB2DC5270369C73CAFABBE8025 /* HitTransparentWindow.swift in Sources */, - A6E2DF853665F4EC399BA881C3309C2F /* Precision.swift in Sources */, - A710FE984AD94FC5D56628BDC1DECEEE /* ShadowTweakTemplate.swift in Sources */, - 5A06805481198392167DEC158CA02B1A /* SignedNumberTweakDefaultParameters.swift in Sources */, - 6EB12E0817F1017B691D7164C76E3AC4 /* SpringAnimationTweakTemplate.swift in Sources */, - 1373B67E375E068650B2E2CBB034D392 /* SwiftTweaks-dummy.m in Sources */, - 936D62983D016EF1A5FC1238D601A64B /* Tweak.swift in Sources */, - 4B9AD6ACBAAFB29322FBD43EE53822DE /* TweakableType.swift in Sources */, - 38BC77477F17624F3CD61F54847FCFA1 /* TweakBackup.swift in Sources */, - 774B3272DCC6211CA7AED1E05E400F76 /* TweakBinding.swift in Sources */, - 1CECA6AF45BF404B2D2DFE7C83F28BA9 /* TweakClusterType.swift in Sources */, - 0B330B5573EB7B74DB2738315326E745 /* TweakCollection.swift in Sources */, - D551E691006DBF532FE809BA00CE9870 /* TweakCollectionViewController.swift in Sources */, - FFBABEC849DD7ED1EEED415EDB35CCEB /* TweakColorCell.swift in Sources */, - FA19565E2FF7CB15E8214ACA25479462 /* TweakColorEditViewController.swift in Sources */, - 2BB77CD255C32BA9566C3A6110B43AFF /* TweakGroup.swift in Sources */, - FAB7C37DE795BFC72E7BD013F4E23F70 /* TweakGroupTemplateType.swift in Sources */, - 5A287039D4F0CF32ACBFB84796C9FFC1 /* TweakLibrary.swift in Sources */, - 9D7629BB3CA79C720578479C9AE8D811 /* TweakPersistency.swift in Sources */, - 4426A691D97D39921800FF233CF4D761 /* TweaksBackupsListViewController.swift in Sources */, - 2A1C08A4886BAA4B1C137186C1922810 /* TweaksCollectionsListViewController.swift in Sources */, - 2F302D0DA9C29B0C831DCCAD09C11BA6 /* TweaksRootViewController.swift in Sources */, - 308124B98FD3652B201324103914C0E7 /* TweakStore+Sharing.swift in Sources */, - 3538271BE9957556474BEFD50E0DAB53 /* TweakStore.swift in Sources */, - 414FBF440325FF92AD9E28D8FD38B0D5 /* TweaksViewController.swift in Sources */, - BE6DEECD31FE32EF1E994DFAAD9F503A /* TweakTableCell.swift in Sources */, - D63F7FC5B62A6D19BA38171777327391 /* TweakViewData.swift in Sources */, - 680BF2F437D5CBFE76A037E4752E343E /* TweakWindow.swift in Sources */, - 9F2A95262B6FE514152CEF9834A5E23A /* UIColor+Tweaks.swift in Sources */, - 1A2435BB3EA4E8AEB8E91E18815012F0 /* UIEdgeInsets+EdgeInsetsTweakTemplate.swift in Sources */, - B032C65734E9DC58CD77E0D19CE4D133 /* UIImage+SwiftTweaks.swift in Sources */, - E2B51184ECD219B7CB07CD73E1DC4224 /* UIView+BasicAnimationTweakTemplate.swift in Sources */, - 2344EEA95021B1E417191EFF5661A1E8 /* UIView+TweakGroupTemplateSpringAnimation.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2EA167F2369E9F84FB1F8E9B272C5798 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A3C8626AC35DC46D1291E4B38362F4FB /* MRActivityIndicatorView.m in Sources */, - CD3C1E8D1BAFF179B13FDDDD6118D146 /* MRBlurView.m in Sources */, - 0B87AEED887108FF3FDA89B00E048E1B /* MRCircularProgressView.m in Sources */, - 19A44C55B25612B9721A27E7C49E03CF /* MRIconView.m in Sources */, - 83BC947C81CD6B24E1F1B4423A032DE5 /* MRNavigationBarProgressView.m in Sources */, - 2B760213EE78830957A29FF2AEC63E40 /* MRProgress-dummy.m in Sources */, - 454E1EB4F7B62721B59982B1E983DCFA /* MRProgressOverlayView.m in Sources */, - F0062A0D1BD5D56ED254B194BB3B7EB4 /* MRProgressView.m in Sources */, - 28BFEF0F25609E5CF6D310771B92CD24 /* MRStopButton.m in Sources */, - 95167CA6D4FE6CFA3762703F17002FC6 /* UIImage+MRImageEffects.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3943D764C0D525CFAF94F943648E17BE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 11BA64BC0B2FE8DDB41883B7241A8C49 /* DGElasticPullToRefresh-dummy.m in Sources */, - 7A88BF95853A69E550E9F63A060BED12 /* DGElasticPullToRefreshConstants.swift in Sources */, - 6B058FB2BD6B6B55995F631EE4B61D8E /* DGElasticPullToRefreshExtensions.swift in Sources */, - B2F9711D635766F4754D415B41FFC818 /* DGElasticPullToRefreshLoadingView.swift in Sources */, - ECDF2C04EED904A4AFC64DED8EA45544 /* DGElasticPullToRefreshLoadingViewCircle.swift in Sources */, - 501198AA5B6723D71C0194BAD075BF02 /* DGElasticPullToRefreshView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3F70216E96FADB6650A523C5B0D82ABA /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5D8CC81D38FFCFD3A5745E8C2F86F40B /* DGRunkeeperSwitch-dummy.m in Sources */, - 06720CD7705F71178390FE16A75D419A /* DGRunkeeperSwitch.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 45B8928705B1C80CD136C427F025726C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9D0EE7B15E6199DA4C50FB7D88991814 /* NVActivityIndicatorAnimationBallBeat.swift in Sources */, - BBCA1EEBD4D5812E7A6A79E93A1AAD92 /* NVActivityIndicatorAnimationBallClipRotate.swift in Sources */, - 72079B7D694FB64AA4109CDFB0181EB4 /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift in Sources */, - 195C882D7CF3B187A7ABD8D9A24ECDDC /* NVActivityIndicatorAnimationBallClipRotatePulse.swift in Sources */, - 6F092C062F9052E042399723F30A51FD /* NVActivityIndicatorAnimationBallGridBeat.swift in Sources */, - 6DF83D3AA2FC55EC3A34594816BAAB73 /* NVActivityIndicatorAnimationBallGridPulse.swift in Sources */, - BC25E5B3E461B68EA802BD657A72701A /* NVActivityIndicatorAnimationBallPulse.swift in Sources */, - 1CD9428D34F76710C9565467CF1F2F73 /* NVActivityIndicatorAnimationBallPulseRise.swift in Sources */, - 70BEF2DCF1FC89FCF98648FD6786A1AC /* NVActivityIndicatorAnimationBallPulseSync.swift in Sources */, - 67BC2C4F5C488A9B4F8ECD0DF6611F2F /* NVActivityIndicatorAnimationBallRotate.swift in Sources */, - 6438C9150C2D0298D0FDF8C3C6566842 /* NVActivityIndicatorAnimationBallRotateChase.swift in Sources */, - 21545F160C46FD160CD617256FA82180 /* NVActivityIndicatorAnimationBallScale.swift in Sources */, - 7F4D112748EC34E41E3C773E84C2CF53 /* NVActivityIndicatorAnimationBallScaleMultiple.swift in Sources */, - EA0EC972B280E9EFDDE71403E549B8B0 /* NVActivityIndicatorAnimationBallScaleRipple.swift in Sources */, - B75B9D17D39561D7A2F3E67C79FA9F27 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift in Sources */, - D0A45C8A6CA3AF10051732462D30FEC0 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift in Sources */, - AA4C2F68882DBBC02C6EF24AF45D2350 /* NVActivityIndicatorAnimationBallTrianglePath.swift in Sources */, - 84E3D8DE2C016D309B09DDB3593EC4A1 /* NVActivityIndicatorAnimationBallZigZag.swift in Sources */, - 0686B89336BC7948B8112632BE3BA8E6 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift in Sources */, - 0F85524881D6DA94329304BA17B41E45 /* NVActivityIndicatorAnimationBlank.swift in Sources */, - 1DD0C4D6F1DB0270DD7A98B6BD82559E /* NVActivityIndicatorAnimationCubeTransition.swift in Sources */, - 1317BB4073D01F6F798D8A71D02AA800 /* NVActivityIndicatorAnimationDelegate.swift in Sources */, - B75369FF87B3F9D706695005D71600C2 /* NVActivityIndicatorAnimationLineScale.swift in Sources */, - CC78BD4F08AE3B0638B853554389D7CA /* NVActivityIndicatorAnimationLineScaleParty.swift in Sources */, - FC513481E5E93CCD0D98FFE2339E5F3C /* NVActivityIndicatorAnimationLineScalePulseOut.swift in Sources */, - 34F1A41432F9FD7D314BC11F66BBA40C /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift in Sources */, - CC4F3479033014A3EFFF0C4712CFB523 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift in Sources */, - 62FD8C39DA7D9DF1AB613C34299AB9AB /* NVActivityIndicatorAnimationPacman.swift in Sources */, - 3229A4B8643CC32C52B866C29AF7D3F4 /* NVActivityIndicatorAnimationSemiCircleSpin.swift in Sources */, - DD2FA3B21ECD486EA416583741BB1631 /* NVActivityIndicatorAnimationSquareSpin.swift in Sources */, - 11F2BC52C5B615CDAEAFB7851AC38F94 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift in Sources */, - 13EDB09E7DEF6FFF1E38F91B668F718A /* NVActivityIndicatorShape.swift in Sources */, - 7EDBA77726C5EA875090AE0BFF3B6B41 /* NVActivityIndicatorView-dummy.m in Sources */, - EE5D6304D6519F6B8791C10525530DB8 /* NVActivityIndicatorView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4C57AC1B079DBD5A5910873EA4FE09F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E1B58C9322E8E27C3376E330C124FC7 /* CALayer+FSExtension.m in Sources */, - 4814EE71271BC074621A5ABB07525ACF /* FSCalendar+IBExtension.m in Sources */, - 7A779B7652F894A80FBCAF67E3E960FA /* FSCalendar-dummy.m in Sources */, - 6ECD11C96CBDCA50F0331F3FBDAECE64 /* FSCalendar.m in Sources */, - 785778BB36B2F9B21FAE5E476E1B6E2E /* FSCalendarAnimator.m in Sources */, - 082C46A244A1077339875D1132DF9874 /* FSCalendarAppearance.m in Sources */, - 21209814564B699E013C0579D7617C88 /* FSCalendarCell.m in Sources */, - DB0D7D2A2EDB8D6D5C18B850CB779F7B /* FSCalendarCollectionView.m in Sources */, - D4B2E79A7850584715A743A46D4EFA14 /* FSCalendarConstance.m in Sources */, - 51D1AC1D010EA99E078E75C69C6D2111 /* FSCalendarEventIndicator.m in Sources */, - 6C92086C1DC08BB2A45B0A66F839CA48 /* FSCalendarFlowLayout.m in Sources */, - 3B202C12728218C238D98AEE659FF7D1 /* FSCalendarHeader.m in Sources */, - 3CBF88CA2DE4F67B82C36AE6290DCC90 /* FSCalendarStickyHeader.m in Sources */, - 9EFD5A3145CC48882E4B6F6A71EE1505 /* NSDate+FSExtension.m in Sources */, - 078D4DF75013A50AAFBCC75467214CFB /* NSString+FSExtension.m in Sources */, - 42E18A7773D704188DAE03B594B0B690 /* UIView+FSExtension.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 53AAE1D43F03BF92F8B6BEA69B45CDDD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9E8AD46572FB3FDAF618A6C1356C1E7A /* Additions.swift in Sources */, - 77BA62656E59803B6782E00479704D93 /* DateInRegion+Comparisons.swift in Sources */, - 31664405792D70A623BBBDF3A04A0776 /* DateInRegion+Components.swift in Sources */, - BFA6BEC20D219FAF8C6924A8FC384CBF /* DateInRegion+Equations.swift in Sources */, - 543CDB14C968232D7678AE5654E50C86 /* DateInRegion+Formatter.swift in Sources */, - 0C47745482BBB2380A6E3806E725E1F2 /* DateInRegion+NSDatePort.swift in Sources */, - 4C11C1DBB66C7F9B63E69D4185222DCA /* DateInRegion+Operations.swift in Sources */, - 58E841A4DCB11D3EB3499A93638E281D /* DateInRegion+StartEnd.swift in Sources */, - 9244D3E44E9722D18CF2CF2DFF270DBE /* DateInRegion.swift in Sources */, - 2678DD25584EF746F6C2B2451B25A499 /* Dictionary+SwiftDate.swift in Sources */, - 0EB9810F4FF177DB9FC568988A3D61AD /* NSCalendar+SwiftDate.swift in Sources */, - 114EC44860AE0279E6D99134F9AD6A4F /* NSDate+SwiftDate.swift in Sources */, - 1070D2E058014E659F1475DC85A7C176 /* NSDateComponents+SwiftDate.swift in Sources */, - 263B82D79238953CC9F9619897122D31 /* NSDateFormatter+SwiftDate.swift in Sources */, - 4CCFBAC76E15D8995C498F804B1C8916 /* NSDateInterval.swift in Sources */, - A9E85FF731AB7C5FBA248E0482C0571A /* NSLocale+SwiftDate.swift in Sources */, - F20261D324026E13795C3888A17CD315 /* NSTimeInterval+SwiftDate.swift in Sources */, - 389F4FC852E57772F6B9444E0013890F /* NSTimeZone+SwiftDate.swift in Sources */, - 776F694F5E6A073F685303E7083650F2 /* Region.swift in Sources */, - 88850623C51D10BA9CCA83DD63DD37C0 /* SwiftDate-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 681F809F3D5CB50C69EFC0DC45DBA081 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CCA8087439D9E8C2EAD3A4C533E7EFB1 /* Benchmarker.swift in Sources */, - 8B2F84E37AD49AFA858923FC733FAAFA /* Formatter.swift in Sources */, - 78FBD2D1B972B768E83DA7377CA955E2 /* Formatters.swift in Sources */, - 4573AE19937C8058AE5C21C64A3CA95B /* Log-dummy.m in Sources */, - F06F0A5FD1403D3DD2A86D0D35E353A7 /* Logger.swift in Sources */, - E016B37F0BA5A823E7FCC5877A97B129 /* Theme.swift in Sources */, - 8B3B1230521CD79417882869334A6F06 /* Themes.swift in Sources */, - 7FADB403A7E3DF122A1F578277BF90A1 /* Utilities.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 756248B291D366F8B29EA3A7AE47C79A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4D79EC114BE4E3A99C20702B190F2FCA /* Constants.swift in Sources */, - 832946EFD651EC8DD5310FAE546A6C47 /* Extensions.swift in Sources */, - 18BC1B2A0EA94E2BF2DC912E1645E906 /* Permissions.swift in Sources */, - EE45E0FB3A26B7DFF80DDCF6C597970B /* PermissionScope-dummy.m in Sources */, - 351D7AEB6A0C1AAB2267AD1216CE8B63 /* PermissionScope.swift in Sources */, - 62D098F264BA505FF93376E1817B7D31 /* Structs.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8A50EC43E2E52EC3C02907FFC4A43D50 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 126169B8BF7430D89BB990B97C36D75F /* Async.swift in Sources */, - 2754C4E95E265639D7CFC90BA8264476 /* AsyncSwift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 95CC2C7E06DC188A05DAAEE9CAA555A3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ADF19C953CE2A7D0B72EC93A81FCCC26 /* Alamofire-dummy.m in Sources */, - 8EB11202167FCDDF1257AAAB1D1FB244 /* Alamofire.swift in Sources */, - 5CB05FBCB32D21E194B5ECF680CB6AE0 /* Download.swift in Sources */, - 095406039B4D371E48D08B38A2975AC8 /* Error.swift in Sources */, - 4081EA628AF0B73AC51FFB9D7AB3B89E /* Manager.swift in Sources */, - C7B6DD7C0456C50289A2C381DFE9FA3F /* MultipartFormData.swift in Sources */, - 34CCDCA848A701466256BC2927DA8856 /* NetworkReachabilityManager.swift in Sources */, - BE41196F6A3903E59C3306FE3F8B43FE /* Notifications.swift in Sources */, - C0DB70AB368765DC64BFB5FEA75E0696 /* ParameterEncoding.swift in Sources */, - EFE92E8D3813DD26E78E93EEAF6D7E7E /* Request.swift in Sources */, - 62E8346F03C03E7F4D631361F325689E /* Response.swift in Sources */, - 3EA8F215C9C1432D74E5CCA4834AA8C0 /* ResponseSerialization.swift in Sources */, - AA314156AC500125F4078EE968DB14C6 /* Result.swift in Sources */, - 7B48852C4D848FA2DA416A98F6425869 /* ServerTrustPolicy.swift in Sources */, - AE4CF87C02C042DF13ED5B21C4FDC1E0 /* Stream.swift in Sources */, - 16102E4E35FAA0FC4161282FECE56469 /* Timeline.swift in Sources */, - 5BC19E6E0F199276003F0AF96838BCE5 /* Upload.swift in Sources */, - 2D3405986FC586FA6C0A5E0B6BA7E64E /* Validation.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9DA31D67DD51AB1E170328CC579FF319 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 581717436435D5B2B4CD456003D11B61 /* AKPickerView-Swift-dummy.m in Sources */, - 8A609220390F13874F262B899AB318EF /* AKPickerView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A007306A9F7EAF30B21BFDB4E741628B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9B365A3A01EF135485F43412F83C7C65 /* Chameleon_.m in Sources */, - 1236ECB96A915EC617957A42838CDD7B /* ChameleonConstants.m in Sources */, - E0C720836FBA4E75E3E57069219B7107 /* ChameleonFramework-dummy.m in Sources */, - A2AC9FD0F42F638C48E72F88E8BC4C80 /* ChameleonShorthand.swift in Sources */, - 24E7D20FD204AF7AACB30A3B7C16388C /* NSArray+Chameleon.m in Sources */, - D2B61A78124FCB785E11A98BDD0471BC /* UIAppearance+Swift.m in Sources */, - A46A3EAB602FB4840C5AB8493F86AE4F /* UIButton+Chameleon.m in Sources */, - 01C6F32401BCBE9FF9B3C095B031D92B /* UIColor+Chameleon.m in Sources */, - E0AFA39DA4A01D8A8FE3D4EC76250F46 /* UIColor+ChameleonPrivate.m in Sources */, - 15E113F19F49C0C0472242BD6E849A1B /* UIImage+ChameleonPrivate.m in Sources */, - 9B3EEA3CFA303B0D28A8034C16BFDA15 /* UILabel+Chameleon.m in Sources */, - 4C6CEBA607BEA909A9CCB80C6AB6AE88 /* UINavigationController+Chameleon.m in Sources */, - C08DCA5180F1A15542694844C66B0EFB /* UIView+ChameleonPrivate.m in Sources */, - 5177B3B95985D0A2CF8376A6FD4488C2 /* UIViewController+Chameleon.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B039E7706C2C02F0900792B275A8C798 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 780A8FD22AD4E27401AF6F633520103F /* Info.plist in Sources */, - 33196910D726B12C2DAE7B7F1F3E5517 /* SCLAlertView-dummy.m in Sources */, - 93DF260DE076854C529392B11CE22D84 /* SCLAlertView.swift in Sources */, - B4C2D38D9DCCDD65CC30966C0A6186C2 /* SCLExtensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B83948D1E5C8C5920D557445EDB93F7D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 615014C3941C729C35CD0B37DB1D8CCF /* PaymentRequestHandler.swift in Sources */, - 7BF65A51F3250D8151856AA7EA2D44BA /* ProductRequestHandler.swift in Sources */, - E790AFAB2583C46159772F294A0ADFFE /* ReceiptRequestHandler.swift in Sources */, - 62DAB376C907D2E207CD97EBBBBD7D82 /* SwiftInAppPurchase-dummy.m in Sources */, - 7B5D7C23C9847DCBB53E1088298700D7 /* SwiftInAppPurchase.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E2EB87E0D2F0FB0092B9FB7AC53CBB51 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 511DB1410DA63BFA56F3BC2B311E14C9 /* Pods-tpg offline-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EA794BFDB9159F5E73606E92A28BA8AF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1250C15821D063438351CA3D374B8153 /* INTUHeadingRequest.m in Sources */, - ACF7C3C74DE8C78434656A73C2CE8CCA /* INTULocationManager-dummy.m in Sources */, - E1A910F5234561A4C2EB1125836E91C2 /* INTULocationManager.m in Sources */, - 9AEE8CB9A438667C3BF905C6206BC1EB /* INTULocationRequest.m in Sources */, - 8CF5ACA6C355B72E2CE843393A3E2C7C /* INTURequestIDGenerator.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ED9693054C5D644ECD60224CD91698D6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A93B6A2AF2DBFD2AB32170E213BE0FEA /* Localize-Swift-dummy.m in Sources */, - 9CB8A816A7DA1AD905C0E945B029B205 /* Localize.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F3DBC8682135AF5B36382E304C0CEF08 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 47DD9712148A849597BF4BB6A7CF5B9C /* EFCircularSlider-dummy.m in Sources */, - 599393E375A20A35BDA5AF34B08A443D /* EFCircularSlider.m in Sources */, - 0AB4C7D0B16AE708849843F055FC111C /* EFCircularTrig.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 082E9EAC74507BCF47F1478C6805915E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = INTULocationManager; - target = 5AF1C612F4CDA296FC4C82D9BD0BD25D /* INTULocationManager */; - targetProxy = 2DDD9C17EEE66C0BBF883AEF77239EEC /* PBXContainerItemProxy */; - }; - 0A635C77AB694975B1A17F2D130FA737 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = EFCircularSlider; - target = 8F17DD5BDDF65F3AB77F350BE14632BE /* EFCircularSlider */; - targetProxy = C2EBB6FA7C7FBF0B76E0CCA06BA2B080 /* PBXContainerItemProxy */; - }; - 169638438C8E7D2B24583E7A5ACC6F6A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FSCalendar; - target = B2619B2813D910DBC9FE9714E0788D55 /* FSCalendar */; - targetProxy = 4CD435AAF1DDF12580368D4D0EE9726B /* PBXContainerItemProxy */; - }; - 1887F9D4CC484786BAA41A4ADFBB0D09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "AKPickerView-Swift"; - target = 7EC1417298041145E9B1A4C7B395C179 /* AKPickerView-Swift */; - targetProxy = F094DD956FAA5F4696994A82D51AC840 /* PBXContainerItemProxy */; - }; - 1A14B5FAA6F846879917EF9DA430E63D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PermissionScope; - target = C55E46AC6A1E70A6AA25E306AE545375 /* PermissionScope */; - targetProxy = 4054063BE0FF4557D9C02554D93EEE58 /* PBXContainerItemProxy */; - }; - 1D48C81583D5E314681CCBC984BF8BC7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NVActivityIndicatorView; - target = 626D49AD18621B0A3059EE726B27AE89 /* NVActivityIndicatorView */; - targetProxy = B7C26EEAE364AA545DE656A8F490939A /* PBXContainerItemProxy */; - }; - 22AB82AEFD6C1967F6F53D85302D93FE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DGRunkeeperSwitch; - target = EF89A4DA92CC0D0F76CF983AB2A6F4F1 /* DGRunkeeperSwitch */; - targetProxy = 032C469C00809BCA2844F06249CBEA05 /* PBXContainerItemProxy */; - }; - 36E0D33A6E6DDE1902326E670C10B26C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftDate; - target = A59A93B402011A0E65D47D9CF441BB2B /* SwiftDate */; - targetProxy = 291946D90B5432246EA95B78E53576DC /* PBXContainerItemProxy */; - }; - 560AB38E0A3FE573CC4134B00AF9A72C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SCLAlertView; - target = B8A49B21FD9EF99E936D68AE82846108 /* SCLAlertView */; - targetProxy = 83CD15991BDDB1B489357CEECEC4C9CC /* PBXContainerItemProxy */; - }; - 58DD68BBA716B6C718EF82174EB7FCC5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MRProgress; - target = 9CAAB2A1855182D992E2945796B03B4D /* MRProgress */; - targetProxy = B8FB17933F3770833D99859B81D581E6 /* PBXContainerItemProxy */; - }; - 5C91A5E75C4A7B99E084C5C87A7F9776 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FontAwesomeKit; - target = 99467F259B31FBA8DDB95086022B4977 /* FontAwesomeKit */; - targetProxy = 55CF4A04A38F093A1DDB1D38C304C53F /* PBXContainerItemProxy */; - }; - 67D6F5469BC0AD919AFE9C427E5975DB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Log; - target = B7C99010DEE22AAAB76BCF07F093651A /* Log */; - targetProxy = 88308D7E134981F1E3F98D70D35AAFD0 /* PBXContainerItemProxy */; - }; - 690F7480E217D1C455844D1623357F05 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Onboard; - target = D7FF48F3092783E4E42B336F0DEF2D1A /* Onboard */; - targetProxy = E8CA9C0ADAE37A93179C11D7C4397076 /* PBXContainerItemProxy */; - }; - 90AB9D544AED9DE63DFB47B27CA4E224 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftTweaks; - target = 32227DE82A25F38D0FB6FD6A6B51574B /* SwiftTweaks */; - targetProxy = A51B8E0F6AF84688C70971D422AED7B1 /* PBXContainerItemProxy */; - }; - A69BCD1917CC59B2D038EF692BEF2520 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SwiftInAppPurchase-SwiftInAppPurchase"; - target = AC21AA5E85F7C4BF354E6D4D7FC2D0DF /* SwiftInAppPurchase-SwiftInAppPurchase */; - targetProxy = FD1D82C478088254698B77D05C5A37C6 /* PBXContainerItemProxy */; - }; - A90D790AB5C6A7AC187E6417D383780B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = 79C040AFDDCE1BCBF6D8B5EB0B85887F /* Alamofire */; - targetProxy = 770B642137C7C845FD19E0F8D49AD53C /* PBXContainerItemProxy */; - }; - B82E4CAB9749E6AF2B6163BD246F5241 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftInAppPurchase; - target = 05FE1F0D2B1FA1DC3263A13FCD68A0C1 /* SwiftInAppPurchase */; - targetProxy = D6F68B7573AE43464C44B4C2EBB97952 /* PBXContainerItemProxy */; - }; - C8B2190BC94C52A6390C0D75E7FC3B6C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DGElasticPullToRefresh; - target = 115824B7CB2E76E5ACB836A251E79404 /* DGElasticPullToRefresh */; - targetProxy = 68BA1AAAE0B378C71D43AA97E1E82464 /* PBXContainerItemProxy */; - }; - D0AA47C2F622C56B94C8B35CD154FED0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Localize-Swift"; - target = 4E3BBCA6078A6AAAD053C911572F0B0C /* Localize-Swift */; - targetProxy = C6BE78948DFC589E40ED1035746E5022 /* PBXContainerItemProxy */; - }; - E1BE865B5929574A1BCAC2B8BD97915F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ChameleonFramework; - target = 5172ACAB7FEA22813859DC97CA0AA16F /* ChameleonFramework */; - targetProxy = E1CB140447FDC1130E04CA57E03CAC19 /* PBXContainerItemProxy */; - }; - F05D1026C054269EDF18BB8A94FC8EBE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AsyncSwift; - target = D1DC35DB2C695031A72543555FB23729 /* AsyncSwift */; - targetProxy = 3ABD836359387E4B93E15DDDCA4760B4 /* PBXContainerItemProxy */; - }; - F9EE8CA2680E1351D20E16CE854C7AB6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyJSON; - target = 4D48BE2E1C03FDDFE91191F0714E9095 /* SwiftyJSON */; - targetProxy = BDF7B9AE18DE37206659C7AF95B9DB24 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 016A26F9134ACFEF60D9DF08A8D77EFC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4415036062D30932A796432DA868BF74 /* Onboard.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Onboard/Onboard-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Onboard/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Onboard/Onboard.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Onboard; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 08E47ED3FA5E0AEA61435C587DDCA347 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3D34BB12EA18038B02F24F7282FE226E /* AKPickerView-Swift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/AKPickerView-Swift/AKPickerView-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/AKPickerView-Swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/AKPickerView-Swift/AKPickerView-Swift.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = AKPickerView_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 0A9074A7FC302A7C30513E20A6E4755C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4A68B533C75C155FA0480BE3E8007693 /* SwiftInAppPurchase.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SwiftInAppPurchase"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/SwiftInAppPurchase/ResourceBundle-SwiftInAppPurchase-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = SwiftInAppPurchase; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 165ECEE1B1F043016C35E007307E3C4E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7708BD7415BE05A3D043D8D649E527FB /* SwiftTweaks.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftTweaks/SwiftTweaks-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftTweaks/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftTweaks/SwiftTweaks.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftTweaks; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 24216761F75E1FB3FE38FA137322D4A6 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 96565D8A48BDFEED9889517849C0DD1B /* SwiftDate.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftDate/SwiftDate-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftDate/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftDate/SwiftDate.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftDate; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 32AD5F8918CA8B349E4671410FA624C9 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 21D6DBB62DF8E7BD317235591F214E73 /* Alamofire.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Alamofire; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 39B0F4010E48CF8F4274BB698AE865E9 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C975963E7E7FA6F6FB3362195E0DC915 /* SwiftyJSON.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftyJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 3D29BD3040EE243CF517462D9C149CAF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6627FEC475D21527AC29B5014EC906B7 /* PermissionScope.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/PermissionScope/PermissionScope-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PermissionScope/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/PermissionScope/PermissionScope.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = PermissionScope; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 4400FC47C62CB9E96673A0A1B6BECE0C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4A68B533C75C155FA0480BE3E8007693 /* SwiftInAppPurchase.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftInAppPurchase/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftInAppPurchase; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 4B2954260407A070115A1B4D05E0F508 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5D2A0207C1930855687C529BC2244128 /* MRProgress.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/MRProgress/MRProgress-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/MRProgress/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/MRProgress/MRProgress.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = MRProgress; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 4FE392E812DAD6AE9F24A74E8905F488 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4DE2F7540F07676FE654870A2BA39E30 /* AsyncSwift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/AsyncSwift/AsyncSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/AsyncSwift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/AsyncSwift/AsyncSwift.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Async; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 55B23AADC51506EE1351EF28BA3504DB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 07708D0251576271A17840367001B492 /* ChameleonFramework.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/ChameleonFramework/ChameleonFramework-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ChameleonFramework/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ChameleonFramework/ChameleonFramework.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = ChameleonFramework; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5FDA8D120FC9CC14071EC93C1FD9891E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 344D585A05C9D3B4BB8D386FF73777AC /* INTULocationManager.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/INTULocationManager/INTULocationManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/INTULocationManager/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/INTULocationManager/INTULocationManager.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = INTULocationManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 6A6241399A74E4ADFA65F869A457289F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3D34BB12EA18038B02F24F7282FE226E /* AKPickerView-Swift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/AKPickerView-Swift/AKPickerView-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/AKPickerView-Swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/AKPickerView-Swift/AKPickerView-Swift.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = AKPickerView_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 6B49B7DAADB07889026757F3B7BCC5AF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F56711DBE9DD7968E18DBA00194ED08C /* Log.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Log/Log-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Log/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Log/Log.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Log; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 72FBBEDE52397E05FA1EAD368ADA997A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0370319F2FA7B83D9BCA15C396CA0748 /* Pods-tpg offline.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-tpg offline/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-tpg offline/Pods-tpg offline.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_tpg_offline; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 733E85B656B81C5E759C62918F3E2E78 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F98C0F7FB18743C27FA3FD01E8886170 /* SCLAlertView.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SCLAlertView/SCLAlertView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SCLAlertView/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SCLAlertView/SCLAlertView.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SCLAlertView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 75218111E718FACE36F771E8ABECDB62 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 21D6DBB62DF8E7BD317235591F214E73 /* Alamofire.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Alamofire; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 788662EB83B90E3F18010FEA113A2C21 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FA14E2635E4A0FDBDD7953223C59CBDC /* DGRunkeeperSwitch.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DGRunkeeperSwitch/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = DGRunkeeperSwitch; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 79F0AF923EA8BE9F7151F9B346CC1758 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5060A44DA2E95A11C353E3822955BA8B /* FontAwesomeKit.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FontAwesomeKit/FontAwesomeKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FontAwesomeKit/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FontAwesomeKit/FontAwesomeKit.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = FontAwesomeKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 7BA41E23F5190A2DD0509BB84A9DBD1E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8842396EEC13F1AA15EADEC863533FDD /* Localize-Swift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Localize-Swift/Localize-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Localize-Swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Localize-Swift/Localize-Swift.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Localize_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 800EC413EDAEF9D166DE33535CFD20DA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5060A44DA2E95A11C353E3822955BA8B /* FontAwesomeKit.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FontAwesomeKit/FontAwesomeKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FontAwesomeKit/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FontAwesomeKit/FontAwesomeKit.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = FontAwesomeKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 811519CB8F683AC06F9C98B55AC40F11 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 8124173C980E453C74D52556D896B423 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B571FCF36E7FD3FDBC5F237AF95679DD /* NVActivityIndicatorView.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NVActivityIndicatorView/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = NVActivityIndicatorView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 882EB4391EC2E701934974DA86F7343F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 8C5ED500A43A3D10FE4D81D1CC909ABF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1F1C7B10C405C285F7BDF56720444EF7 /* FSCalendar.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FSCalendar/FSCalendar-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FSCalendar/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FSCalendar/FSCalendar.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = FSCalendar; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 8CC9DF77B7BF70580199B9D8AD1ED5B0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F98C0F7FB18743C27FA3FD01E8886170 /* SCLAlertView.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SCLAlertView/SCLAlertView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SCLAlertView/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SCLAlertView/SCLAlertView.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SCLAlertView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 92C0AB350BC3B2637E8D48B47DC697F7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B65CD432E7FA5EAF2588655EFDE7F51 /* DGElasticPullToRefresh.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DGElasticPullToRefresh/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = DGElasticPullToRefresh; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 9426D56D8B9D73D6F15B6A4DA1680881 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6627FEC475D21527AC29B5014EC906B7 /* PermissionScope.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/PermissionScope/PermissionScope-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PermissionScope/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/PermissionScope/PermissionScope.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = PermissionScope; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9B46DED719EFC4742EA5325977802C06 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B65CD432E7FA5EAF2588655EFDE7F51 /* DGElasticPullToRefresh.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DGElasticPullToRefresh/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = DGElasticPullToRefresh; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9DFD719EB40A856A2ACE07943D7FBFBD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 53A733F5026792B56429C77348A720B9 /* Pods-tpg offline.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-tpg offline/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-tpg offline/Pods-tpg offline.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_tpg_offline; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - A71FF6ED3BA37FCEF019D1C5B75BFCFD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4415036062D30932A796432DA868BF74 /* Onboard.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Onboard/Onboard-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Onboard/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Onboard/Onboard.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Onboard; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - A7B247D5C6EC32581D4406437BBB3953 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B571FCF36E7FD3FDBC5F237AF95679DD /* NVActivityIndicatorView.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NVActivityIndicatorView/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = NVActivityIndicatorView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - A8304C3B26E63F1AAD19A9CDCE2CB64D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C975963E7E7FA6F6FB3362195E0DC915 /* SwiftyJSON.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftyJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - AC0F797C6CFD6A2EE34C448622133782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 07708D0251576271A17840367001B492 /* ChameleonFramework.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/ChameleonFramework/ChameleonFramework-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ChameleonFramework/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ChameleonFramework/ChameleonFramework.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ChameleonFramework; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - AC1E0A0C71DB1F4719EEF6FF69FECAD4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4A68B533C75C155FA0480BE3E8007693 /* SwiftInAppPurchase.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftInAppPurchase/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftInAppPurchase; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - ACE86AFFAB489BE1565B469221BEA3B3 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4DE2F7540F07676FE654870A2BA39E30 /* AsyncSwift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/AsyncSwift/AsyncSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/AsyncSwift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/AsyncSwift/AsyncSwift.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Async; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - ADD0922FFEF01FEE58FF5183526DB2F1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1F1C7B10C405C285F7BDF56720444EF7 /* FSCalendar.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FSCalendar/FSCalendar-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FSCalendar/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FSCalendar/FSCalendar.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = FSCalendar; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - AEF4A6BDD059F807A283AFF9317F509D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8842396EEC13F1AA15EADEC863533FDD /* Localize-Swift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Localize-Swift/Localize-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Localize-Swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Localize-Swift/Localize-Swift.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Localize_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - BFBD95493AE0698E03E3DECE68E2898B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ABE0885DE704B90E2F446E6FDB3D4994 /* EFCircularSlider.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/EFCircularSlider/EFCircularSlider-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EFCircularSlider/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/EFCircularSlider/EFCircularSlider.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = EFCircularSlider; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - C2493BFC5237B0B88FB213B66068D79A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5D2A0207C1930855687C529BC2244128 /* MRProgress.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/MRProgress/MRProgress-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/MRProgress/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/MRProgress/MRProgress.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = MRProgress; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - C44B08B125A7FC4665D910B5092DD01D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ABE0885DE704B90E2F446E6FDB3D4994 /* EFCircularSlider.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/EFCircularSlider/EFCircularSlider-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EFCircularSlider/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/EFCircularSlider/EFCircularSlider.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = EFCircularSlider; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - CD8A3BE4AE2CEF50203E4F7910B3CC2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FA14E2635E4A0FDBDD7953223C59CBDC /* DGRunkeeperSwitch.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DGRunkeeperSwitch/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = DGRunkeeperSwitch; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - D65197023C1DC04F315137D3E0246B5D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4A68B533C75C155FA0480BE3E8007693 /* SwiftInAppPurchase.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SwiftInAppPurchase"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/SwiftInAppPurchase/ResourceBundle-SwiftInAppPurchase-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = SwiftInAppPurchase; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - EE8BDD0ECFEE9F338F27B8AD2F39F4B7 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7708BD7415BE05A3D043D8D649E527FB /* SwiftTweaks.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftTweaks/SwiftTweaks-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftTweaks/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftTweaks/SwiftTweaks.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftTweaks; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - F5FF57A5458650C705C8E696515EC6F2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F56711DBE9DD7968E18DBA00194ED08C /* Log.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Log/Log-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Log/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Log/Log.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Log; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - F9EAB52F5C156FD838E611107250E5E8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 344D585A05C9D3B4BB8D386FF73777AC /* INTULocationManager.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/INTULocationManager/INTULocationManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/INTULocationManager/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/INTULocationManager/INTULocationManager.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = INTULocationManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - FD1037C823C7F57D1EE238C18746E59C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 96565D8A48BDFEED9889517849C0DD1B /* SwiftDate.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftDate/SwiftDate-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftDate/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftDate/SwiftDate.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftDate; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0A984F75D7AF9321E9237A1F65995B44 /* Build configuration list for PBXNativeTarget "Onboard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 016A26F9134ACFEF60D9DF08A8D77EFC /* Debug */, - A71FF6ED3BA37FCEF019D1C5B75BFCFD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1E11764067A3FE3683F412DF7BCE2D79 /* Build configuration list for PBXNativeTarget "PermissionScope" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9426D56D8B9D73D6F15B6A4DA1680881 /* Debug */, - 3D29BD3040EE243CF517462D9C149CAF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2C22D6720637A1B2B2F95C2B902C0C7D /* Build configuration list for PBXNativeTarget "AsyncSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ACE86AFFAB489BE1565B469221BEA3B3 /* Debug */, - 4FE392E812DAD6AE9F24A74E8905F488 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 882EB4391EC2E701934974DA86F7343F /* Debug */, - 811519CB8F683AC06F9C98B55AC40F11 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2E95DB18B92B10FFD1F819FA2896C284 /* Build configuration list for PBXNativeTarget "MRProgress" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B2954260407A070115A1B4D05E0F508 /* Debug */, - C2493BFC5237B0B88FB213B66068D79A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3CFB42910790CF0BDBCCEBAACD6B9367 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 75218111E718FACE36F771E8ABECDB62 /* Debug */, - 32AD5F8918CA8B349E4671410FA624C9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 48E21BC30675BE10E5FB0192B03002EA /* Build configuration list for PBXNativeTarget "ChameleonFramework" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AC0F797C6CFD6A2EE34C448622133782 /* Debug */, - 55B23AADC51506EE1351EF28BA3504DB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50EBC08458F0CC5D265A8C4A69301D47 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A8304C3B26E63F1AAD19A9CDCE2CB64D /* Debug */, - 39B0F4010E48CF8F4274BB698AE865E9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 51B5211356B608A5EF08A7E09EC4C958 /* Build configuration list for PBXNativeTarget "SwiftDate" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 24216761F75E1FB3FE38FA137322D4A6 /* Debug */, - FD1037C823C7F57D1EE238C18746E59C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 56E3140E772A6966FED2655C4F34E03D /* Build configuration list for PBXNativeTarget "SwiftTweaks" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EE8BDD0ECFEE9F338F27B8AD2F39F4B7 /* Debug */, - 165ECEE1B1F043016C35E007307E3C4E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 71C202ED706116B59F510C850DABC016 /* Build configuration list for PBXNativeTarget "INTULocationManager" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F9EAB52F5C156FD838E611107250E5E8 /* Debug */, - 5FDA8D120FC9CC14071EC93C1FD9891E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 71DB2417F54CCFE971489719124713F2 /* Build configuration list for PBXNativeTarget "Log" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6B49B7DAADB07889026757F3B7BCC5AF /* Debug */, - F5FF57A5458650C705C8E696515EC6F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 74DF8A9CBE6EAEB8C19105D047645443 /* Build configuration list for PBXNativeTarget "DGElasticPullToRefresh" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9B46DED719EFC4742EA5325977802C06 /* Debug */, - 92C0AB350BC3B2637E8D48B47DC697F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7968F6B30DE34885335567998D7E4853 /* Build configuration list for PBXNativeTarget "Localize-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7BA41E23F5190A2DD0509BB84A9DBD1E /* Debug */, - AEF4A6BDD059F807A283AFF9317F509D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7E66DDA4D9ACEE4559FE14589C5F582B /* Build configuration list for PBXNativeTarget "FSCalendar" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8C5ED500A43A3D10FE4D81D1CC909ABF /* Debug */, - ADD0922FFEF01FEE58FF5183526DB2F1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9391EE566C183141B0AABD9AA075C5CF /* Build configuration list for PBXNativeTarget "SCLAlertView" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8CC9DF77B7BF70580199B9D8AD1ED5B0 /* Debug */, - 733E85B656B81C5E759C62918F3E2E78 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9AF2EF1CAE695BB53E5A8461232EBAD5 /* Build configuration list for PBXNativeTarget "DGRunkeeperSwitch" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CD8A3BE4AE2CEF50203E4F7910B3CC2F /* Debug */, - 788662EB83B90E3F18010FEA113A2C21 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B027ABEC44F8279DC90E69916140CC9D /* Build configuration list for PBXNativeTarget "Pods-tpg offline" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 72FBBEDE52397E05FA1EAD368ADA997A /* Debug */, - 9DFD719EB40A856A2ACE07943D7FBFBD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B2B2EE168F7F62F16521D8A6F4F147C6 /* Build configuration list for PBXNativeTarget "SwiftInAppPurchase" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4400FC47C62CB9E96673A0A1B6BECE0C /* Debug */, - AC1E0A0C71DB1F4719EEF6FF69FECAD4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C5FE88605B8796B643ABD6FE18770299 /* Build configuration list for PBXNativeTarget "FontAwesomeKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 800EC413EDAEF9D166DE33535CFD20DA /* Debug */, - 79F0AF923EA8BE9F7151F9B346CC1758 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - CA4CCD706EC7E8169DCCA8D9AFEDB127 /* Build configuration list for PBXNativeTarget "AKPickerView-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6A6241399A74E4ADFA65F869A457289F /* Debug */, - 08E47ED3FA5E0AEA61435C587DDCA347 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - CECA1B458E504A6B3B429C72B880EDDB /* Build configuration list for PBXNativeTarget "SwiftInAppPurchase-SwiftInAppPurchase" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D65197023C1DC04F315137D3E0246B5D /* Debug */, - 0A9074A7FC302A7C30513E20A6E4755C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E22E022678FF41228D1CF045A77C6D61 /* Build configuration list for PBXNativeTarget "EFCircularSlider" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BFBD95493AE0698E03E3DECE68E2898B /* Debug */, - C44B08B125A7FC4665D910B5092DD01D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F4F8A67C8FCC5B2A6025788DA6595442 /* Build configuration list for PBXNativeTarget "NVActivityIndicatorView" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A7B247D5C6EC32581D4406437BBB3953 /* Debug */, - 8124173C980E453C74D52556D896B423 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; -} + + + + + archiveVersion + 1 + classes + + objectVersion + 47 + objects + + 001A845B74D148EBB6F18AE5742E2D17 + + fileRef + 526A3672738BF00D4CF896C2FC4550B6 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 001D4CD94390AB3017E15CD2F583019E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 00531077997BBF34D77624B9A5DE0926 + + fileRef + C2EFE87D2FF634DB74387473716DCBAB + isa + PBXBuildFile + + 0072A2460047877E053499CDA8E6B301 + + children + + FD45C877DFBFA8340B0FD7F66C01CD80 + 8E9CBF31269638BD542697FB41DB1A3B + 309E84BF0A4033830F96F178DE549E32 + 636FEDD65FB6BE2F64F1182507C5C6A2 + + isa + PBXGroup + name + Blur + sourceTree + <group> + + 0072EDFE084B7F04F724E3320A12051A + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 8698C4558AE758AD92477EC134E714F7 + remoteInfo + NVActivityIndicatorView + + 00967A34C0778275E41D1CBA32E398F8 + + fileRef + A31A1A0407176ED1974F8E75519822FD + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 011F92E2F8365BE2C1AEE82CEFB040FA + + fileRef + 50B21D9B25C202E2D80B0DD4EC36C007 + isa + PBXBuildFile + + 016A26F9134ACFEF60D9DF08A8D77EFC + + baseConfigurationReference + 05377D88E97E09C79D6EFCAFE8387625 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Onboard/Onboard-prefix.pch + INFOPLIST_FILE + Target Support Files/Onboard/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Onboard/Onboard.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + Onboard + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 01B824A462CD55900AD42E873E879288 + + fileRef + E805993B25BD0F1D55AADCE5B4BB4B5A + isa + PBXBuildFile + + 01C6F32401BCBE9FF9B3C095B031D92B + + fileRef + F9D4DC767565A372DD63242D6DCD6B9D + isa + PBXBuildFile + + 02440CFFC3C1C2717F53FF78F97B0987 + + isa + PBXTargetDependency + name + NVActivityIndicatorView + target + 8698C4558AE758AD92477EC134E714F7 + targetProxy + 0072EDFE084B7F04F724E3320A12051A + + 02929C6EFE98A94A6289661403A636C5 + + fileRef + A5A0EE43C9FD7834B17D804EDE2C39E5 + isa + PBXBuildFile + + 02D5AFAD05FB846F86EBD9AC444DD984 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + FSCalendar-umbrella.h + sourceTree + <group> + + 031C742796D4BE1C43EAB3D494EA4F6B + + buildActionMask + 2147483647 + files + + 229DE6B8FE392023C9B9A74F3193F65D + 1D2EFA0B86C5816E844D2436C2B5EBA7 + 10AA9E0562348025E925BDD4096992F4 + 001A845B74D148EBB6F18AE5742E2D17 + 636FA0BF7676E4972B8843F989D305F9 + 7C5E58BD5FB3BCDD5AD14F713E251CC8 + 237B3AC32C4A07FFE56EFB3E26E90013 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 03898318E84FF14F797A2ED995DAA321 + + buildActionMask + 2147483647 + files + + B1CFEE9FF3EB53A1C0009F6EFD1A9043 + 8C12554B835AD5AE59B3E1F69124913E + DACEC73F51892F550928C78B65B4651A + 8B7CA5A9DA7A3F51B617639E50EB7484 + A8F50206CD66357B3514F8F057DE87B4 + AEC65AA7DED93A21068C32F0BABCD88C + ED6729BBCAA181743608834CFDA28B10 + D9AFEB183A6CB4D9B68B6F907D09F993 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 03A152E421788D7A175859F9A2FDA5FD + + buildActionMask + 2147483647 + files + + DCFE6F7EF7F4BB25A0BA8D725577BE33 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0405F41AA2F6BCBFCCC47C4A96245B39 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + name + Info.plist + path + ../SwiftyJSON-watchOS/Info.plist + sourceTree + <group> + + 040776E6CA34B6B9FC88C31E0F511245 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + SwiftyJSON.framework + path + SwiftyJSON-iOS.framework + sourceTree + BUILT_PRODUCTS_DIR + + 044E029F9285F67624E340B9F1043C6B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationTriangleSkewSpin.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift + sourceTree + <group> + + 0479A980286966C2AB6B46EE876D7C4D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIColor+Chameleon.h + path + Pod/Classes/Objective-C/UIColor+Chameleon.h + sourceTree + <group> + + 05377D88E97E09C79D6EFCAFE8387625 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Onboard.xcconfig + sourceTree + <group> + + 055F2B4EA15864BB49D7EDC2796782DC + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + D7FF48F3092783E4E42B336F0DEF2D1A + remoteInfo + Onboard + + 0567C8D1682E16F651C8905C2A7508B9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-tpg offline-umbrella.h + sourceTree + <group> + + 06373D73E2921720ED7BF96B9DADCC0C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Pods-tpg offline Watch Extension-dummy.m + sourceTree + <group> + + 0637AFA0A1167808DA6FC820ACA891D6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationLineScale.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift + sourceTree + <group> + + 063E3C59C1B7382B70A98D5EF8052B8D + + buildConfigurationList + 8B264765D54120716010003928FFEA54 + buildPhases + + 8DB0A262116A918129A09DFFA141737B + 3D0EF9D1ADE18E2F4C9225C11867BAEB + 85F1B93FE9404B21C6884518E58091FE + + buildRules + + dependencies + + isa + PBXNativeTarget + name + Alamofire-watchOS + productName + Alamofire-watchOS + productReference + D5D89DD1F13627BCBEBCFA37F9439883 + productType + com.apple.product-type.framework + + 06720CD7705F71178390FE16A75D419A + + fileRef + 36E733E927A2AE4F1581FCD67BFC6DEF + isa + PBXBuildFile + + 0726701E029A3D2C0F0B9CFA21923ED2 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarScopeHandle.m + path + FSCalendar/FSCalendarScopeHandle.m + sourceTree + <group> + + 074E1B768E755CAD2D14F733E80D73D9 + + buildConfigurations + + CC109B752CAC2344FC05D525CB4B018A + 660DC941DE1B1E27F0DC16CC6D66C61E + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 0771C3A4C23CF0A5069F5525B77A66A7 + + fileRef + 73379C9E26389CA7D26E6B34D770D703 + isa + PBXBuildFile + + 079944400F61A98B1BBBA6905E3CBCA0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 081BC0EB022066A8AA0B18F8DD1CF28F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarAppearance.m + path + FSCalendar/FSCalendarAppearance.m + sourceTree + <group> + + 086026A21EAADF83EF62E2868F88F4C9 + + children + + DE177FEDE0703332B50A5A4D7E6D2079 + 14F568ECD5C3B54BF380E7EC7E00A47D + + isa + PBXGroup + name + AKPickerView-Swift + path + AKPickerView-Swift + sourceTree + <group> + + 08A8089D7472CE47CA5B59513A9B485A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIImage+ChameleonPrivate.h + path + Pod/Classes/Objective-C/UIImage+ChameleonPrivate.h + sourceTree + <group> + + 08D62DA1B69C6B1C99BF9B3B8CA1A9F4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Async.swift + path + Source/Async.swift + sourceTree + <group> + + 08DA4665F97C11B2674E2245E4965358 + + buildActionMask + 2147483647 + files + + EE442E93E5BBC6AB805C3E1B2D3482CA + 5F7F40B822116B9DABC6B73B8EBE338B + 3084B72EA21046D2E806C9661E8FF54E + 89CE4E0D4BEDD88C4B05A9D54526CE7E + 75C2EC4E91C632BA530B5B1E60DC4AEE + 811BF3A1EDF9B595901E2FC404641EE7 + 7CFF3D11D2A80054659CB09F8D17A1A1 + 788907A105CE1BC948CBF1DC3F0099CD + 52A5E8263E7C91DDAB94F66A5364369B + BD9F0543F7B4F444CA4A0948C0F03070 + 81694B31763640FB3743C90CF3547673 + A28930DA66986E8D161FF256CFA2E2E9 + BDC0281540324E5A27D70A10BD529254 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 08E47ED3FA5E0AEA61435C587DDCA347 + + baseConfigurationReference + 666E1CEA667BAB676E3F839BA35DD90C + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/AKPickerView-Swift/AKPickerView-Swift-prefix.pch + INFOPLIST_FILE + Target Support Files/AKPickerView-Swift/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/AKPickerView-Swift/AKPickerView-Swift.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + AKPickerView_Swift + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 08EEEE46A4AC8AC54F4EF77436245BED + + buildActionMask + 2147483647 + files + + A7DCEC21E1C32D8A2710782521B34164 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0928BA1430F3548012E2C104B1F47154 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + name + Alamofire-watchOS.xcconfig + path + ../Alamofire-watchOS/Alamofire-watchOS.xcconfig + sourceTree + <group> + + 093732CF879DA22CBF0459EC64678584 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + AKPickerView_Swift.framework + path + AKPickerView-Swift.framework + sourceTree + BUILT_PRODUCTS_DIR + + 097AE4014349090D14C6C5637F8A3464 + + fileRef + 8176EF7AD43D5A379B157BC99223CF28 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 09980330DAAA709A75005526167B0BE5 + + children + + E9EDD9643F20B37D2E4A80FB9EB37267 + 2EEB7232A368A4830B2B94CC958621EE + + isa + PBXGroup + name + Frameworks + sourceTree + <group> + + 099960FDE2B19E5384DA12CDE04B0CCE + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SCLAlertView-umbrella.h + sourceTree + <group> + + 09A32B41C7F51B14395B0AFDE1537523 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-tpg offline.release.xcconfig + sourceTree + <group> + + 09C24C92F77C7C8956372718BAA36E05 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 0A603E4CC3ED720849009E1FF6DBEBE5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + FontAwesomeKit-dummy.m + sourceTree + <group> + + 0A984F75D7AF9321E9237A1F65995B44 + + buildConfigurations + + 016A26F9134ACFEF60D9DF08A8D77EFC + A71FF6ED3BA37FCEF019D1C5B75BFCFD + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 0AB4C7D0B16AE708849843F055FC111C + + fileRef + 726937D5C8BC54B2B99A37DCEB4980BD + isa + PBXBuildFile + + 0B2B40BF58A324E6486B5EB81B632A19 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DGElasticPullToRefreshView.swift + path + DGElasticPullToRefresh/DGElasticPullToRefreshView.swift + sourceTree + <group> + + 0B525EABCAC4BAEA6B73CF7A5C7EAFDF + + buildActionMask + 2147483647 + files + + 68601DD8D1367CD635712B9FF4797A9A + C6E011EAC995523734C90C4B3362D037 + 86BA959299BECF7B0314ECC08EC0614F + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0B87AEED887108FF3FDA89B00E048E1B + + fileRef + 0C4008FA844C454405F88B19FA003A37 + isa + PBXBuildFile + + 0BA569BA6EE4E0DEE2DD50EDB1BE80EA + + fileRef + 0EFF24345ABA303EA4FF520401C17D53 + isa + PBXBuildFile + + 0C0F2707AC51B7AE391395A888647E09 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + ChameleonShorthand.swift + path + Pod/Classes/Swift/ChameleonShorthand.swift + sourceTree + <group> + + 0C3240922851CEEC70B722E9B9D6B6AA + + buildActionMask + 2147483647 + files + + 72F875E3B7DF608DFB3B19224504D46F + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0C36D453A1A872D16378CBD69630AFFC + + buildActionMask + 2147483647 + files + + 2A38F26856F806F2E24D493B420DBCD2 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0C4008FA844C454405F88B19FA003A37 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRCircularProgressView.m + path + src/Components/MRCircularProgressView.m + sourceTree + <group> + + 0C4EA2F8CD24B71BD3C823F1F7BE849B + + baseConfigurationReference + 1270BD2BC49934F62901F5EE26F7CC80 + buildSettings + + APPLICATION_EXTENSION_API_ONLY + YES + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + INFOPLIST_FILE + Target Support Files/Pods-tpg offline Watch Extension/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MACH_O_TYPE + staticlib + MODULEMAP_FILE + Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.modulemap + MTL_ENABLE_DEBUG_INFO + YES + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PODS_ROOT + $(SRCROOT) + PRODUCT_BUNDLE_IDENTIFIER + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + PRODUCT_NAME + Pods_tpg_offline_Watch_Extension + SDKROOT + watchos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 4 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Debug + + 0C530E4B9FAE01AB47BAD018E8D6BD7F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 0D4ADB973434EF4655727AB5DBEDC467 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Filter.swift + path + sources/Filter.swift + sourceTree + <group> + + 0D6B6EDA531359137080AF7834E42DD4 + + children + + D8D848205A2C3E33E43C3F4F21B72039 + 8002BC0727E9A55C77975047D7F4513D + 7F1C0B7F78B3131BAC17509FA156A59B + 48C9F271FBCC7592DEA400D81CC6AD37 + 6E9C2865A3E30F11FC879056636CC7D6 + D610891B4297E0DC4A3B25F66C84245E + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/EFCircularSlider + sourceTree + <group> + + 0E7A29C04D4BBCC7DBB4A76569AEDE60 + + children + + C165D3D25B8808DF251152BC0AF2CB49 + + isa + PBXGroup + name + Frameworks + sourceTree + <group> + + 0ED4693DD1A1D5120F7C1303F2D44129 + + fileRef + 6668D6ADD917E4A5E9475FF6BC95EC54 + isa + PBXBuildFile + + 0EFF24345ABA303EA4FF520401C17D53 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Upload.swift + path + Source/Upload.swift + sourceTree + <group> + + 0F1FC681700BF1AF0A5038E78ED7DE66 + + fileRef + 6C9AAE941AC7CDF48E9EB2CA2EAC6768 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 0F69600F494AC278C1F6E395179D0B8E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallPulse.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift + sourceTree + <group> + + 0F6B933BBEE29B3BB2328056A42533D2 + + children + + 20499F7A890A6D08987685F0621BEA5C + 74E58D5D8D74FB61414C5BF7F52C14D5 + E7C75EC032173C375F33906F5885064D + A36812D64930E0089E456916095FC128 + 4327E69EA764B5E758D98ABC3261EE56 + 23A7E7BC89EBDB6010C8A33B3CF9919B + + isa + PBXGroup + name + PermissionScope + path + PermissionScope + sourceTree + <group> + + 0FBD5E2C6A03099EC2D8BC9F1FCCE00C + + fileRef + F834CACF20C495FC9A95546E26E11648 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 0FD1E1DB785459376F5AD033F11125CD + + buildActionMask + 2147483647 + files + + F8FBE1DB56050AD970A4F89D093B9CB7 + CA9986DC70DB1904D00045789FDF47FB + 65D5C8A7B0507ED39B218CB35A73D532 + 7A7E7427D12ACA69C0244F8692C80B4F + BD54DEF9E1421221348FD92E656E1DE2 + AB15DA90B2A574DB30894F8E209C32B9 + 57BEF19D24A56162659239E30322EA67 + B3D0F7D545EC32BFBE276DBA4B760AB8 + D8B4C7B4DFF0B825EE64889145B7623D + 011F92E2F8365BE2C1AEE82CEFB040FA + 9FA3CDA57290EFD8A64E227312F13949 + 7F1E7CE3200B397BDD5314CD18A634F7 + 2B308EB9576579A298B0FD2FEA61CF9A + E258C72F744D28F06BC21BAC66573318 + F339E94E38E5065683FAE9BF97EFC592 + EB717CB50DCCEB28CCFDA01C39B432BB + ECDFA6CDAFA2207ECE1733E8E1EB8980 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0FDC39DD2A55538A0A0702DA0589244A + + buildActionMask + 2147483647 + files + + 5DE693D792CDD742674AFC49C856401D + 0771C3A4C23CF0A5069F5525B77A66A7 + AC5B3840989E51908F23437283C812D8 + AC2A3E4BD0206BBAD26BB44A10B910DE + E6F375A2B878B22B7E8A34D5524B527A + 72EDA8E61D7A0110F5544A4F58984810 + A692BE7D4927D633187CC89D4E2447EB + FB27F2811CD7FB6F55C6785CD882D5F0 + F03ABD336CFCA6B0D44FBE282BBCE0BD + 481507F0BF6263EE91CDADAFD26078A8 + 2EFD9F84783B08234C66413122F31E55 + B850341D6210AC5C41F042CB552895DD + 3857479CBB9A1D1103416E309031EA81 + 20F5024E5158F2F9E71263BE9BF26E43 + B4002705B407CE9B3BEE98B1D294A065 + 718BF54C255A222F9C2D307939A3A3EE + EDFC523A5F19ECFF928A3CD172DD77BB + AC6033FF7AA53434E139B5D29D94D938 + 215E6C6229E7BB544BED51BC34C02385 + E93F7537D7281728CFE3B5108B36D30D + E1834E51CB8E4E87F728C7292BBC827A + 759B4A998FF3E563AFBE2ABDC1460272 + 52A0D459DC9915B1FA4C62CB5911D68A + AACDDE362FCFED7F106AF2BDA5C66B57 + 86A93CA03EE1541CB25611641A192AE0 + 483F8F44678B996E73DB4134414070D1 + F0773AC9987AB625DB323BE396B47B06 + 4C243D8D7FAE8DA260B09D046ACBA5A5 + F184344C26287628234779747B25E716 + 87D5AB92B78FC069B8E5B743491DEFC4 + 8437636BEB5B0CCFC7CB4E58199413E8 + 96CC67DB5753C1B602377DEEEA9D8B4A + B962ED1B0D4466FE5AFD475EE58D4058 + 8F5D433367D622A00CA4F3714EB501A4 + C2B33B7C772BD3B3BBCAA7F6E28B6295 + BFBC61C63FA0C34553782367A3A88BC9 + AD0FA6D7EF237874D0AF4066DF80A2A1 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 0FE9093598BDC2E573B5AC53CC2C517E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Notifications.swift + path + Source/Notifications.swift + sourceTree + <group> + + 10AA9E0562348025E925BDD4096992F4 + + fileRef + E86B5BCF9AFD65C85F79982F1E65F3E3 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 1101628B16CB1BC1D3465E66872B95D0 + + includeInIndex + 1 + isa + PBXFileReference + name + SwiftyJSON-watchOS.modulemap + path + ../SwiftyJSON-watchOS/SwiftyJSON-watchOS.modulemap + sourceTree + <group> + + 115824B7CB2E76E5ACB836A251E79404 + + buildConfigurationList + 74DF8A9CBE6EAEB8C19105D047645443 + buildPhases + + 3943D764C0D525CFAF94F943648E17BE + 9E138A11AB568FDD962F892987F6F048 + F60BC667495022BB71DE0C146D3C99EA + + buildRules + + dependencies + + isa + PBXNativeTarget + name + DGElasticPullToRefresh + productName + DGElasticPullToRefresh + productReference + DE1D81DF9C3EFE93FE96D401DC42012B + productType + com.apple.product-type.framework + + 115BF7DC111926ACDADBF12A9B1E35E4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-tpg offline Watch Extension-umbrella.h + sourceTree + <group> + + 11BA64BC0B2FE8DDB41883B7241A8C49 + + fileRef + 5D61A152210B0A4AC6DE57CF1DEC913A + isa + PBXBuildFile + + 1236ECB96A915EC617957A42838CDD7B + + fileRef + ECBA47A31E296B87BA94ABCFC8D04862 + isa + PBXBuildFile + + 1250C15821D063438351CA3D374B8153 + + fileRef + C29FB34B3D3CC709C8343F343071F6F5 + isa + PBXBuildFile + + 12525765AC9F70C6CA0D2DCF8513E51B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + SwiftyBeaver.swift + path + sources/SwiftyBeaver.swift + sourceTree + <group> + + 126169B8BF7430D89BB990B97C36D75F + + fileRef + 08D62DA1B69C6B1C99BF9B3B8CA1A9F4 + isa + PBXBuildFile + + 1270BD2BC49934F62901F5EE26F7CC80 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-tpg offline Watch Extension.debug.xcconfig + sourceTree + <group> + + 129F563826E5E9A812D60D486DBDF6A1 + + includeInIndex + 1 + isa + PBXFileReference + name + octicons.ttf + path + FontAwesomeKit/octicons.ttf + sourceTree + <group> + + 130119C1E67865675CC8AB8CD210FB14 + + fileRef + ADCE271C675326385ADFD7714A7BB8B8 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 13804F6B82334655B059601A60A1FFB2 + + children + + D47BBB0668B35535BCE0F3B009DC0875 + 789916382E59ADBE8407B6AAEBE8BE7C + 96DF4B6A438D02F637503AD286EEB3B6 + + isa + PBXGroup + name + Localize-Swift + path + Localize-Swift + sourceTree + <group> + + 13D361D6666C123D3355F6E3BDDD8033 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + INTULocationRequest.m + path + LocationManager/INTULocationManager/INTULocationRequest.m + sourceTree + <group> + + 14483911561319B902746FD3F21840B0 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + SCLAlertView.framework + path + SCLAlertView.framework + sourceTree + BUILT_PRODUCTS_DIR + + 1480FF8A3480070E78BB6E831A125957 + + isa + PBXTargetDependency + name + SwiftyJSON-iOS + target + 14D30697C5204FE013909BA0F029F93D + targetProxy + 2A1B265AC4A5E3E247BE7BB8F1720111 + + 149C1027FDDFEBE424BD4B407A167906 + + fileRef + E0EA97C7A06E7F9F5DD0876140378CBD + isa + PBXBuildFile + + 14D30697C5204FE013909BA0F029F93D + + buildConfigurationList + 87CEFC0186EC9D9BE5CA8802DC83A303 + buildPhases + + EC82CC4D4F952C1DE7C3D560F46F7154 + 654487B362A54F7B61DC3377AE875ADF + 6B01EE2742369D8A8528EC336AB3FC8B + + buildRules + + dependencies + + isa + PBXNativeTarget + name + SwiftyJSON-iOS + productName + SwiftyJSON-iOS + productReference + 040776E6CA34B6B9FC88C31E0F511245 + productType + com.apple.product-type.framework + + 14E0A5E3A6EE9CB3BEE7EFE7936A08AD + + fileRef + 98FC2CDDABA4A8E2D1978B56C20CA69E + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 14F568ECD5C3B54BF380E7EC7E00A47D + + children + + D2FE5DF7E0F749F8A25CB2381ABE4C0D + 666E1CEA667BAB676E3F839BA35DD90C + 7B47980BDB7D6212267856620E15AF7A + BBEBF2291A0DDF65857B21A75BAAE5D7 + 94288D98DDB588CCABEB079FA1ED081E + BAAD97D5A4D227A0C032EB453C5053CE + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/AKPickerView-Swift + sourceTree + <group> + + 15C1AE767B7BD39E3A82A76D2EC1931F + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 15C2B07CA7B651EEBB343804D2E82740 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Alamofire-iOS.xcconfig + sourceTree + <group> + + 15E113F19F49C0C0472242BD6E849A1B + + fileRef + 46E2B32822014D46D59E50A88CE3E271 + isa + PBXBuildFile + + 15E7F834642D60217656716CD6CEB4EF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + EFCircularSlider.h + path + EFCircularSlider/EFCircularSlider.h + sourceTree + <group> + + 16103CEC0262AD29E42A43B9CCF4AE08 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + DGRunkeeperSwitch-umbrella.h + sourceTree + <group> + + 1635A72A184E8A3C06EB9F0384AC92A3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + MRProgress-umbrella.h + sourceTree + <group> + + 164B6C3A191D2140F6FB74763BC1D63F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIView+FSExtension.h + path + FSCalendar/UIView+FSExtension.h + sourceTree + <group> + + 16712E84BDF3AEE5298D556A030DAADC + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + EF89A4DA92CC0D0F76CF983AB2A6F4F1 + remoteInfo + DGRunkeeperSwitch + + 16CEE335B25021CCEA3F64552B77E526 + + fileRef + 7AD603BED1010165232F13B4F493A8DA + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 171921A20D062AEAF39F9628F5DC79D8 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Onboard.framework + path + Onboard.framework + sourceTree + BUILT_PRODUCTS_DIR + + 1736C9EB167121B7B4033DB3304686AE + + fileRef + 39CFAE1CB6595F0C44AE27B8B2A2954A + isa + PBXBuildFile + + 1758046FA7FCB6161B3C362F3D8E7ED3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRProgressOverlayView.h + path + src/Components/MRProgressOverlayView.h + sourceTree + <group> + + 179765FD0C0FF5472F28D27F28097EEB + + fileRef + E0EA97C7A06E7F9F5DD0876140378CBD + isa + PBXBuildFile + + 17C95E94C2651A1FDA2A933D73A1326C + + isa + PBXTargetDependency + name + SwiftyJSON-watchOS + target + AC09AA278A433796BC1633E8E9BAAF27 + targetProxy + FF838400EFA243FA870C843C043254F3 + + 18290E31DE0A5E6026079E8A6EDA6ECA + + includeInIndex + 1 + isa + PBXFileReference + name + Material-Design-Iconic-Font.ttf + path + FontAwesomeKit/Material-Design-Iconic-Font.ttf + sourceTree + <group> + + 18581811C2E4F921BA210687C370239A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarEventIndicator.m + path + FSCalendar/FSCalendarEventIndicator.m + sourceTree + <group> + + 1859CEDA1A4A076F54D365886BEE004F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + NVActivityIndicatorView-prefix.pch + sourceTree + <group> + + 18BC1B2A0EA94E2BF2DC912E1645E906 + + fileRef + E7C75EC032173C375F33906F5885064D + isa + PBXBuildFile + + 18F7B1BC3DFC0A52FF8FB133607EEA02 + + fileRef + DE880DA68D7A784BC41B108C040CBF0A + isa + PBXBuildFile + + 19A44C55B25612B9721A27E7C49E03CF + + fileRef + 7312034D9EE7758862A1861C3CC7AB5E + isa + PBXBuildFile + + 19C95D49F9D91535EDF35047A6AE5277 + + children + + 093732CF879DA22CBF0459EC64678584 + E10811611C26692BF478956AFCDF58A8 + D5D89DD1F13627BCBEBCFA37F9439883 + AF59AD6324ECDD2FA48E698221C5DF5E + 1DE7F709BACEDDCDF8941802DA6C5BE9 + DE1D81DF9C3EFE93FE96D401DC42012B + 327CD9CC9A7C9740E5A0018D0D43B133 + 801D9AE7807DED69A9EB11F5301984E2 + C79DD6403B4134BF583372B42A62F5A3 + A4DD74546F0E5ABE1E63FE09B258A950 + DB1D4D4FEB351CBBBD9A5837771AEAA1 + 3BBF1187E808E1DEA2FAF8E31E9C2D7F + 886A5683B85D4C7D55787277011BC8F6 + 65B0CD1EDECEA34E3464FE711A33F0E6 + 171921A20D062AEAF39F9628F5DC79D8 + D360DE7B0129863BADC6A5763FC638A5 + 6F200F750E61DB9022BD5CE95C163D5A + B9A641EBD699E9BFDB6FC1F70425E3D6 + 14483911561319B902746FD3F21840B0 + EE363F2391D07479199DF23D3E965F29 + C6ABE07B09DBF0F7BABD30BBDD08ACA0 + 040776E6CA34B6B9FC88C31E0F511245 + C3225E55CBB2C656E9FC052E5125798D + + isa + PBXGroup + name + Products + sourceTree + <group> + + 1AEBBDE75E9B16E92552D3AA3BB51A49 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRProgressView.h + path + src/Components/MRProgressView.h + sourceTree + <group> + + 1B0527043FE99FCFB7F2C62FA4C973D0 + + fileRef + DE6980B9737B568FD68F4C9141D79FF4 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 1B786472CACB2184D1751CE40519C249 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSLocale+SwiftDate.swift + path + Sources/SwiftDate/NSLocale+SwiftDate.swift + sourceTree + <group> + + 1BBF269188A10B5692DBB2FDE0B1B42A + + fileRef + BF96FD953B23FB892831FECBA3A94A68 + isa + PBXBuildFile + + 1CEBA9941F7A853124AB4CAA020650BA + + fileRef + 9ABB756BA507BB860FEEA4ECF922EAE8 + isa + PBXBuildFile + + 1D2EFA0B86C5816E844D2436C2B5EBA7 + + fileRef + DA2749A83D5B36911D4E7199EE397597 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 1DE7F709BACEDDCDF8941802DA6C5BE9 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + ChameleonFramework.framework + path + ChameleonFramework.framework + sourceTree + BUILT_PRODUCTS_DIR + + 1E11764067A3FE3683F412DF7BCE2D79 + + buildConfigurations + + 9426D56D8B9D73D6F15B6A4DA1680881 + 3D29BD3040EE243CF517462D9C149CAF + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 1E499A585D4AB266F8CA307193BD6BCF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FontAwesomeKit.h + path + FontAwesomeKit/FontAwesomeKit.h + sourceTree + <group> + + 1E5C45E9FDB5225C963EFD90509E3BD4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + SwiftDate-dummy.m + sourceTree + <group> + + 1E8642B00B4E01E477F9A0CDAB74627C + + buildConfigurations + + 9DBB260424A93ECB857953FCCA088D8D + D62875D1995DFB79936B63D5BAC70BC7 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 1EF98E756893E2D2DAF8BD88A98EF184 + + buildActionMask + 2147483647 + files + + B76322B76C1085EA2EF80DF7A7A92417 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 1FDF39FC9AC8BB97395383590A295D72 + + buildActionMask + 2147483647 + files + + A8E09F672239DC6BB1DAE7CACBE17584 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 200426898CFBEF623EEC0EC3811ABC89 + + buildActionMask + 2147483647 + files + + 717E6DF8C0702567A757898EEC4C07F7 + D625A38F982BA2BB58D9FF6E58614806 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 2019F6EA9F6BD039AADB1D2E35820A95 + + includeInIndex + 1 + isa + PBXFileReference + path + Pods-tpg offline Watch Extension.modulemap + sourceTree + <group> + + 2037EC86182521CD07D27767933F7536 + + children + + 955FD0AF22D52010667DDD9789A3F2A2 + 15C2B07CA7B651EEBB343804D2E82740 + F95F0CAE21D9C3DBDF266CA0C4D39AE9 + 8A8105A0C7A8517A5ABCA401BE6FE039 + 2AEB5CFFC05460BFBEAB8A7FC0D21585 + 5E50D064BD227C272420975A4AF035F8 + 0928BA1430F3548012E2C104B1F47154 + CE12C9062588C667CD17D9B3831971B0 + A1B8ED767C51F33161FA9C1B8BD39606 + C8530267F32F9C5D6DB04350092151C6 + 24A1E9BAA67666DACDD0BC91B431E6E6 + 496728EADF9C1702E224FCCC1E12F903 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/Alamofire-iOS + sourceTree + <group> + + 20499F7A890A6D08987685F0621BEA5C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Constants.swift + path + PermissionScope/Constants.swift + sourceTree + <group> + + 204DE417C1036FE04DA6AB36D80E0297 + + fileRef + F5D10CA3D63021591D39AE358891BA73 + isa + PBXBuildFile + + 20C5E87C1DF07DEA65CD74B8D07D6D1C + + fileRef + CABEB716184568B006F7754269DF3CDA + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 20F5024E5158F2F9E71263BE9BF26E43 + + fileRef + B144462CABC8C185E77D5F62F8261825 + isa + PBXBuildFile + + 21067C6ABC90B85C3F83A8098CE38300 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationCubeTransition.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift + sourceTree + <group> + + 215E6C6229E7BB544BED51BC34C02385 + + fileRef + B9A9AAEB10D58452A852D44FEA61499A + isa + PBXBuildFile + + 2177FACA31E0FA63D7D2BDE24C466F08 + + children + + 2D734ACD340EBF01458C9E6F432C285C + 38C147ABC2D08D52142CAFD9EBC8A842 + A85E7C45C2C5560F5C30392EB2DF31D1 + 7F74F6750DCA2C74CBE4D503E961B4C6 + 1859CEDA1A4A076F54D365886BEE004F + 5409E3E86E05B187D9E6AAE533B32967 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/NVActivityIndicatorView + sourceTree + <group> + + 21890B46C0506F8FDA6C1BBB39B76537 + + children + + AD993760FFB9260D5E6EC387C7C39A68 + 4E614F66151A3E4691C35D469857A352 + 342D3FD84704D3AB6F615D6629F8598B + + isa + PBXGroup + name + Zocial + sourceTree + <group> + + 229DE6B8FE392023C9B9A74F3193F65D + + fileRef + C0AC999EFB8D893867B3DC2C84362326 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 23094F4F8E85B7CE4BFF47DD4ACC8E9D + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 235951EC3801118BDA44E055541701D4 + + buildActionMask + 2147483647 + files + + 77246F6AA53E115480FAEAA5CDCC3471 + 99CFFC9CD639929E19526770E790ADF6 + D8B825F2FA8DF2A94273D4AE8BA3DC96 + EAB85CCCBFB0ACCCDECFD201735E2898 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 23791BB07AB12A358882FAD5F7810150 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + ParameterEncoding.swift + path + Source/ParameterEncoding.swift + sourceTree + <group> + + 237B3AC32C4A07FFE56EFB3E26E90013 + + fileRef + 5EAB5FF71F7BE46A5FED451B3C55987B + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 23A7E7BC89EBDB6010C8A33B3CF9919B + + children + + 26604B5B7F972EDE42754A2B4DA18BBC + D9780B595CD6643011731F12E4A02B67 + 3DB1D647196B6284448AF7B77F13E89E + 6E3DB3F82F3648296FD1BF2E36CFC124 + 6554CC7F43B05EFCCD7FCCB3D6F27E8F + 4326EA026B506D2EA642B7AEAC125E8A + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/PermissionScope + sourceTree + <group> + + 24267DA0FF9710DD416C9B55056F5677 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRStopButton.m + path + src/Components/MRStopButton.m + sourceTree + <group> + + 247B48F0E931BA651C06E8421C5A0CFB + + fileRef + D00497D84C8DC9960CE80C61D2FBCDA8 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 24A1E9BAA67666DACDD0BC91B431E6E6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + name + Info.plist + path + ../Alamofire-watchOS/Info.plist + sourceTree + <group> + + 24E7D20FD204AF7AACB30A3B7C16388C + + fileRef + D10D84612A8837FC49554FCD6CE7725E + isa + PBXBuildFile + + 256EE1369C8616EE1ECD4885546714D5 + + children + + E91F050FE186DDFAD9FB4631361BF1BE + F10DC2A793C1B040AD2EDDB74761FF3A + 0A603E4CC3ED720849009E1FF6DBEBE5 + 6C7E354B436E9E308CE188F51E494FCE + B99ED447787D858E61E396C89EDEC563 + 3B59D9FBE00E64C95A6FC9DF7E0BEA87 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/FontAwesomeKit + sourceTree + <group> + + 2572F0F3AAEF55F3191DC273E861857F + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 5AF1C612F4CDA296FC4C82D9BD0BD25D + remoteInfo + INTULocationManager + + 258D59FBC0E4492363937A4FBCE41E6B + + buildActionMask + 2147483647 + files + + EE691DA3C9B83F18E776E1437AC81D60 + F60E1974ADBE32987CC1F894A09C93CC + 605479F859F350D44EB0FF16021EE436 + D0FDBDE18D6FAABAEABA137E6A6B2B9A + 8A593E68797C15E2C6C1ED6DCFDC08BD + 18F7B1BC3DFC0A52FF8FB133607EEA02 + + isa + PBXResourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 25DDD9D65FBD08F99FB1EDC78289F649 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationLineScalePulseOutRapid.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift + sourceTree + <group> + + 260526B0218C225B91E3664094A8DCC0 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + C55E46AC6A1E70A6AA25E306AE545375 + remoteInfo + PermissionScope + + 26604B5B7F972EDE42754A2B4DA18BBC + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 26821A98774BBD2296063F1634AF8AE3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DGElasticPullToRefreshLoadingViewCircle.swift + path + DGElasticPullToRefresh/DGElasticPullToRefreshLoadingViewCircle.swift + sourceTree + <group> + + 271BCC51F0050F9CAD885B0734030DCE + + buildActionMask + 2147483647 + files + + 15C1AE767B7BD39E3A82A76D2EC1931F + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 2754C4E95E265639D7CFC90BA8264476 + + fileRef + BC73388CB913F7F28A16BAC639E913E0 + isa + PBXBuildFile + + 275F0B807ADF1163898114F3C35B4689 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 278C52DB9A993B05EEDE4D395AC9BC37 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKFontAwesome.h + path + FontAwesomeKit/FAKFontAwesome.h + sourceTree + <group> + + 28BC11DB5236A06FE7899FE3D8C12BC8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + SwiftyJSON-watchOS-umbrella.h + path + ../SwiftyJSON-watchOS/SwiftyJSON-watchOS-umbrella.h + sourceTree + <group> + + 28BFEF0F25609E5CF6D310771B92CD24 + + fileRef + 24267DA0FF9710DD416C9B55056F5677 + isa + PBXBuildFile + + 28DA32D9549F3CA3519BD9BD67C3F077 + + buildActionMask + 2147483647 + files + + FFFA24AD733F7F688AE0747CBA0BA280 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 2908766FD2C612D3CE38631C216E5E7F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UILabel+Chameleon.m + path + Pod/Classes/Objective-C/UILabel+Chameleon.m + sourceTree + <group> + + 29D2BA66BDBF8D983D526899F7F324A8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIAppearance+Swift.m + path + Pod/Classes/Objective-C/UIAppearance+Swift.m + sourceTree + <group> + + 2A1B265AC4A5E3E247BE7BB8F1720111 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 14D30697C5204FE013909BA0F029F93D + remoteInfo + SwiftyJSON-iOS + + 2A356D564FA2B8D64F7081E23DD8A424 + + fileRef + BBFC6013BD1C3CCC528886453C70B655 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 2A38F26856F806F2E24D493B420DBCD2 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 2A5B31E1F3FD73E3992BAD20B850BA51 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+Equations.swift + path + Sources/SwiftDate/DateInRegion+Equations.swift + sourceTree + <group> + + 2A7C32FB0C781CBA3F67AAC8614360FC + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SwiftyBeaver-umbrella.h + sourceTree + <group> + + 2AEB5CFFC05460BFBEAB8A7FC0D21585 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Alamofire-iOS-umbrella.h + sourceTree + <group> + + 2B308EB9576579A298B0FD2FEA61CF9A + + fileRef + ECCAD59AF33BC4046C53EC65B9C7F80A + isa + PBXBuildFile + + 2B426CDD5C4D354DC4FBF0FFCDD63F23 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + SwiftyJSON.swift + path + Source/SwiftyJSON.swift + sourceTree + <group> + + 2B4991D7C1045F41C0D9E91177FA8AA4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallPulseSync.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift + sourceTree + <group> + + 2B70D4347E6040771FD30904C77339D5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.script.sh + path + Pods-tpg offline-frameworks.sh + sourceTree + <group> + + 2B760213EE78830957A29FF2AEC63E40 + + fileRef + EE400C7E88591D6E094D3516FC1AB97E + isa + PBXBuildFile + + 2B974AF0F9630827F8EA0361A9095555 + + fileRef + 1B786472CACB2184D1751CE40519C249 + isa + PBXBuildFile + + 2BC761C7F26B990973548460C12E1AFA + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 2BD1046DCEC2F5C2A3ABAC9693DA8196 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationLineSpinFadeLoader.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift + sourceTree + <group> + + 2BED398461A1D57AAB6C1A744EA177DA + + fileRef + 388999FAD5EF619DCCB087BCB1545FD3 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 2C22D6720637A1B2B2F95C2B902C0C7D + + buildConfigurations + + ACE86AFFAB489BE1565B469221BEA3B3 + 4FE392E812DAD6AE9F24A74E8905F488 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 2C6B3FF7F247D632BE6E88C994A6E556 + + children + + EA8E3989C5975FEE6D9719E3BD964DAD + D08CF2F59DED6848F1AB6501A2C8586D + 97BA742812CA0FA9DCAA86876C039FA5 + 420AE61A1D1C0620195A01BD34054A3F + F75D4F700C77705629EE9969F67FB4C1 + 72BA0ECE7244749EBA491859232E2414 + A7557F78CD9E3C2F56F5AA0DF9E74099 + A1C3B346893A1DCAC62F23112D3D101C + + isa + PBXGroup + name + Crashlytics + path + Crashlytics + sourceTree + <group> + + 2CA6B22883D94E6B94013B4BE9A6DC4A + + fileRef + 66E557E17489DFBFD0E6DA57946F3B28 + isa + PBXBuildFile + + 2D07D2111D7E72629502F1A9D7DA735C + + baseConfigurationReference + C5A18F53285E156BFF47A77330B6B38E + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + INFOPLIST_FILE + Target Support Files/Pods-tpg offline/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MACH_O_TYPE + staticlib + MODULEMAP_FILE + Target Support Files/Pods-tpg offline/Pods-tpg offline.modulemap + MTL_ENABLE_DEBUG_INFO + YES + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PODS_ROOT + $(SRCROOT) + PRODUCT_BUNDLE_IDENTIFIER + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + PRODUCT_NAME + Pods_tpg_offline + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 2D734ACD340EBF01458C9E6F432C285C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 2D8E8EC45A3A1A1D94AE762CB5028504 + + buildConfigurations + + 5CE06717BFEC7B441F7D209FF4F5E246 + 63F1B587EF9C7D6FA2266617A456D470 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 2DF2745F3738AFEF9BE0049F93D89EA9 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Foundation.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework + sourceTree + DEVELOPER_DIR + + 2E65437C76D316CBDC46A143022AC4F1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallClipRotatePulse.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift + sourceTree + <group> + + 2E7EFA9AF429A52352DCAE9DB454FDB5 + + children + + 9704E66F71CAC5874CC4FF01C2102FC3 + 49FE048BC2C12D86608FA6F7EE9D2CDE + BC73388CB913F7F28A16BAC639E913E0 + 9C32FCCE3E1B62C0BA6C0FCDE6134E24 + 7EF54B054A6E995AC89E484E94D7BE97 + 0C530E4B9FAE01AB47BAD018E8D6BD7F + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/AsyncSwift + sourceTree + <group> + + 2E95DB18B92B10FFD1F819FA2896C284 + + buildConfigurations + + 4B2954260407A070115A1B4D05E0F508 + C2493BFC5237B0B88FB213B66068D79A + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 2EA167F2369E9F84FB1F8E9B272C5798 + + buildActionMask + 2147483647 + files + + A3C8626AC35DC46D1291E4B38362F4FB + CD3C1E8D1BAFF179B13FDDDD6118D146 + 0B87AEED887108FF3FDA89B00E048E1B + 19A44C55B25612B9721A27E7C49E03CF + 83BC947C81CD6B24E1F1B4423A032DE5 + 2B760213EE78830957A29FF2AEC63E40 + 454E1EB4F7B62721B59982B1E983DCFA + F0062A0D1BD5D56ED254B194BB3B7EB4 + 28BFEF0F25609E5CF6D310771B92CD24 + 95167CA6D4FE6CFA3762703F17002FC6 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 2EEB7232A368A4830B2B94CC958621EE + + children + + B792D76D6E95A8B4546DED08585638AF + + isa + PBXGroup + name + watchOS + sourceTree + <group> + + 2EFD9F84783B08234C66413122F31E55 + + fileRef + 70A9CB1BADBC6470028F8494402C5229 + isa + PBXBuildFile + + 2F903EAED6109D3BF3F180DDFD24D62A + + fileRef + 7EF54B054A6E995AC89E484E94D7BE97 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 30116F387DC5D761B2F728A51619DAF7 + + children + + 3B432CF999078E6BA68F53503DA37A56 + 9DC1B1E0FDE05B2CFBB6A51B9D9D9A7B + 4CA03D3DE72346C3D89371CCFF709888 + 320A7A5F533740C94935BEAD9458E091 + 7F80871449CFFF1C3EEA1B409B3192D7 + E86B5BCF9AFD65C85F79982F1E65F3E3 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/INTULocationManager + sourceTree + <group> + + 302BFEBDBC4E81A415C204E50010AFA0 + + fileRef + 0D4ADB973434EF4655727AB5DBEDC467 + isa + PBXBuildFile + + 3054F23BB5817B5D9E23AF945EB56EA0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallGridBeat.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift + sourceTree + <group> + + 3084B72EA21046D2E806C9661E8FF54E + + fileRef + AACF259C714F9C058B028955BD99FB4A + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 308EB9B41341FEAF006009FC79D74EC8 + + buildActionMask + 2147483647 + files + + 2CA6B22883D94E6B94013B4BE9A6DC4A + 8628D4F2122871CB1B1EEC5736929A34 + 7E4CAEA6EAA610AF6437B72E7353F469 + 9CF1E4F3D4B83E9735B63EB907263E40 + 3FB5A158BB77C754CD80AF853ADE03E0 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 30911B6DEA2551B3A7C3F3880EC2AD2C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DGElasticPullToRefreshLoadingView.swift + path + DGElasticPullToRefresh/DGElasticPullToRefreshLoadingView.swift + sourceTree + <group> + + 309E84BF0A4033830F96F178DE549E32 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIImage+MRImageEffects.h + path + src/Blur/UIImage+MRImageEffects.h + sourceTree + <group> + + 30CBE910D8F1E4788ABC1AE84437F32E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+Operations.swift + path + Sources/SwiftDate/DateInRegion+Operations.swift + sourceTree + <group> + + 310CBB705E31A9305C10AABF2D3A2E69 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKFontAwesome.m + path + FontAwesomeKit/FAKFontAwesome.m + sourceTree + <group> + + 3129B0CCAE00C59E7C0D631811670ECF + + fileRef + BDE29EDCF3E5B5354727B3D733E56040 + isa + PBXBuildFile + + 319C5055D1DF6A441227E4F09D67EA0D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorView.swift + path + NVActivityIndicatorView/NVActivityIndicatorView.swift + sourceTree + <group> + + 31A8A7AD1B934A995B4E000E415A78F6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.script.sh + path + Pods-tpg offline-resources.sh + sourceTree + <group> + + 31B630D7E924123238DE209604CD7F7D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + SwiftyJSON-watchOS-prefix.pch + path + ../SwiftyJSON-watchOS/SwiftyJSON-watchOS-prefix.pch + sourceTree + <group> + + 320A7A5F533740C94935BEAD9458E091 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + INTULocationManager-dummy.m + sourceTree + <group> + + 327C554036E2C9BBF90D19DE628F7FAB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendar+DateTools.m + path + FSCalendar/FSCalendar+DateTools.m + sourceTree + <group> + + 327CD9CC9A7C9740E5A0018D0D43B133 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + DGRunkeeperSwitch.framework + path + DGRunkeeperSwitch.framework + sourceTree + BUILT_PRODUCTS_DIR + + 32967C4D6D1575A3A612C6713B35B2E5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Onboard-dummy.m + sourceTree + <group> + + 32E9A53C2041A83FC6BC394589C96201 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSDateInterval.swift + path + Sources/SwiftDate/NSDateInterval.swift + sourceTree + <group> + + 337564BDFF531733FAC3673C8F901A7B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRNavigationBarProgressView.m + path + src/Components/MRNavigationBarProgressView.m + sourceTree + <group> + + 3427E73FB6D383599E51382410A83DEA + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIViewController+Chameleon.h + path + Pod/Classes/Objective-C/UIViewController+Chameleon.h + sourceTree + <group> + + 342D3FD84704D3AB6F615D6629F8598B + + children + + DE880DA68D7A784BC41B108C040CBF0A + + isa + PBXGroup + name + Resources + sourceTree + <group> + + 3445A4B7953D61381745758E04EB34D3 + + buildActionMask + 2147483647 + files + + 3B9E5D66CB91CE9E97F30847D676A138 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 3472BFEF8691C0661B2FFDC01F956F71 + + buildActionMask + 2147483647 + files + + ADA631546BC13103C3496B47905217CB + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 351D7AEB6A0C1AAB2267AD1216CE8B63 + + fileRef + A36812D64930E0089E456916095FC128 + isa + PBXBuildFile + + 35F6C8A7280FBC36F0E40CD799EE6D05 + + buildActionMask + 2147483647 + files + + 711E05E4EE55A83C571B94C86F4DC1B8 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 363F873F524DBDAF9EE7F3D79E884D1C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + INTULocationRequest.h + path + LocationManager/INTULocationManager/INTULocationRequest.h + sourceTree + <group> + + 36756F83FF73B350B6045AEF48BD685C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarCell.m + path + FSCalendar/FSCalendarCell.m + sourceTree + <group> + + 36E733E927A2AE4F1581FCD67BFC6DEF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DGRunkeeperSwitch.swift + path + DGRunkeeperSwitch/DGRunkeeperSwitch.swift + sourceTree + <group> + + 379B9223D6293F174CCEAB702D3F43A8 + + isa + PBXTargetDependency + name + Alamofire-iOS + target + 89C69EB624EC8137588D9568F2E11964 + targetProxy + B0D970ABB08A836E47A4026FB72A11B9 + + 37E433452F9AEE4A0B51CCDA404B53EC + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 37E70B5BFFA69D015B03107871309A79 + + includeInIndex + 1 + isa + PBXFileReference + path + DGRunkeeperSwitch.modulemap + sourceTree + <group> + + 37FC1D4984A2C8800C25CC06EB1BCCCE + + fileRef + F39DCEA5EBC5476B103B02F706975DD7 + isa + PBXBuildFile + + 382ADC61BFD6F603D7126116EFBBF2D6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBlank.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift + sourceTree + <group> + + 3857479CBB9A1D1103416E309031EA81 + + fileRef + 7359B876ABD6B37138D790129C7CE7B7 + isa + PBXBuildFile + + 385BE00E6BCF73A2B3A39A1F6E775BA1 + + buildActionMask + 2147483647 + files + + EC7761D11370FB950DDCF8C953171A01 + BCCBE3BC84A4D62D9241F573F7A24BB8 + 8E8E82BF4D56E194B2EB297269AA46DE + B3C737674ADDEC4AD28C4DF1794120D4 + FA74B80DC1FBC39BF26C1E87FB3168F3 + A54AE4407ACC52B241E43CB017F276FF + D66C1AEBCB12D9FDE960FD4A46266CBE + EF758A31B8900B6F0CF67C030692525A + D29EB9254067EF35A19024E05830CDD0 + 89BC45A7BFF74434AA90C0A2FD7E1613 + 8D4CCDD0327C65102D18698E8D0E2A2A + 61934DEE05AAB777F8FFC95CBFF8D883 + FE9B97D4313BD459EC6B7ED95274B08C + B0C7ACFBEBFFB69B97AB113D78D4CAAE + 7A43A7B6F95E617D9219F3930890E1C8 + 37FC1D4984A2C8800C25CC06EB1BCCCE + 0BA569BA6EE4E0DEE2DD50EDB1BE80EA + 616382CF9F9B98E10E67835E5183EF3E + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 388999FAD5EF619DCCB087BCB1545FD3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarFlowLayout.h + path + FSCalendar/FSCalendarFlowLayout.h + sourceTree + <group> + + 389C4FBDB5A2A78FACC695BB0AB0213D + + fileRef + 7924757FDF730E1CA7EC6EC5B87560D7 + isa + PBXBuildFile + + 38C147ABC2D08D52142CAFD9EBC8A842 + + includeInIndex + 1 + isa + PBXFileReference + path + NVActivityIndicatorView.modulemap + sourceTree + <group> + + 38CEC30ED3A2A4E002EB141058D8C1CE + + children + + F5141B8238B803A23A3F901EDC70268B + 8D6C5CB6CED65AB399D90578EFC519DA + 05377D88E97E09C79D6EFCAFE8387625 + 32967C4D6D1575A3A612C6713B35B2E5 + F2066100EFBC52F34473CC2FE405B240 + E0AEE06DCF8E2607459EBDD5C4757629 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/Onboard + sourceTree + <group> + + 3943D764C0D525CFAF94F943648E17BE + + buildActionMask + 2147483647 + files + + 11BA64BC0B2FE8DDB41883B7241A8C49 + 7A88BF95853A69E550E9F63A060BED12 + 6B058FB2BD6B6B55995F631EE4B61D8E + B2F9711D635766F4754D415B41FFC818 + ECDF2C04EED904A4AFC64DED8EA45544 + 501198AA5B6723D71C0194BAD075BF02 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 394C8FA003188A5B97A75502942E4431 + + baseConfigurationReference + 0928BA1430F3548012E2C104B1F47154 + buildSettings + + APPLICATION_EXTENSION_API_ONLY + YES + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Alamofire-watchOS/Alamofire-watchOS-prefix.pch + INFOPLIST_FILE + Target Support Files/Alamofire-watchOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Alamofire-watchOS/Alamofire-watchOS.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + Alamofire + SDKROOT + watchos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 4 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Release + + 3981098E0B657A66D922281531878551 + + fileRef + 164B6C3A191D2140F6FB74763BC1D63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 39CFAE1CB6595F0C44AE27B8B2A2954A + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + CoreGraphics.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreGraphics.framework + sourceTree + DEVELOPER_DIR + + 3A71EE8AEFF0CA489234681A31D396FF + + isa + PBXTargetDependency + name + DGElasticPullToRefresh + target + 115824B7CB2E76E5ACB836A251E79404 + targetProxy + 4ACD8673F10F28B029107F10F3DC0C32 + + 3A91A1781435D2F6E292FCCF5F5356C1 + + buildActionMask + 2147483647 + files + + 2F903EAED6109D3BF3F180DDFD24D62A + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 3A9B3AE195422FD0F18D8675527E237E + + children + + D5CFC932A9E3754B38564395F5A36859 + BB6C29A723635DB6B216FF05A302F432 + A3FF108D1FFF24E0F7E4056506E0FEC6 + 8176EF7AD43D5A379B157BC99223CF28 + ECBA47A31E296B87BA94ABCFC8D04862 + B9432285FD94D011EB06F2C95A412B81 + 54D424C13B4AC5D6AEBE5849BA4DBF9F + AD1B92F91B30BD9E8899FEABDAD660CF + D10D84612A8837FC49554FCD6CE7725E + 6FB9BDB6E6C57E867D09845E12D225B0 + 29D2BA66BDBF8D983D526899F7F324A8 + 9C4552FCDCC4876DE150A08BAE234484 + CEF67511FD6E8DB3A42A3AA8B9C31D7E + 0479A980286966C2AB6B46EE876D7C4D + F9D4DC767565A372DD63242D6DCD6B9D + D97F65D291045500FCC9D7F88754B165 + 4BE0CB2B9D1799579859E047C7016DBF + 08A8089D7472CE47CA5B59513A9B485A + 46E2B32822014D46D59E50A88CE3E271 + A31A1A0407176ED1974F8E75519822FD + 2908766FD2C612D3CE38631C216E5E7F + C4D390002580AC1F469A1999C83FFDF8 + B0BC8CC17F351FEE18EE4B23A6F13E84 + B9501FC5980E7547D3448A24C9CFD66B + E5A8052B5A4C8674C786A34E22C83D14 + 3427E73FB6D383599E51382410A83DEA + BACD85AB02C48126DD258084A589351C + + isa + PBXGroup + name + Default + sourceTree + <group> + + 3AD522B47E3BD8B349790BAB3DD2E5D9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + INTULocationRequestDefines.h + path + LocationManager/INTULocationManager/INTULocationRequestDefines.h + sourceTree + <group> + + 3B432CF999078E6BA68F53503DA37A56 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 3B59D9FBE00E64C95A6FC9DF7E0BEA87 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 3B9E5D66CB91CE9E97F30847D676A138 + + fileRef + 2A7C32FB0C781CBA3F67AAC8614360FC + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 3BBF1187E808E1DEA2FAF8E31E9C2D7F + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Localize_Swift.framework + path + Localize-Swift.framework + sourceTree + BUILT_PRODUCTS_DIR + + 3C68703C7B1BDFD88E2F5A7F5E97D70A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarEventIndicator.h + path + FSCalendar/FSCalendarEventIndicator.h + sourceTree + <group> + + 3C6CC0E00BEFC2B8A84E9BEEE988CDDE + + children + + 8804E110F941EE91C30984FFA968C29B + ADF234B401A04718C4AC446CDF33B401 + F582D7F1AEBACC6A265487E4374AE806 + 5D1B0F88DF34DBEDE593BDD390C54170 + + isa + PBXGroup + name + SCLAlertView + path + SCLAlertView + sourceTree + <group> + + 3C82F6B410DDFEB5D929CC079AA79955 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarAnimator.h + path + FSCalendar/FSCalendarAnimator.h + sourceTree + <group> + + 3C854A2307CFA48D05EB77C8DC0C7512 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationDelegate.swift + path + NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift + sourceTree + <group> + + 3D0EF9D1ADE18E2F4C9225C11867BAEB + + buildActionMask + 2147483647 + files + + C16DFC1F69B5D2454F9642D4EE6189D7 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 3D29BD3040EE243CF517462D9C149CAF + + baseConfigurationReference + 3DB1D647196B6284448AF7B77F13E89E + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/PermissionScope/PermissionScope-prefix.pch + INFOPLIST_FILE + Target Support Files/PermissionScope/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/PermissionScope/PermissionScope.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + PermissionScope + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 3D33BF2D79985CBFBE9600D971161B7C + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 3D9A3B90F955463DB9E4304FF2807812 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Localize-Swift-prefix.pch + sourceTree + <group> + + 3DB1D647196B6284448AF7B77F13E89E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + PermissionScope.xcconfig + sourceTree + <group> + + 3E3E32093BDCCDA1ACEEA9DEC3B5CC7E + + baseConfigurationReference + 4949B695B162A5AAA8D7B2F21C4D5C50 + buildSettings + + APPLICATION_EXTENSION_API_ONLY + YES + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftyJSON-watchOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + SwiftyJSON + SDKROOT + watchos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 4 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Release + + 3EAB5F329DF57CE14D662059B1C47DFD + + children + + 6424917D9653F292C6199D2D4C57B31D + E2CC1786211C6D4CD85FF90553A05819 + + isa + PBXGroup + name + Core + sourceTree + <group> + + 3EBAC77EA7F2BE66AF6539134A69F3D6 + + isa + PBXTargetDependency + name + SwiftyBeaver + target + DD5C1620C8612B5D6689899A770B8CFD + targetProxy + 449EB6C0BADB66C1456014C9728D86D7 + + 3F0AABC0771D8B3BC8D68362A7728D7E + + fileRef + 9D5A2C405F99E7A86A47810900B9B7D9 + isa + PBXBuildFile + + 3F70216E96FADB6650A523C5B0D82ABA + + buildActionMask + 2147483647 + files + + 5D8CC81D38FFCFD3A5745E8C2F86F40B + 06720CD7705F71178390FE16A75D419A + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 3F79B29811B7D371E63FE8356D197C58 + + buildConfigurations + + 75D68D5A54F917E34A9DCA4670C8B802 + 6158FC5FEA4224FA6854EACDF02080CD + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 3FB5A158BB77C754CD80AF853ADE03E0 + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + 40941F6499CC47BDB600BE4C748BD089 + + fileRef + 4326EA026B506D2EA642B7AEAC125E8A + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 40E0F0680012A73ADFD67B8DAF07EA23 + + children + + D66B51AF38160D1F6E6FA8DC38481A87 + DF565F97655E8A03E36E9AEDECF0BC88 + CE9D26EA4ECEC7DA3264366129935643 + A5C78F0806A05F568B06C6500F030554 + 9ABB756BA507BB860FEEA4ECF922EAE8 + 5844858DC011F247CC5F81F7C48BB621 + 0FE9093598BDC2E573B5AC53CC2C517E + 23791BB07AB12A358882FAD5F7810150 + 84916F7565212118FF5B37CFDD348802 + F5D10CA3D63021591D39AE358891BA73 + 4C91E718D38E49875B9E4BC0880D2C33 + 9D5A2C405F99E7A86A47810900B9B7D9 + BF96FD953B23FB892831FECBA3A94A68 + E805993B25BD0F1D55AADCE5B4BB4B5A + F39DCEA5EBC5476B103B02F706975DD7 + 0EFF24345ABA303EA4FF520401C17D53 + 47C3A728AF23BC4D137B5C12720C1FED + 2037EC86182521CD07D27767933F7536 + + isa + PBXGroup + name + Alamofire + path + Alamofire + sourceTree + <group> + + 4194C2418EEF62E01342A820B5EF9C71 + + fileRef + D97F65D291045500FCC9D7F88754B165 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 41EA68AD4B370695B3E435122D31256C + + fileRef + 2B426CDD5C4D354DC4FBF0FFCDD63F23 + isa + PBXBuildFile + + 420AE61A1D1C0620195A01BD34054A3F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + CLSLogging.h + path + iOS/Crashlytics.framework/Headers/CLSLogging.h + sourceTree + <group> + + 427329835593AB54E796D1B03B829FD3 + + buildActionMask + 2147483647 + files + + 275F0B807ADF1163898114F3C35B4689 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 42B544CBFA0141FC299230738308C889 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Pods-tpg offline-acknowledgements.plist + sourceTree + <group> + + 42D3C764859138AB5B01D94A7125E1FF + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 4E3BBCA6078A6AAAD053C911572F0B0C + remoteInfo + Localize-Swift + + 4326EA026B506D2EA642B7AEAC125E8A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + PermissionScope-umbrella.h + sourceTree + <group> + + 4327E69EA764B5E758D98ABC3261EE56 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Structs.swift + path + PermissionScope/Structs.swift + sourceTree + <group> + + 434F9660914F3498141DD3479BF90176 + + children + + DFC8701E7DD1F51BBE94E2EEB0D78F23 + 7312034D9EE7758862A1861C3CC7AB5E + + isa + PBXGroup + name + Icons + sourceTree + <group> + + 445293A88E014449B195B5DA54B4766C + + buildActionMask + 2147483647 + files + + 02929C6EFE98A94A6289661403A636C5 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 449EB6C0BADB66C1456014C9728D86D7 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + DD5C1620C8612B5D6689899A770B8CFD + remoteInfo + SwiftyBeaver + + 454E1EB4F7B62721B59982B1E983DCFA + + fileRef + 9DCDA1914E57BC1CF34112979BE14A4A + isa + PBXBuildFile + + 45515996CE5B9F5AE4A54166E0EA58AC + + children + + 789A6651091900E2BFB07B5D02157B92 + + isa + PBXGroup + name + Resources + sourceTree + <group> + + 45B28CDACD362CEF2CA6012BA0015DB6 + + fileRef + EDC1F070425F72F78F5A4A930707F5E5 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 464A71345D9D2033EC9D2A164C9AA3E6 + + isa + PBXTargetDependency + name + PermissionScope + target + C55E46AC6A1E70A6AA25E306AE545375 + targetProxy + 260526B0218C225B91E3664094A8DCC0 + + 46DF44B9ABFDD85AFE3A6EACF2A43511 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text + path + Pods-tpg offline-acknowledgements.markdown + sourceTree + <group> + + 46E2B32822014D46D59E50A88CE3E271 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIImage+ChameleonPrivate.m + path + Pod/Classes/Objective-C/UIImage+ChameleonPrivate.m + sourceTree + <group> + + 4761A882DE50CA81E8A2926730C1BABD + + includeInIndex + 1 + isa + PBXFileReference + path + Pods-tpg offline.modulemap + sourceTree + <group> + + 479B795C9BB95917A708AC4AC91C3110 + + buildActionMask + 2147483647 + files + + E57FEB5B31E59F43D44ED9FB42B89FB6 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 47C3A728AF23BC4D137B5C12720C1FED + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Validation.swift + path + Source/Validation.swift + sourceTree + <group> + + 47DD9712148A849597BF4BB6A7CF5B9C + + fileRef + 7F1C0B7F78B3131BAC17509FA156A59B + isa + PBXBuildFile + + 47E8BDF9810A87ADEEA2D2416E4C8560 + + children + + 1758046FA7FCB6161B3C362F3D8E7ED3 + 9DCDA1914E57BC1CF34112979BE14A4A + + isa + PBXGroup + name + Overlay + sourceTree + <group> + + 481507F0BF6263EE91CDADAFD26078A8 + + fileRef + 2B4991D7C1045F41C0D9E91177FA8AA4 + isa + PBXBuildFile + + 4829927BE941D722C1EF9D677F18F809 + + children + + 086026A21EAADF83EF62E2868F88F4C9 + 40E0F0680012A73ADFD67B8DAF07EA23 + CFD8950662ACB73F634308436FB2D662 + 5EAE926D8B7F7F34F7C105B5A62DDC4B + 2C6B3FF7F247D632BE6E88C994A6E556 + FCA36069C48038212D7DAB90CF404108 + 7AB32E900C4B33032E7635615A73717D + F7ABFABB520B8D5526AC38DF3455D5AC + AB2F6C609D7910C7FC5C0EDB62828778 + 933985846B9A0F799C4CD75B9AC5C5A9 + D8812BF818659A6FB49E0B670078E14C + B935D7425AD07F00E3FB6EB6D4B8D464 + 13804F6B82334655B059601A60A1FFB2 + 9B23B5EEBA14B3CFCC7F4A2C5A66B9FA + E904753FC5F986C9C6A912761BE1465C + F31769919E87DD9269F637DD018BB1C3 + 0F6B933BBEE29B3BB2328056A42533D2 + 3C6CC0E00BEFC2B8A84E9BEEE988CDDE + E29873AFD5B355C08B854EE17A44E974 + AC0003CCE57676C620E79BD86A47543E + 8771C847926D881CBF0A8FD0A63799A4 + + isa + PBXGroup + name + Pods + sourceTree + <group> + + 483F8F44678B996E73DB4134414070D1 + + fileRef + CCAB0340EB3B251B03E7F23293E0A4EB + isa + PBXBuildFile + + 48C9F271FBCC7592DEA400D81CC6AD37 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + EFCircularSlider-prefix.pch + sourceTree + <group> + + 48E21BC30675BE10E5FB0192B03002EA + + buildConfigurations + + AC0F797C6CFD6A2EE34C448622133782 + 55B23AADC51506EE1351EF28BA3504DB + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 4949B695B162A5AAA8D7B2F21C4D5C50 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + name + SwiftyJSON-watchOS.xcconfig + path + ../SwiftyJSON-watchOS/SwiftyJSON-watchOS.xcconfig + sourceTree + <group> + + 496728EADF9C1702E224FCCC1E12F903 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 49A1B5CC7A9BA5D63A26377D3D9A5DBD + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarAnimator.m + path + FSCalendar/FSCalendarAnimator.m + sourceTree + <group> + + 49FE048BC2C12D86608FA6F7EE9D2CDE + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + AsyncSwift.xcconfig + sourceTree + <group> + + 4A0E71E9E2BD86AA8CB6077A95CDC034 + + fileRef + B9432285FD94D011EB06F2C95A412B81 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 4A61795E90E11D13415988E578C1FBB2 + + fileRef + 12525765AC9F70C6CA0D2DCF8513E51B + isa + PBXBuildFile + + 4ACD8673F10F28B029107F10F3DC0C32 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 115824B7CB2E76E5ACB836A251E79404 + remoteInfo + DGElasticPullToRefresh + + 4B2954260407A070115A1B4D05E0F508 + + baseConfigurationReference + 4F44C512643471960C624277440B0AD7 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/MRProgress/MRProgress-prefix.pch + INFOPLIST_FILE + Target Support Files/MRProgress/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/MRProgress/MRProgress.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + MRProgress + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 4B7190B08381CDD4A4453BA091E02F61 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DGElasticPullToRefreshExtensions.swift + path + DGElasticPullToRefresh/DGElasticPullToRefreshExtensions.swift + sourceTree + <group> + + 4B799D845B4D8A77F7BBE9639B18FC4F + + fileRef + B179499D1CEB179823BD3A900DF64DE6 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 4BE0CB2B9D1799579859E047C7016DBF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIColor+ChameleonPrivate.m + path + Pod/Classes/Objective-C/UIColor+ChameleonPrivate.m + sourceTree + <group> + + 4BE0D6C3CC1BB40D3C1D1DAFBF8285F1 + + baseConfigurationReference + 8B75BEDAB1DA3D563FE5EC4B2FB1DB20 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftDate/SwiftDate-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftDate/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftDate/SwiftDate.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + SwiftDate + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 4C243D8D7FAE8DA260B09D046ACBA5A5 + + fileRef + 2BD1046DCEC2F5C2A3ABAC9693DA8196 + isa + PBXBuildFile + + 4C3675572D5182F562E4C84BED3B3C11 + + buildActionMask + 2147483647 + files + + 14E0A5E3A6EE9CB3BEE7EFE7936A08AD + C1F305CB2F53579B41DEAE4A78F7303D + BECB33530B472227C99ED31AAF4109B1 + 247B48F0E931BA651C06E8421C5A0CFB + D08E3402855AB2CA47EE2A92E2859187 + 16CEE335B25021CCEA3F64552B77E526 + D49074D67E1BE18C9962C2F58B1DB947 + 1B0527043FE99FCFB7F2C62FA4C973D0 + 130119C1E67865675CC8AB8CD210FB14 + 0F1FC681700BF1AF0A5038E78ED7DE66 + BE2009368FD51AF025C1B4945165F5D3 + 2BED398461A1D57AAB6C1A744EA177DA + BD627222A931F86B626CFF892E7E4AEF + A7291604CA37481061C281665235591E + 7021185442C524179D89A52AE5E25A7D + 3981098E0B657A66D922281531878551 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 4C6CEBA607BEA909A9CCB80C6AB6AE88 + + fileRef + B0BC8CC17F351FEE18EE4B23A6F13E84 + isa + PBXBuildFile + + 4C8138002F585E3B4E7E09F7CC88FC6C + + isa + PBXTargetDependency + name + AKPickerView-Swift + target + 7EC1417298041145E9B1A4C7B395C179 + targetProxy + 93F14E791C5BD70660DE7CCCF5A00548 + + 4C91E718D38E49875B9E4BC0880D2C33 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + ResponseSerialization.swift + path + Source/ResponseSerialization.swift + sourceTree + <group> + + 4CA03D3DE72346C3D89371CCFF709888 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + INTULocationManager.xcconfig + sourceTree + <group> + + 4CE28BC6D0C9A8601F5227326CD6EA03 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + DGElasticPullToRefresh.xcconfig + sourceTree + <group> + + 4D3478B625016D4EF1ACCC9DD2B2A85F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSDateComponents+SwiftDate.swift + path + Sources/SwiftDate/NSDateComponents+SwiftDate.swift + sourceTree + <group> + + 4D79EC114BE4E3A99C20702B190F2FCA + + fileRef + 20499F7A890A6D08987685F0621BEA5C + isa + PBXBuildFile + + 4E39384F9A124DC28053D9BD4ABAF14E + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 063E3C59C1B7382B70A98D5EF8052B8D + remoteInfo + Alamofire-watchOS + + 4E3BBCA6078A6AAAD053C911572F0B0C + + buildConfigurationList + 7968F6B30DE34885335567998D7E4853 + buildPhases + + ED9693054C5D644ECD60224CD91698D6 + 271BCC51F0050F9CAD885B0734030DCE + 200426898CFBEF623EEC0EC3811ABC89 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + Localize-Swift + productName + Localize-Swift + productReference + 3BBF1187E808E1DEA2FAF8E31E9C2D7F + productType + com.apple.product-type.framework + + 4E614F66151A3E4691C35D469857A352 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKZocial.m + path + FontAwesomeKit/FAKZocial.m + sourceTree + <group> + + 4F44C512643471960C624277440B0AD7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + MRProgress.xcconfig + sourceTree + <group> + + 4FE392E812DAD6AE9F24A74E8905F488 + + baseConfigurationReference + 49FE048BC2C12D86608FA6F7EE9D2CDE + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/AsyncSwift/AsyncSwift-prefix.pch + INFOPLIST_FILE + Target Support Files/AsyncSwift/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/AsyncSwift/AsyncSwift.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + Async + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 501198AA5B6723D71C0194BAD075BF02 + + fileRef + 0B2B40BF58A324E6486B5EB81B632A19 + isa + PBXBuildFile + + 50274EE915F74F20A7687C26FF93E2BB + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Crashlytics.framework + path + iOS/Crashlytics.framework + sourceTree + <group> + + 503E7DD42CD052D997EF4F4D5551F072 + + children + + F834CACF20C495FC9A95546E26E11648 + 8802D07C334E3D3A8779C6259A556298 + BDBFC32C86D0C5D4E37BE68D01397713 + + isa + PBXGroup + name + Octicons + sourceTree + <group> + + 50B21D9B25C202E2D80B0DD4EC36C007 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarCollectionView.m + path + FSCalendar/FSCalendarCollectionView.m + sourceTree + <group> + + 50D2750C40F449BFD8567BAFCABB9C26 + + buildActionMask + 2147483647 + files + + EEEB710A6F2BF621D014CC1909D9540D + 851E0387E4EB02E5DCCCCAADFE01445B + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 50E52CA85017A7C3F7424DE6CCCA7B03 + + baseConfigurationReference + E4FD8E95F1D23F3E7B4B9230F2D5D2C0 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SCLAlertView/SCLAlertView-prefix.pch + INFOPLIST_FILE + Target Support Files/SCLAlertView/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SCLAlertView/SCLAlertView.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + SCLAlertView + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 51379C1809B5415E36649D86D99C7A1E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallPulseRise.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift + sourceTree + <group> + + 515AEA7BBBD2BC5CF574227EC0508E91 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SwiftyJSON-iOS-umbrella.h + sourceTree + <group> + + 5172ACAB7FEA22813859DC97CA0AA16F + + buildConfigurationList + 48E21BC30675BE10E5FB0192B03002EA + buildPhases + + A007306A9F7EAF30B21BFDB4E741628B + FC1A73E30C8322A70D5DCD63B04CAE84 + 59890BED3AF6CEBA2D3BC9A5C45EFBA4 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + ChameleonFramework + productName + ChameleonFramework + productReference + 1DE7F709BACEDDCDF8941802DA6C5BE9 + productType + com.apple.product-type.framework + + 5177B3B95985D0A2CF8376A6FD4488C2 + + fileRef + BACD85AB02C48126DD258084A589351C + isa + PBXBuildFile + + 526A3672738BF00D4CF896C2FC4550B6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + INTULocationManager.h + path + LocationManager/INTULocationManager/INTULocationManager.h + sourceTree + <group> + + 52A0D459DC9915B1FA4C62CB5911D68A + + fileRef + 3C854A2307CFA48D05EB77C8DC0C7512 + isa + PBXBuildFile + + 52A5E8263E7C91DDAB94F66A5364369B + + fileRef + 1758046FA7FCB6161B3C362F3D8E7ED3 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 5364B913036733DAF27822A4A4BDDB1D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + SwiftyBeaver.xcconfig + sourceTree + <group> + + 5409E3E86E05B187D9E6AAE533B32967 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + NVActivityIndicatorView-umbrella.h + sourceTree + <group> + + 544CEFAC4AE87FDB3CE861ABD8D864D8 + + isa + PBXTargetDependency + name + SCLAlertView + target + AE8AE78446997A62D5312585254CE95F + targetProxy + C85C9D5D7824562FB9A4B8A701FC63C1 + + 546C7D83BE6A81EC387005E5860E0790 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationLineScaleParty.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift + sourceTree + <group> + + 54D424C13B4AC5D6AEBE5849BA4DBF9F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + ChameleonMacros.h + path + Pod/Classes/Objective-C/ChameleonMacros.h + sourceTree + <group> + + 55B23AADC51506EE1351EF28BA3504DB + + baseConfigurationReference + 9977A3C354D0666A654881E57BD22DFE + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/ChameleonFramework/ChameleonFramework-prefix.pch + INFOPLIST_FILE + Target Support Files/ChameleonFramework/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/ChameleonFramework/ChameleonFramework.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + ChameleonFramework + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 56C1CDC60836D05B862E35DA33936032 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 577D1719FDC3065037FC4BAE2CDC6B4B + + isa + PBXTargetDependency + name + INTULocationManager + target + 5AF1C612F4CDA296FC4C82D9BD0BD25D + targetProxy + 2572F0F3AAEF55F3191DC273E861857F + + 57BEF19D24A56162659239E30322EA67 + + fileRef + 49A1B5CC7A9BA5D63A26377D3D9A5DBD + isa + PBXBuildFile + + 581717436435D5B2B4CD456003D11B61 + + fileRef + 7B47980BDB7D6212267856620E15AF7A + isa + PBXBuildFile + + 5844858DC011F247CC5F81F7C48BB621 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NetworkReachabilityManager.swift + path + Source/NetworkReachabilityManager.swift + sourceTree + <group> + + 58AF2601D0144359A19374C0CBFB6CE5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+Formatter.swift + path + Sources/SwiftDate/DateInRegion+Formatter.swift + sourceTree + <group> + + 59831F1BC5761E280D1FEE2B25D8163D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DGElasticPullToRefreshConstants.swift + path + DGElasticPullToRefresh/DGElasticPullToRefreshConstants.swift + sourceTree + <group> + + 59890BED3AF6CEBA2D3BC9A5C45EFBA4 + + buildActionMask + 2147483647 + files + + 7EC9330EBDF327051B12E42AE8741B6E + 738E4E0555CE3C233C400AE87B9887E4 + 097AE4014349090D14C6C5637F8A3464 + 4A0E71E9E2BD86AA8CB6077A95CDC034 + 64C89D98B9D3B9C57971E1E137233980 + 5CCC419BB423F48192FBA3C7D7D6B7DA + FF4A8EFE1154C1FFD58B48E978298871 + B71968ADC80D9CA74C57959B609E46F6 + C8F191C4FA3530AAEBAD2DDE2604DCF2 + CFB8C96C7D3F7331E409D296466B923A + 4194C2418EEF62E01342A820B5EF9C71 + 7708E07C85FF6C2BC400C15CCDB7EB1C + 00967A34C0778275E41D1CBA32E398F8 + 6FFDAD2F800BC27FCF40E92B71D88CF3 + D36BC9B0C925A5244E16EE70E4809EE6 + AF9FDFE994A206795619E469B68C614E + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 599393E375A20A35BDA5AF34B08A443D + + fileRef + 887D126993E8C0690949124F6600C0E0 + isa + PBXBuildFile + + 5A20C4D526672DD2695F53406DAD887B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRStopableView.h + path + src/Components/MRStopableView.h + sourceTree + <group> + + 5AD8039E8DD8CBB0A8E3B1015DAC0A0C + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + 5AF1C612F4CDA296FC4C82D9BD0BD25D + + buildConfigurationList + 71C202ED706116B59F510C850DABC016 + buildPhases + + EA794BFDB9159F5E73606E92A28BA8AF + 9CFB3E5D593071280A4928E6A3845B20 + 031C742796D4BE1C43EAB3D494EA4F6B + + buildRules + + dependencies + + isa + PBXNativeTarget + name + INTULocationManager + productName + INTULocationManager + productReference + DB1D4D4FEB351CBBBD9A5837771AEAA1 + productType + com.apple.product-type.framework + + 5C36030BF1ED7ED41D8DEC2A5FBA66FB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 5C36A96D2161FE58BDA1F83CAAD98383 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallSpinFadeLoader.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift + sourceTree + <group> + + 5C68E7D5CAB6FA6E8D87DF770955B113 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + BaseDestination.swift + path + sources/BaseDestination.swift + sourceTree + <group> + + 5CA7B37693BF3D25B1B90C385F6936EB + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + 5CCC419BB423F48192FBA3C7D7D6B7DA + + fileRef + 54D424C13B4AC5D6AEBE5849BA4DBF9F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 5CE06717BFEC7B441F7D209FF4F5E246 + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_ANALYZER_NONNULL + YES + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + COPY_PHASE_STRIP + NO + ENABLE_TESTABILITY + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PREPROCESSOR_DEFINITIONS + + POD_CONFIGURATION_DEBUG=1 + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + ONLY_ACTIVE_ARCH + YES + STRIP_INSTALLED_PRODUCT + NO + SYMROOT + ${SRCROOT}/../build + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Debug + + 5D0BF7FB825CB2A572CB83CCDEF07714 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.script.sh + path + Pods-tpg offline Watch Extension-resources.sh + sourceTree + <group> + + 5D1B0F88DF34DBEDE593BDD390C54170 + + children + + 079944400F61A98B1BBBA6905E3CBCA0 + 6787C1D966AF9FB68BCD7804A8BAD244 + E4FD8E95F1D23F3E7B4B9230F2D5D2C0 + 7B1A7B67D4DE96A23D83F563AA3B5E87 + E04366B3CB23EFC589774E52E4E5154F + 099960FDE2B19E5384DA12CDE04B0CCE + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/SCLAlertView + sourceTree + <group> + + 5D61A152210B0A4AC6DE57CF1DEC913A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + DGElasticPullToRefresh-dummy.m + sourceTree + <group> + + 5D8CC81D38FFCFD3A5745E8C2F86F40B + + fileRef + 99CC884149A4C2292216CF12A301CBCA + isa + PBXBuildFile + + 5DE693D792CDD742674AFC49C856401D + + fileRef + ABE824437D95E0EC2293A1D4BA256A84 + isa + PBXBuildFile + + 5E50D064BD227C272420975A4AF035F8 + + includeInIndex + 1 + isa + PBXFileReference + name + Alamofire-watchOS.modulemap + path + ../Alamofire-watchOS/Alamofire-watchOS.modulemap + sourceTree + <group> + + 5EAB5FF71F7BE46A5FED451B3C55987B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + INTURequestIDGenerator.h + path + LocationManager/INTULocationManager/INTURequestIDGenerator.h + sourceTree + <group> + + 5EAE926D8B7F7F34F7C105B5A62DDC4B + + children + + 3A9B3AE195422FD0F18D8675527E237E + DDDBE5804B05E714CDF485CEBD3066BF + 70962FC7C02572564C5188D973FB6A11 + + isa + PBXGroup + name + ChameleonFramework + path + ChameleonFramework + sourceTree + <group> + + 5ED866DD42D2514CFEEAA6CDE0CCCC1E + + fileRef + BDBDEFCE625D18D0F6D6AF0801C240F4 + isa + PBXBuildFile + + 5F36D808819E718A54D920E57DD99355 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion.swift + path + Sources/SwiftDate/DateInRegion.swift + sourceTree + <group> + + 5F5BFCE19AD581748B9254D9D1E45045 + + children + + EE86971AA740996009F8764DC6282C71 + + isa + PBXGroup + name + Resources + sourceTree + <group> + + 5F7F40B822116B9DABC6B73B8EBE338B + + fileRef + FD45C877DFBFA8340B0FD7F66C01CD80 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 5FDA8D120FC9CC14071EC93C1FD9891E + + baseConfigurationReference + 4CA03D3DE72346C3D89371CCFF709888 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/INTULocationManager/INTULocationManager-prefix.pch + INFOPLIST_FILE + Target Support Files/INTULocationManager/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/INTULocationManager/INTULocationManager.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + INTULocationManager + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 605479F859F350D44EB0FF16021EE436 + + fileRef + EE86971AA740996009F8764DC6282C71 + isa + PBXBuildFile + + 605CAB6DC64D4B05EF50240758117F6C + + fileRef + CE12C9062588C667CD17D9B3831971B0 + isa + PBXBuildFile + + 60831C7844AF4083DDB81483B8551375 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRStopButton.h + path + src/Components/MRStopButton.h + sourceTree + <group> + + 60C38257AB01C6BEA222DA163A5C152F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-tpg offline Watch Extension.release.xcconfig + sourceTree + <group> + + 6158FC5FEA4224FA6854EACDF02080CD + + baseConfigurationReference + A85E7C45C2C5560F5C30392EB2DF31D1 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch + INFOPLIST_FILE + Target Support Files/NVActivityIndicatorView/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + NVActivityIndicatorView + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 616382CF9F9B98E10E67835E5183EF3E + + fileRef + 47C3A728AF23BC4D137B5C12720C1FED + isa + PBXBuildFile + + 616423C8A1B7928B3F756D5E32816C22 + + fileRef + 92E951E21093F513CA9C9BB96058015F + isa + PBXBuildFile + + 61934DEE05AAB777F8FFC95CBFF8D883 + + fileRef + 4C91E718D38E49875B9E4BC0880D2C33 + isa + PBXBuildFile + + 61E31D4148107C0C5EFAC72DC58095BD + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + UIKit.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/UIKit.framework + sourceTree + DEVELOPER_DIR + + 62D098F264BA505FF93376E1817B7D31 + + fileRef + 4327E69EA764B5E758D98ABC3261EE56 + isa + PBXBuildFile + + 636FA0BF7676E4972B8843F989D305F9 + + fileRef + 363F873F524DBDAF9EE7F3D79E884D1C + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 636FEDD65FB6BE2F64F1182507C5C6A2 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIImage+MRImageEffects.m + path + src/Blur/UIImage+MRImageEffects.m + sourceTree + <group> + + 638D7FE118E7D93B77F675F381A463A4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + OnboardingContentViewController.m + path + Source/OnboardingContentViewController.m + sourceTree + <group> + + 63F1B587EF9C7D6FA2266617A456D470 + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_ANALYZER_NONNULL + YES + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + COPY_PHASE_STRIP + YES + ENABLE_NS_ASSERTIONS + NO + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_PREPROCESSOR_DEFINITIONS + + POD_CONFIGURATION_RELEASE=1 + $(inherited) + + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + STRIP_INSTALLED_PRODUCT + NO + SYMROOT + ${SRCROOT}/../build + VALIDATE_PRODUCT + YES + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Release + + 63FC2F696C591B06128339C15CBF70D9 + + fileRef + 1E499A585D4AB266F8CA307193BD6BCF + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 6424917D9653F292C6199D2D4C57B31D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKIcon.h + path + FontAwesomeKit/FAKIcon.h + sourceTree + <group> + + 6445308509E1F6DDADDFF1FAAB8A66A5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarHeader.m + path + FSCalendar/FSCalendarHeader.m + sourceTree + <group> + + 64974DA29A383B50EF511291B22B8044 + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + 64C89D98B9D3B9C57971E1E137233980 + + fileRef + 8E41AFB94576AF0491E356300B836F1A + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 654487B362A54F7B61DC3377AE875ADF + + buildActionMask + 2147483647 + files + + CB10BA9046088B3B243728D68EC78C2E + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 654A4789A97377F3323CE5D0F6A5D5F4 + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + 654CA45CBC88F1E1E781FC647E0D2EC5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SwiftDate-prefix.pch + sourceTree + <group> + + 6554CC7F43B05EFCCD7FCCB3D6F27E8F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + PermissionScope-prefix.pch + sourceTree + <group> + + 65B0CD1EDECEA34E3464FE711A33F0E6 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + NVActivityIndicatorView.framework + path + NVActivityIndicatorView.framework + sourceTree + BUILT_PRODUCTS_DIR + + 65CE760D195281B13FDCBDF66B6631EF + + children + + 7880179AA3CC43A3A4B653BB3DFF2252 + C8FC7342A57CF84FC01D29A133B9A8B0 + 45515996CE5B9F5AE4A54166E0EA58AC + + isa + PBXGroup + name + FoundationIcons + sourceTree + <group> + + 65D5C8A7B0507ED39B218CB35A73D532 + + fileRef + 7846CE8A672814DFF08B65B6E05171C2 + isa + PBXBuildFile + + 660DC941DE1B1E27F0DC16CC6D66C61E + + baseConfigurationReference + D747AEC672D1277C864E5C47A6B7471A + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/FSCalendar/FSCalendar-prefix.pch + INFOPLIST_FILE + Target Support Files/FSCalendar/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/FSCalendar/FSCalendar.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + FSCalendar + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 6668D6ADD917E4A5E9475FF6BC95EC54 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Dictionary+SwiftDate.swift + path + Sources/SwiftDate/Dictionary+SwiftDate.swift + sourceTree + <group> + + 666E1CEA667BAB676E3F839BA35DD90C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + AKPickerView-Swift.xcconfig + sourceTree + <group> + + 66E557E17489DFBFD0E6DA57946F3B28 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Accelerate.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Accelerate.framework + sourceTree + DEVELOPER_DIR + + 6787C1D966AF9FB68BCD7804A8BAD244 + + includeInIndex + 1 + isa + PBXFileReference + path + SCLAlertView.modulemap + sourceTree + <group> + + 679C929DEA051D45B16D0A91B7759867 + + isa + PBXTargetDependency + name + Onboard + target + D7FF48F3092783E4E42B336F0DEF2D1A + targetProxy + 055F2B4EA15864BB49D7EDC2796782DC + + 68601DD8D1367CD635712B9FF4797A9A + + fileRef + 32967C4D6D1575A3A612C6713B35B2E5 + isa + PBXBuildFile + + 6881F4719F87CE9A0614CFD35602E150 + + baseConfigurationReference + EBEA2C2D7F05DAA5680CC4E423E485B8 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftyJSON-iOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + SwiftyJSON + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 68F44F9727851A9632ED1B1065F7205D + + buildConfigurations + + A70E357263499193F10AA1BA96BCEA5B + 50E52CA85017A7C3F7424DE6CCCA7B03 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 6A6241399A74E4ADFA65F869A457289F + + baseConfigurationReference + 666E1CEA667BAB676E3F839BA35DD90C + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/AKPickerView-Swift/AKPickerView-Swift-prefix.pch + INFOPLIST_FILE + Target Support Files/AKPickerView-Swift/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/AKPickerView-Swift/AKPickerView-Swift.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + AKPickerView_Swift + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 6A671575ADA21D9F204306074D47E369 + + fileRef + DF565F97655E8A03E36E9AEDECF0BC88 + isa + PBXBuildFile + + 6AFEBE0A1BD23E93DD6419908ADCA10D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SwiftyJSON-iOS-prefix.pch + sourceTree + <group> + + 6B01EE2742369D8A8528EC336AB3FC8B + + buildActionMask + 2147483647 + files + + E39D92E50E8FA1E9BF6991CAB3F0DE7C + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 6B058FB2BD6B6B55995F631EE4B61D8E + + fileRef + 4B7190B08381CDD4A4453BA091E02F61 + isa + PBXBuildFile + + 6B2E64F2E8D4690790E98FB7D995AA2C + + includeInIndex + 1 + isa + PBXFileReference + path + ChameleonFramework.modulemap + sourceTree + <group> + + 6B5AEBBD07D3109E95F9ED04A7158BBE + + children + + FF424AFF7D049E8EC495D95B7A9C5E5F + 337564BDFF531733FAC3673C8F901A7B + + isa + PBXGroup + name + NavigationBarProgress + sourceTree + <group> + + 6C146E1B77F97639B95CBC0B8DD63FC5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendar+IBExtension.m + path + FSCalendar/FSCalendar+IBExtension.m + sourceTree + <group> + + 6C39B0FF5AE98BDDCB414B11DE712C3A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarConstance.m + path + FSCalendar/FSCalendarConstance.m + sourceTree + <group> + + 6C6A24F40371C4A4407368739F0B7527 + + fileRef + 0FE9093598BDC2E573B5AC53CC2C517E + isa + PBXBuildFile + + 6C7E354B436E9E308CE188F51E494FCE + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + FontAwesomeKit-prefix.pch + sourceTree + <group> + + 6C9AAE941AC7CDF48E9EB2CA2EAC6768 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarDynamicHeader.h + path + FSCalendar/FSCalendarDynamicHeader.h + sourceTree + <group> + + 6D631FCAFDF1219435D003A82C369EE0 + + fileRef + 4D3478B625016D4EF1ACCC9DD2B2A85F + isa + PBXBuildFile + + 6E3DB3F82F3648296FD1BF2E36CFC124 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + PermissionScope-dummy.m + sourceTree + <group> + + 6E9C2865A3E30F11FC879056636CC7D6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + EFCircularSlider-umbrella.h + sourceTree + <group> + + 6F200F750E61DB9022BD5CE95C163D5A + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Pods_tpg_offline.framework + path + Pods-tpg offline.framework + sourceTree + BUILT_PRODUCTS_DIR + + 6FB9BDB6E6C57E867D09845E12D225B0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIAppearance+Swift.h + path + Pod/Classes/Objective-C/UIAppearance+Swift.h + sourceTree + <group> + + 6FFDAD2F800BC27FCF40E92B71D88CF3 + + fileRef + C4D390002580AC1F469A1999C83FFDF8 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 7021185442C524179D89A52AE5E25A7D + + fileRef + CD945D2700569C9B879F04384D634D8A + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 705BAE09E9F8E09B5408B44AA5BE124E + + children + + B29D30E5EA5505B7A6CFEEA46C2ED2DC + F4F9BA77B86D296C90AFDC11261635FF + + isa + PBXGroup + name + Targets Support Files + sourceTree + <group> + + 70962FC7C02572564C5188D973FB6A11 + + children + + 0C0F2707AC51B7AE391395A888647E09 + + isa + PBXGroup + name + Swift + sourceTree + <group> + + 70A9CB1BADBC6470028F8494402C5229 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallRotate.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift + sourceTree + <group> + + 711E05E4EE55A83C571B94C86F4DC1B8 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 717E6DF8C0702567A757898EEC4C07F7 + + fileRef + 8DD593912017033F993EE231973FF1F5 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 718BF54C255A222F9C2D307939A3A3EE + + fileRef + 9E76B85726E29D6DF547809CFB590E00 + isa + PBXBuildFile + + 71A4F9942B2D5342CFBE7726D018DA39 + + fileRef + F47D007801B5C3C795FCE310BB67E644 + isa + PBXBuildFile + + 71C202ED706116B59F510C850DABC016 + + buildConfigurations + + F9EAB52F5C156FD838E611107250E5E8 + 5FDA8D120FC9CC14071EC93C1FD9891E + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 7246E2CCC5D2811640E9D807C383278E + + fileRef + 5C68E7D5CAB6FA6E8D87DF770955B113 + isa + PBXBuildFile + + 726937D5C8BC54B2B99A37DCEB4980BD + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + EFCircularTrig.m + path + EFCircularSlider/EFCircularTrig.m + sourceTree + <group> + + 727DE96D6CD78FF88F5E2B157BC84358 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRActivityIndicatorView.h + path + src/Components/MRActivityIndicatorView.h + sourceTree + <group> + + 72BA0ECE7244749EBA491859232E2414 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + CLSStackFrame.h + path + iOS/Crashlytics.framework/Headers/CLSStackFrame.h + sourceTree + <group> + + 72EDA8E61D7A0110F5544A4F58984810 + + fileRef + 3054F23BB5817B5D9E23AF945EB56EA0 + isa + PBXBuildFile + + 72F875E3B7DF608DFB3B19224504D46F + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 7312034D9EE7758862A1861C3CC7AB5E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRIconView.m + path + src/Components/MRIconView.m + sourceTree + <group> + + 73379C9E26389CA7D26E6B34D770D703 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallBeat.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift + sourceTree + <group> + + 7359B876ABD6B37138D790129C7CE7B7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallScale.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift + sourceTree + <group> + + 738E4E0555CE3C233C400AE87B9887E4 + + fileRef + BB6C29A723635DB6B216FF05A302F432 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 743D63D3EF95A875E73D332BC60C60BE + + fileRef + 278C52DB9A993B05EEDE4D395AC9BC37 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 74B26E78BBE0779183747FD87CF3CF13 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + FSCalendar-prefix.pch + sourceTree + <group> + + 74DF8A9CBE6EAEB8C19105D047645443 + + buildConfigurations + + 9B46DED719EFC4742EA5325977802C06 + 92C0AB350BC3B2637E8D48B47DC697F7 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 74E58D5D8D74FB61414C5BF7F52C14D5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Extensions.swift + path + PermissionScope/Extensions.swift + sourceTree + <group> + + 756248B291D366F8B29EA3A7AE47C79A + + buildActionMask + 2147483647 + files + + 4D79EC114BE4E3A99C20702B190F2FCA + 832946EFD651EC8DD5310FAE546A6C47 + 18BC1B2A0EA94E2BF2DC912E1645E906 + EE45E0FB3A26B7DFF80DDCF6C597970B + 351D7AEB6A0C1AAB2267AD1216CE8B63 + 62D098F264BA505FF93376E1817B7D31 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 759B4A998FF3E563AFBE2ABDC1460272 + + fileRef + 21067C6ABC90B85C3F83A8098CE38300 + isa + PBXBuildFile + + 75C2EC4E91C632BA530B5B1E60DC4AEE + + fileRef + FF424AFF7D049E8EC495D95B7A9C5E5F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 75D68D5A54F917E34A9DCA4670C8B802 + + baseConfigurationReference + A85E7C45C2C5560F5C30392EB2DF31D1 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch + INFOPLIST_FILE + Target Support Files/NVActivityIndicatorView/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + NVActivityIndicatorView + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 76E5E20153E7FAC7491A7C62BD947B55 + + baseConfigurationReference + EBEA2C2D7F05DAA5680CC4E423E485B8 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftyJSON-iOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + SwiftyJSON + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 7708E07C85FF6C2BC400C15CCDB7EB1C + + fileRef + 08A8089D7472CE47CA5B59513A9B485A + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 77246F6AA53E115480FAEAA5CDCC3471 + + fileRef + 8804E110F941EE91C30984FFA968C29B + isa + PBXBuildFile + + 772F23910EE903F51919A7BC788CD77C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + INTULocationManager.m + path + LocationManager/INTULocationManager/INTULocationManager.m + sourceTree + <group> + + 774157004CC04955C71B546D440B5083 + + fileRef + 8C94FFBD5D5C9370281983F784ABF5A7 + isa + PBXBuildFile + + 779F6053FDD5398431697087368B54A1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRActivityIndicatorView.m + path + src/Components/MRActivityIndicatorView.m + sourceTree + <group> + + 7846CE8A672814DFF08B65B6E05171C2 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendar+Deprecated.m + path + FSCalendar/FSCalendar+Deprecated.m + sourceTree + <group> + + 7856583BFD591211EC4867B23E3CD4F1 + + includeInIndex + 1 + isa + PBXFileReference + path + Localize-Swift.modulemap + sourceTree + <group> + + 785B161076B030756B1782E119CD09F2 + + fileRef + 58AF2601D0144359A19374C0CBFB6CE5 + isa + PBXBuildFile + + 7880179AA3CC43A3A4B653BB3DFF2252 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKFoundationIcons.h + path + FontAwesomeKit/FAKFoundationIcons.h + sourceTree + <group> + + 788662EB83B90E3F18010FEA113A2C21 + + baseConfigurationReference + 93E41296CB3C32082686A447600CE334 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch-prefix.pch + INFOPLIST_FILE + Target Support Files/DGRunkeeperSwitch/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + DGRunkeeperSwitch + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 788907A105CE1BC948CBF1DC3F0099CD + + fileRef + F80A38740B0FC521430391E85908F05E + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 789916382E59ADBE8407B6AAEBE8BE7C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Localize_Swift.h + path + Sources/Localize_Swift.h + sourceTree + <group> + + 789A6651091900E2BFB07B5D02157B92 + + includeInIndex + 1 + isa + PBXFileReference + name + foundation-icons.ttf + path + FontAwesomeKit/foundation-icons.ttf + sourceTree + <group> + + 78D3F23B6CFD885502979878BFC67723 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + SwiftyJSON-iOS-dummy.m + sourceTree + <group> + + 7924757FDF730E1CA7EC6EC5B87560D7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + AES256CBC.swift + path + sources/AES256CBC.swift + sourceTree + <group> + + 795D4787D2EB6E730000229B9CED1D2B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarCell.h + path + FSCalendar/FSCalendarCell.h + sourceTree + <group> + + 7968F6B30DE34885335567998D7E4853 + + buildConfigurations + + 7BA41E23F5190A2DD0509BB84A9DBD1E + AEF4A6BDD059F807A283AFF9317F509D + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 796F45EA891A4B4E3A6583CA38ECE698 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + CoreText.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreText.framework + sourceTree + DEVELOPER_DIR + + 79C1BB13E001FBB74CCF52A526C9A64B + + fileRef + A4A7C6729AAB814DF324E08BF396954B + isa + PBXBuildFile + + 79D666FE7ABD70DF4633E4763CD2D6A7 + + fileRef + BC5E92ABFC3B5DFB45E5D0E854084867 + isa + PBXBuildFile + + 79F0AF923EA8BE9F7151F9B346CC1758 + + baseConfigurationReference + F10DC2A793C1B040AD2EDDB74761FF3A + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/FontAwesomeKit/FontAwesomeKit-prefix.pch + INFOPLIST_FILE + Target Support Files/FontAwesomeKit/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/FontAwesomeKit/FontAwesomeKit.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + FontAwesomeKit + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 7A43A7B6F95E617D9219F3930890E1C8 + + fileRef + E805993B25BD0F1D55AADCE5B4BB4B5A + isa + PBXBuildFile + + 7A7E7427D12ACA69C0244F8692C80B4F + + fileRef + 6C146E1B77F97639B95CBC0B8DD63FC5 + isa + PBXBuildFile + + 7A88BF95853A69E550E9F63A060BED12 + + fileRef + 59831F1BC5761E280D1FEE2B25D8163D + isa + PBXBuildFile + + 7AB32E900C4B33032E7635615A73717D + + children + + 36E733E927A2AE4F1581FCD67BFC6DEF + 8BECC55A4F347AEA85B69A7BA1BB490F + + isa + PBXGroup + name + DGRunkeeperSwitch + path + DGRunkeeperSwitch + sourceTree + <group> + + 7AD603BED1010165232F13B4F493A8DA + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarAppearance.h + path + FSCalendar/FSCalendarAppearance.h + sourceTree + <group> + + 7AFDB6CA058C82D78D7EB14382C499B7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SwiftDate-umbrella.h + sourceTree + <group> + + 7B1A7B67D4DE96A23D83F563AA3B5E87 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + SCLAlertView-dummy.m + sourceTree + <group> + + 7B47980BDB7D6212267856620E15AF7A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + AKPickerView-Swift-dummy.m + sourceTree + <group> + + 7BA41E23F5190A2DD0509BB84A9DBD1E + + baseConfigurationReference + 956B6A89964FF20F9A628AC3803DD819 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Localize-Swift/Localize-Swift-prefix.pch + INFOPLIST_FILE + Target Support Files/Localize-Swift/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Localize-Swift/Localize-Swift.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + Localize_Swift + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 7C5E58BD5FB3BCDD5AD14F713E251CC8 + + fileRef + 3AD522B47E3BD8B349790BAB3DD2E5D9 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 7CFF3D11D2A80054659CB09F8D17A1A1 + + fileRef + D5162775B263A06E4540764E62008E2B + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 7DB346D0F39D3F0E887471402A8071AB + + children + + 93A4A3777CF96A4AAC1D13BA6DCCEA73 + 09980330DAAA709A75005526167B0BE5 + 4829927BE941D722C1EF9D677F18F809 + 19C95D49F9D91535EDF35047A6AE5277 + 705BAE09E9F8E09B5408B44AA5BE124E + + isa + PBXGroup + sourceTree + <group> + + 7E13B0AF3A796DA7624F0D88EA1A28FE + + fileRef + 32E9A53C2041A83FC6BC394589C96201 + isa + PBXBuildFile + + 7E4CAEA6EAA610AF6437B72E7353F469 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + 7E812E4BD0214E629E8E43EDCCA4FB6A + + isa + PBXTargetDependency + name + Alamofire-watchOS + target + 063E3C59C1B7382B70A98D5EF8052B8D + targetProxy + 4E39384F9A124DC28053D9BD4ABAF14E + + 7EC1417298041145E9B1A4C7B395C179 + + buildConfigurationList + CA4CCD706EC7E8169DCCA8D9AFEDB127 + buildPhases + + 9DA31D67DD51AB1E170328CC579FF319 + 0C3240922851CEEC70B722E9B9D6B6AA + 8E8A1B985504D5226697EB8E0FD7267C + + buildRules + + dependencies + + isa + PBXNativeTarget + name + AKPickerView-Swift + productName + AKPickerView-Swift + productReference + 093732CF879DA22CBF0459EC64678584 + productType + com.apple.product-type.framework + + 7EC9330EBDF327051B12E42AE8741B6E + + fileRef + D5CFC932A9E3754B38564395F5A36859 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 7EF54B054A6E995AC89E484E94D7BE97 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + AsyncSwift-umbrella.h + sourceTree + <group> + + 7F1C0B7F78B3131BAC17509FA156A59B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + EFCircularSlider-dummy.m + sourceTree + <group> + + 7F1E7CE3200B397BDD5314CD18A634F7 + + fileRef + 18581811C2E4F921BA210687C370239A + isa + PBXBuildFile + + 7F3A0CA4D0F80DC61F79C17B9A13B09D + + fileRef + 6424917D9653F292C6199D2D4C57B31D + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 7F54CEBBF8612CC9C1D4EC01F8A56A71 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarStickyHeader.m + path + FSCalendar/FSCalendarStickyHeader.m + sourceTree + <group> + + 7F74F6750DCA2C74CBE4D503E961B4C6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + NVActivityIndicatorView-dummy.m + sourceTree + <group> + + 7F80871449CFFF1C3EEA1B409B3192D7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + INTULocationManager-prefix.pch + sourceTree + <group> + + 7F8BB67D4CE2859B297E14C3B640C75B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + ChameleonFramework-dummy.m + sourceTree + <group> + + 7FF13C6E5AB7838B850691AF3A2C0597 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + OnboardingContentViewController.h + path + Source/OnboardingContentViewController.h + sourceTree + <group> + + 7FF5C5B3FEE76ACA587E91307332BECD + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendar+IBExtension.h + path + FSCalendar/FSCalendar+IBExtension.h + sourceTree + <group> + + 8002BC0727E9A55C77975047D7F4513D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + EFCircularSlider.xcconfig + sourceTree + <group> + + 800EC413EDAEF9D166DE33535CFD20DA + + baseConfigurationReference + F10DC2A793C1B040AD2EDDB74761FF3A + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/FontAwesomeKit/FontAwesomeKit-prefix.pch + INFOPLIST_FILE + Target Support Files/FontAwesomeKit/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/FontAwesomeKit/FontAwesomeKit.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + FontAwesomeKit + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 801D9AE7807DED69A9EB11F5301984E2 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + EFCircularSlider.framework + path + EFCircularSlider.framework + sourceTree + BUILT_PRODUCTS_DIR + + 811BF3A1EDF9B595901E2FC404641EE7 + + fileRef + 1635A72A184E8A3C06EB9F0384AC92A3 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 81694B31763640FB3743C90CF3547673 + + fileRef + 5A20C4D526672DD2695F53406DAD887B + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 8176EF7AD43D5A379B157BC99223CF28 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + ChameleonConstants.h + path + Pod/Classes/Objective-C/ChameleonConstants.h + sourceTree + <group> + + 81840B35F7DD7F3CA4592E2B6893B933 + + fileRef + E0EA97C7A06E7F9F5DD0876140378CBD + isa + PBXBuildFile + + 821E8C0F89874CF1E49B864A81D2DDA6 + + fileRef + 78D3F23B6CFD885502979878BFC67723 + isa + PBXBuildFile + + 828A2A8A3D392E1350C4330A6E8B0F84 + + buildActionMask + 2147483647 + files + + 3D33BF2D79985CBFBE9600D971161B7C + 179765FD0C0FF5472F28D27F28097EEB + 64974DA29A383B50EF511291B22B8044 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 82AB329159B7387DA01087F7E540C407 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendar.m + path + FSCalendar/FSCalendar.m + sourceTree + <group> + + 832946EFD651EC8DD5310FAE546A6C47 + + fileRef + 74E58D5D8D74FB61414C5BF7F52C14D5 + isa + PBXBuildFile + + 83657B73A26369F9813C3BB14351DF76 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Additions.swift + path + Sources/SwiftDate/Additions.swift + sourceTree + <group> + + 83BC947C81CD6B24E1F1B4423A032DE5 + + fileRef + 337564BDFF531733FAC3673C8F901A7B + isa + PBXBuildFile + + 8437636BEB5B0CCFC7CB4E58199413E8 + + fileRef + 9B3AB6C9D30847CE518BDB0606AD01A8 + isa + PBXBuildFile + + 84916F7565212118FF5B37CFDD348802 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Request.swift + path + Source/Request.swift + sourceTree + <group> + + 851E0387E4EB02E5DCCCCAADFE01445B + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + 852394CB6D948E01BAFAD08E95108E4F + + children + + 278C52DB9A993B05EEDE4D395AC9BC37 + 310CBB705E31A9305C10AABF2D3A2E69 + 92EF2FAF6FA7B1264CDC89125FCA6A8F + + isa + PBXGroup + name + FontAwesome + sourceTree + <group> + + 85A2EC85BB2C7E90608EB461A8FE264A + + baseConfigurationReference + 09A32B41C7F51B14395B0AFDE1537523 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + INFOPLIST_FILE + Target Support Files/Pods-tpg offline/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MACH_O_TYPE + staticlib + MODULEMAP_FILE + Target Support Files/Pods-tpg offline/Pods-tpg offline.modulemap + MTL_ENABLE_DEBUG_INFO + NO + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PODS_ROOT + $(SRCROOT) + PRODUCT_BUNDLE_IDENTIFIER + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + PRODUCT_NAME + Pods_tpg_offline + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 85F1B93FE9404B21C6884518E58091FE + + buildActionMask + 2147483647 + files + + C2FB15FB93D6C16AE1BCD2388043E0D5 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 8628D4F2122871CB1B1EEC5736929A34 + + fileRef + 39CFAE1CB6595F0C44AE27B8B2A2954A + isa + PBXBuildFile + + 868010619D7E6CBA5C6E6E2874668C85 + + buildConfigurationList + 074E1B768E755CAD2D14F733E80D73D9 + buildPhases + + 0FD1E1DB785459376F5AD033F11125CD + A7E674E0456B599207C34EEB5C948725 + 4C3675572D5182F562E4C84BED3B3C11 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + FSCalendar + productName + FSCalendar + productReference + A4DD74546F0E5ABE1E63FE09B258A950 + productType + com.apple.product-type.framework + + 8689168E7FDBB545DB748E3E441E05B3 + + fileRef + 796F45EA891A4B4E3A6583CA38ECE698 + isa + PBXBuildFile + + 8698C4558AE758AD92477EC134E714F7 + + buildConfigurationList + 3F79B29811B7D371E63FE8356D197C58 + buildPhases + + 0FDC39DD2A55538A0A0702DA0589244A + 828A2A8A3D392E1350C4330A6E8B0F84 + 1EF98E756893E2D2DAF8BD88A98EF184 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + NVActivityIndicatorView + productName + NVActivityIndicatorView + productReference + 65B0CD1EDECEA34E3464FE711A33F0E6 + productType + com.apple.product-type.framework + + 86A93CA03EE1541CB25611641A192AE0 + + fileRef + 546C7D83BE6A81EC387005E5860E0790 + isa + PBXBuildFile + + 86BA959299BECF7B0314ECC08EC0614F + + fileRef + C8C2E9B5BDE46B636B681309AA4B43BF + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -DOS_OBJECT_USE_OBJC=0 + + + 8771C847926D881CBF0A8FD0A63799A4 + + children + + 2B426CDD5C4D354DC4FBF0FFCDD63F23 + BC0D59CC0982804DC83F07651CF83440 + + isa + PBXGroup + name + SwiftyJSON + path + SwiftyJSON + sourceTree + <group> + + 87CEFC0186EC9D9BE5CA8802DC83A303 + + buildConfigurations + + 76E5E20153E7FAC7491A7C62BD947B55 + 6881F4719F87CE9A0614CFD35602E150 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 87D5AB92B78FC069B8E5B743491DEFC4 + + fileRef + CCD875C439DD904B030CBFDB79D7778B + isa + PBXBuildFile + + 87E5603C47D402ADE5A7C074B6EB06E5 + + fileRef + C3B2E1D68BC5256373D7257D0FED94D0 + isa + PBXBuildFile + + 8802D07C334E3D3A8779C6259A556298 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKOcticons.m + path + FontAwesomeKit/FAKOcticons.m + sourceTree + <group> + + 8804E110F941EE91C30984FFA968C29B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + name + Info.plist + path + SCLAlertView/Info.plist + sourceTree + <group> + + 886A5683B85D4C7D55787277011BC8F6 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + MRProgress.framework + path + MRProgress.framework + sourceTree + BUILT_PRODUCTS_DIR + + 887D126993E8C0690949124F6600C0E0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + EFCircularSlider.m + path + EFCircularSlider/EFCircularSlider.m + sourceTree + <group> + + 889F01ECE08C84EED4FA1FEF7BCA2C91 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRProgressView.m + path + src/Components/MRProgressView.m + sourceTree + <group> + + 8961E8868A393E2E54136A1C15D6BC22 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 89BC45A7BFF74434AA90C0A2FD7E1613 + + fileRef + 84916F7565212118FF5B37CFDD348802 + isa + PBXBuildFile + + 89C69EB624EC8137588D9568F2E11964 + + buildConfigurationList + 1E8642B00B4E01E477F9A0CDAB74627C + buildPhases + + 385BE00E6BCF73A2B3A39A1F6E775BA1 + DB2168E57204757AD51628D13B2C3C31 + 9161D43CC7D88710DE94173B5D7CA310 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + Alamofire-iOS + productName + Alamofire-iOS + productReference + E10811611C26692BF478956AFCDF58A8 + productType + com.apple.product-type.framework + + 89CE4E0D4BEDD88C4B05A9D54526CE7E + + fileRef + DFC8701E7DD1F51BBE94E2EEB0D78F23 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 8A50EC43E2E52EC3C02907FFC4A43D50 + + buildActionMask + 2147483647 + files + + 126169B8BF7430D89BB990B97C36D75F + 2754C4E95E265639D7CFC90BA8264476 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 8A593E68797C15E2C6C1ED6DCFDC08BD + + fileRef + 129F563826E5E9A812D60D486DBDF6A1 + isa + PBXBuildFile + + 8A609220390F13874F262B899AB318EF + + fileRef + DE177FEDE0703332B50A5A4D7E6D2079 + isa + PBXBuildFile + + 8A8105A0C7A8517A5ABCA401BE6FE039 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Alamofire-iOS-prefix.pch + sourceTree + <group> + + 8B264765D54120716010003928FFEA54 + + buildConfigurations + + CB1F38FB42E62C6CF5A2EA373D0644AC + 394C8FA003188A5B97A75502942E4431 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 8B75BEDAB1DA3D563FE5EC4B2FB1DB20 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + SwiftDate.xcconfig + sourceTree + <group> + + 8B7CA5A9DA7A3F51B617639E50EB7484 + + fileRef + A205D9205956EEE8839144670AEAA60C + isa + PBXBuildFile + + 8BE0ED70D2966877C228EA330BCCC74D + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + CB63EA71F76CF030DDDD92C2BA4420FB + remoteInfo + SwiftDate + + 8BECC55A4F347AEA85B69A7BA1BB490F + + children + + 37E70B5BFFA69D015B03107871309A79 + 93E41296CB3C32082686A447600CE334 + 99CC884149A4C2292216CF12A301CBCA + F9E78295BF967675C4E64563D61D4C2B + 16103CEC0262AD29E42A43B9CCF4AE08 + D83CC0EDA9AC8B872D5764F71AACE460 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/DGRunkeeperSwitch + sourceTree + <group> + + 8C12554B835AD5AE59B3E1F69124913E + + fileRef + C8FC7342A57CF84FC01D29A133B9A8B0 + isa + PBXBuildFile + + 8C94FFBD5D5C9370281983F784ABF5A7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + SwiftyJSON-watchOS-dummy.m + path + ../SwiftyJSON-watchOS/SwiftyJSON-watchOS-dummy.m + sourceTree + <group> + + 8CF5ACA6C355B72E2CE843393A3E2C7C + + fileRef + AFF4D5D6CB01CE1F29688B652761D901 + isa + PBXBuildFile + + 8D43279E02746C3E916A66752B7BC94F + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 5172ACAB7FEA22813859DC97CA0AA16F + remoteInfo + ChameleonFramework + + 8D4CCDD0327C65102D18698E8D0E2A2A + + fileRef + F5D10CA3D63021591D39AE358891BA73 + isa + PBXBuildFile + + 8D6C5CB6CED65AB399D90578EFC519DA + + includeInIndex + 1 + isa + PBXFileReference + path + Onboard.modulemap + sourceTree + <group> + + 8D9057263D516B050B625B71636D8E6C + + includeInIndex + 1 + isa + PBXFileReference + path + SwiftDate.modulemap + sourceTree + <group> + + 8D93F27DE77DEE3CDF1306A5B38A037C + + fileRef + B99ED447787D858E61E396C89EDEC563 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 8DB0A262116A918129A09DFFA141737B + + buildActionMask + 2147483647 + files + + 605CAB6DC64D4B05EF50240758117F6C + 8FDC994322314D45AA0CFF793F4BD324 + 6A671575ADA21D9F204306074D47E369 + BA5076D65D23424DF737BDE3B859DA1A + CF58BB41F927A98D573196D5507F704F + 1CEBA9941F7A853124AB4CAA020650BA + AFA241097F41277C20FC9CCDC88A1D0B + 6C6A24F40371C4A4407368739F0B7527 + 95AB88CD2F92808DC1445218429DD44D + B210FBB81D0AA735B795EBD274A0741B + 204DE417C1036FE04DA6AB36D80E0297 + C3BD790AA6D38E6A67FB17B7C3EA5DC1 + 3F0AABC0771D8B3BC8D68362A7728D7E + 1BBF269188A10B5692DBB2FDE0B1B42A + 01B824A462CD55900AD42E873E879288 + F0EEB0967A204264AC22A16C2567A9C3 + 99CB46EE7F2E1C67399810A21A4137EA + B3F414258834249101A45944BD50C221 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 8DD593912017033F993EE231973FF1F5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Localize-Swift-umbrella.h + sourceTree + <group> + + 8E41AFB94576AF0491E356300B836F1A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + ChameleonFramework-umbrella.h + sourceTree + <group> + + 8E55107B59A92876B44B690F74B121E7 + + fileRef + E0AEE06DCF8E2607459EBDD5C4757629 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 8E61C2D23625C11C6F5BFE91C80DEF1D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + FSCalendar-dummy.m + sourceTree + <group> + + 8E8A1B985504D5226697EB8E0FD7267C + + buildActionMask + 2147483647 + files + + BE325A5869FCE249947C11DED959C6A0 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 8E8E82BF4D56E194B2EB297269AA46DE + + fileRef + DF565F97655E8A03E36E9AEDECF0BC88 + isa + PBXBuildFile + + 8E9CBF31269638BD542697FB41DB1A3B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRBlurView.m + path + src/Blur/MRBlurView.m + sourceTree + <group> + + 8F17DD5BDDF65F3AB77F350BE14632BE + + buildConfigurationList + E22E022678FF41228D1CF045A77C6D61 + buildPhases + + F3DBC8682135AF5B36382E304C0CEF08 + ED30B7DD7B886B42115F9F24B1029048 + 9A19DE11B661EB726D46FF762B182054 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + EFCircularSlider + productName + EFCircularSlider + productReference + 801D9AE7807DED69A9EB11F5301984E2 + productType + com.apple.product-type.framework + + 8F5D433367D622A00CA4F3714EB501A4 + + fileRef + C95AF396459EB28F90D29CED9A0B0E94 + isa + PBXBuildFile + + 8F77B7906E5AFAFE268632DD1EAFA561 + + isa + PBXTargetDependency + name + MRProgress + target + 9CAAB2A1855182D992E2945796B03B4D + targetProxy + D03A993FA74994BFFCF104375E243CD3 + + 8FB125B74EF44689C31B0BEEEC15B7F6 + + baseConfigurationReference + 8B75BEDAB1DA3D563FE5EC4B2FB1DB20 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftDate/SwiftDate-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftDate/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftDate/SwiftDate.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + SwiftDate + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 8FCCED683C001C0785AD28BD3880FA84 + + buildActionMask + 2147483647 + files + + 40941F6499CC47BDB600BE4C748BD089 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 8FDC994322314D45AA0CFF793F4BD324 + + fileRef + D66B51AF38160D1F6E6FA8DC38481A87 + isa + PBXBuildFile + + 90F3A373E978EFE9B2FC3264B42489C3 + + buildActionMask + 2147483647 + files + + 389C4FBDB5A2A78FACC695BB0AB0213D + 7246E2CCC5D2811640E9D807C383278E + 00531077997BBF34D77624B9A5DE0926 + 79D666FE7ABD70DF4633E4763CD2D6A7 + 302BFEBDBC4E81A415C204E50010AFA0 + DC7957B235F32B0A85E23A08C1BAE606 + 5ED866DD42D2514CFEEAA6CDE0CCCC1E + 4A61795E90E11D13415988E578C1FBB2 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 915C91A45F3F3FACD218ACB680DB1379 + + children + + B179499D1CEB179823BD3A900DF64DE6 + A205D9205956EEE8839144670AEAA60C + 5F5BFCE19AD581748B9254D9D1E45045 + + isa + PBXGroup + name + IonIcons + sourceTree + <group> + + 9161D43CC7D88710DE94173B5D7CA310 + + buildActionMask + 2147483647 + files + + E65F8EEC6AECDB63A6D20FF63122B748 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 9250D26BC513D25521A34970DBD95DB5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallClipRotateMultiple.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift + sourceTree + <group> + + 92C0AB350BC3B2637E8D48B47DC697F7 + + baseConfigurationReference + 4CE28BC6D0C9A8601F5227326CD6EA03 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh-prefix.pch + INFOPLIST_FILE + Target Support Files/DGElasticPullToRefresh/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + DGElasticPullToRefresh + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 92E951E21093F513CA9C9BB96058015F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSDateFormatter+SwiftDate.swift + path + Sources/SwiftDate/NSDateFormatter+SwiftDate.swift + sourceTree + <group> + + 92EF2FAF6FA7B1264CDC89125FCA6A8F + + children + + D50109CEBE558FBD6363CF8BA4102B77 + + isa + PBXGroup + name + Resources + sourceTree + <group> + + 93192D8BBBFAA2AB4F5C187B845F0B5E + + buildConfigurations + + 2D07D2111D7E72629502F1A9D7DA735C + 85A2EC85BB2C7E90608EB461A8FE264A + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 933985846B9A0F799C4CD75B9AC5C5A9 + + children + + 1E499A585D4AB266F8CA307193BD6BCF + 3EAB5F329DF57CE14D662059B1C47DFD + 852394CB6D948E01BAFAD08E95108E4F + 65CE760D195281B13FDCBDF66B6631EF + 915C91A45F3F3FACD218ACB680DB1379 + 98D485A9203A80CED9911472C596378B + 503E7DD42CD052D997EF4F4D5551F072 + 256EE1369C8616EE1ECD4885546714D5 + 21890B46C0506F8FDA6C1BBB39B76537 + + isa + PBXGroup + name + FontAwesomeKit + path + FontAwesomeKit + sourceTree + <group> + + 93A4A3777CF96A4AAC1D13BA6DCCEA73 + + explicitFileType + text.script.ruby + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text + name + Podfile + path + ../Podfile + sourceTree + SOURCE_ROOT + xcLanguageSpecificationIdentifier + xcode.lang.ruby + + 93CCBF9CE5CD966617D3AE333FD6F62D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallRotateChase.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift + sourceTree + <group> + + 93E41296CB3C32082686A447600CE334 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + DGRunkeeperSwitch.xcconfig + sourceTree + <group> + + 93F14E791C5BD70660DE7CCCF5A00548 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 7EC1417298041145E9B1A4C7B395C179 + remoteInfo + AKPickerView-Swift + + 9426D56D8B9D73D6F15B6A4DA1680881 + + baseConfigurationReference + 3DB1D647196B6284448AF7B77F13E89E + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/PermissionScope/PermissionScope-prefix.pch + INFOPLIST_FILE + Target Support Files/PermissionScope/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/PermissionScope/PermissionScope.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + PermissionScope + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 94288D98DDB588CCABEB079FA1ED081E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + AKPickerView-Swift-umbrella.h + sourceTree + <group> + + 94E3A72588376F13003ACE60CA6B6535 + + buildActionMask + 2147483647 + files + + 8689168E7FDBB545DB748E3E441E05B3 + B69A9AF957DDA1C5FB012C6091F8456F + 654A4789A97377F3323CE5D0F6A5D5F4 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 95167CA6D4FE6CFA3762703F17002FC6 + + fileRef + 636FEDD65FB6BE2F64F1182507C5C6A2 + isa + PBXBuildFile + + 955FD0AF22D52010667DDD9789A3F2A2 + + includeInIndex + 1 + isa + PBXFileReference + path + Alamofire-iOS.modulemap + sourceTree + <group> + + 956B6A89964FF20F9A628AC3803DD819 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Localize-Swift.xcconfig + sourceTree + <group> + + 95AB88CD2F92808DC1445218429DD44D + + fileRef + 23791BB07AB12A358882FAD5F7810150 + isa + PBXBuildFile + + 9610EF1CC8189E1794A31790D5C18ABB + + includeInIndex + 1 + isa + PBXFileReference + path + SwiftyJSON-iOS.modulemap + sourceTree + <group> + + 96CC67DB5753C1B602377DEEEA9D8B4A + + fileRef + ED3298553664EEF70B0B1A616FB7CDF6 + isa + PBXBuildFile + + 96DF4B6A438D02F637503AD286EEB3B6 + + children + + C886326AB33644D5D15305F839A3A46A + 7856583BFD591211EC4867B23E3CD4F1 + 956B6A89964FF20F9A628AC3803DD819 + C067C53445604DB178D82E59F7265F6C + 3D9A3B90F955463DB9E4304FF2807812 + 8DD593912017033F993EE231973FF1F5 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/Localize-Swift + sourceTree + <group> + + 9704E66F71CAC5874CC4FF01C2102FC3 + + includeInIndex + 1 + isa + PBXFileReference + path + AsyncSwift.modulemap + sourceTree + <group> + + 9712567144195F679ABA719D41E4B5D1 + + fileRef + 6E9C2865A3E30F11FC879056636CC7D6 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 976FAE8F43BF8A0A9939168A0B0A4B23 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + DGElasticPullToRefresh-prefix.pch + sourceTree + <group> + + 97BA742812CA0FA9DCAA86876C039FA5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + CLSAttributes.h + path + iOS/Crashlytics.framework/Headers/CLSAttributes.h + sourceTree + <group> + + 98D485A9203A80CED9911472C596378B + + children + + FF789217D639D9B251810729B161BC12 + E44A7805D7A64F340CA3841266E38DEB + B33760236C3F3C4A2B0E081E4B1A9202 + + isa + PBXGroup + name + Material + sourceTree + <group> + + 98FC2CDDABA4A8E2D1978B56C20CA69E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + CALayer+FSExtension.h + path + FSCalendar/CALayer+FSExtension.h + sourceTree + <group> + + 99467F259B31FBA8DDB95086022B4977 + + buildConfigurationList + C5FE88605B8796B643ABD6FE18770299 + buildPhases + + 03898318E84FF14F797A2ED995DAA321 + 94E3A72588376F13003ACE60CA6B6535 + AB95512F3C299EEC15B2A0067AE63AED + 258D59FBC0E4492363937A4FBCE41E6B + + buildRules + + dependencies + + isa + PBXNativeTarget + name + FontAwesomeKit + productName + FontAwesomeKit + productReference + C79DD6403B4134BF583372B42A62F5A3 + productType + com.apple.product-type.framework + + 9977A3C354D0666A654881E57BD22DFE + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + ChameleonFramework.xcconfig + sourceTree + <group> + + 99CB46EE7F2E1C67399810A21A4137EA + + fileRef + 0EFF24345ABA303EA4FF520401C17D53 + isa + PBXBuildFile + + 99CC884149A4C2292216CF12A301CBCA + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + DGRunkeeperSwitch-dummy.m + sourceTree + <group> + + 99CFFC9CD639929E19526770E790ADF6 + + fileRef + 7B1A7B67D4DE96A23D83F563AA3B5E87 + isa + PBXBuildFile + + 9A19DE11B661EB726D46FF762B182054 + + buildActionMask + 2147483647 + files + + 9712567144195F679ABA719D41E4B5D1 + B3E855DC27E787D79472053C4DBA94B6 + 2A356D564FA2B8D64F7081E23DD8A424 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 9ABB756BA507BB860FEEA4ECF922EAE8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + MultipartFormData.swift + path + Source/MultipartFormData.swift + sourceTree + <group> + + 9AEE8CB9A438667C3BF905C6206BC1EB + + fileRef + 13D361D6666C123D3355F6E3BDDD8033 + isa + PBXBuildFile + + 9AF2EF1CAE695BB53E5A8461232EBAD5 + + buildConfigurations + + CD8A3BE4AE2CEF50203E4F7910B3CC2F + 788662EB83B90E3F18010FEA113A2C21 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 9B23B5EEBA14B3CFCC7F4A2C5A66B9FA + + children + + D5162775B263A06E4540764E62008E2B + AE03B0A9C32384E6AFA1D1F6FDB4F627 + 0072A2460047877E053499CDA8E6B301 + A72B8F29B1F07A6FF8E5C5C436B948E5 + B9D340B116ADD45A91EB90F09DA98945 + 434F9660914F3498141DD3479BF90176 + 6B5AEBBD07D3109E95F9ED04A7158BBE + 47E8BDF9810A87ADEEA2D2416E4C8560 + E34FA00507C09AEC64D7232277F255CC + F734E1FA3A588E9EC2FDA1615C838B7D + E4C0B1EC55E54FB77FDA2D63150195DB + + isa + PBXGroup + name + MRProgress + path + MRProgress + sourceTree + <group> + + 9B365A3A01EF135485F43412F83C7C65 + + fileRef + A3FF108D1FFF24E0F7E4056506E0FEC6 + isa + PBXBuildFile + + 9B3AB6C9D30847CE518BDB0606AD01A8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationSemiCircleSpin.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift + sourceTree + <group> + + 9B3EEA3CFA303B0D28A8034C16BFDA15 + + fileRef + 2908766FD2C612D3CE38631C216E5E7F + isa + PBXBuildFile + + 9B46DED719EFC4742EA5325977802C06 + + baseConfigurationReference + 4CE28BC6D0C9A8601F5227326CD6EA03 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh-prefix.pch + INFOPLIST_FILE + Target Support Files/DGElasticPullToRefresh/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/DGElasticPullToRefresh/DGElasticPullToRefresh.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + DGElasticPullToRefresh + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 9C32FCCE3E1B62C0BA6C0FCDE6134E24 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + AsyncSwift-prefix.pch + sourceTree + <group> + + 9C4552FCDCC4876DE150A08BAE234484 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIButton+Chameleon.h + path + Pod/Classes/Objective-C/UIButton+Chameleon.h + sourceTree + <group> + + 9CAAB2A1855182D992E2945796B03B4D + + buildConfigurationList + 2E95DB18B92B10FFD1F819FA2896C284 + buildPhases + + 2EA167F2369E9F84FB1F8E9B272C5798 + 308EB9B41341FEAF006009FC79D74EC8 + 08DA4665F97C11B2674E2245E4965358 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + MRProgress + productName + MRProgress + productReference + 886A5683B85D4C7D55787277011BC8F6 + productType + com.apple.product-type.framework + + 9CB8A816A7DA1AD905C0E945B029B205 + + fileRef + D47BBB0668B35535BCE0F3B009DC0875 + isa + PBXBuildFile + + 9CF1E4F3D4B83E9735B63EB907263E40 + + fileRef + E0EA97C7A06E7F9F5DD0876140378CBD + isa + PBXBuildFile + + 9CFB3E5D593071280A4928E6A3845B20 + + buildActionMask + 2147483647 + files + + 2BC761C7F26B990973548460C12E1AFA + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 9D145DE96935A47F052FE587D91E9A12 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSCalendar+SwiftDate.swift + path + Sources/SwiftDate/NSCalendar+SwiftDate.swift + sourceTree + <group> + + 9D5A2C405F99E7A86A47810900B9B7D9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Result.swift + path + Source/Result.swift + sourceTree + <group> + + 9DA31D67DD51AB1E170328CC579FF319 + + buildActionMask + 2147483647 + files + + 581717436435D5B2B4CD456003D11B61 + 8A609220390F13874F262B899AB318EF + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 9DBB260424A93ECB857953FCCA088D8D + + baseConfigurationReference + 15C2B07CA7B651EEBB343804D2E82740 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Alamofire-iOS/Alamofire-iOS-prefix.pch + INFOPLIST_FILE + Target Support Files/Alamofire-iOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Alamofire-iOS/Alamofire-iOS.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + Alamofire + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 9DC1B1E0FDE05B2CFBB6A51B9D9D9A7B + + includeInIndex + 1 + isa + PBXFileReference + path + INTULocationManager.modulemap + sourceTree + <group> + + 9DCDA1914E57BC1CF34112979BE14A4A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + MRProgressOverlayView.m + path + src/Components/MRProgressOverlayView.m + sourceTree + <group> + + 9E138A11AB568FDD962F892987F6F048 + + buildActionMask + 2147483647 + files + + 56C1CDC60836D05B862E35DA33936032 + 5AD8039E8DD8CBB0A8E3B1015DAC0A0C + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 9E658FC70A55CCE5224B20696F95E89E + + isa + PBXTargetDependency + name + SwiftDate + target + CB63EA71F76CF030DDDD92C2BA4420FB + targetProxy + 8BE0ED70D2966877C228EA330BCCC74D + + 9E691E14C1B77ED5D56D132384AE4E8D + + fileRef + AD993760FFB9260D5E6EC387C7C39A68 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 9E76B85726E29D6DF547809CFB590E00 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallScaleRippleMultiple.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift + sourceTree + <group> + + 9EF0841B16C8D84091669E26C5A789D7 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 8F17DD5BDDF65F3AB77F350BE14632BE + remoteInfo + EFCircularSlider + + 9FA3CDA57290EFD8A64E227312F13949 + + fileRef + 6C39B0FF5AE98BDDCB414B11DE712C3A + isa + PBXBuildFile + + A007306A9F7EAF30B21BFDB4E741628B + + buildActionMask + 2147483647 + files + + 9B365A3A01EF135485F43412F83C7C65 + 1236ECB96A915EC617957A42838CDD7B + E0C720836FBA4E75E3E57069219B7107 + A2AC9FD0F42F638C48E72F88E8BC4C80 + 24E7D20FD204AF7AACB30A3B7C16388C + D2B61A78124FCB785E11A98BDD0471BC + A46A3EAB602FB4840C5AB8493F86AE4F + 01C6F32401BCBE9FF9B3C095B031D92B + E0AFA39DA4A01D8A8FE3D4EC76250F46 + 15E113F19F49C0C0472242BD6E849A1B + 9B3EEA3CFA303B0D28A8034C16BFDA15 + 4C6CEBA607BEA909A9CCB80C6AB6AE88 + C08DCA5180F1A15542694844C66B0EFB + 5177B3B95985D0A2CF8376A6FD4488C2 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + A1268063E55978BD476666C2D1529599 + + fileRef + BA6EF82474E186A9985DEC37E0DCF30D + isa + PBXBuildFile + + A18DDE132BF0B3FF6F33604B5CEB4D01 + + buildActionMask + 2147483647 + files + + 23094F4F8E85B7CE4BFF47DD4ACC8E9D + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + A1B8ED767C51F33161FA9C1B8BD39606 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Alamofire-watchOS-prefix.pch + path + ../Alamofire-watchOS/Alamofire-watchOS-prefix.pch + sourceTree + <group> + + A1C3B346893A1DCAC62F23112D3D101C + + children + + 50274EE915F74F20A7687C26FF93E2BB + + isa + PBXGroup + name + Frameworks + sourceTree + <group> + + A205D9205956EEE8839144670AEAA60C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKIonIcons.m + path + FontAwesomeKit/FAKIonIcons.m + sourceTree + <group> + + A26A727D9801AB2B62A50BA4D50A9583 + + children + + DCD70EC29FEB66A5D62068D5A8435CCF + D747AEC672D1277C864E5C47A6B7471A + 8E61C2D23625C11C6F5BFE91C80DEF1D + 74B26E78BBE0779183747FD87CF3CF13 + 02D5AFAD05FB846F86EBD9AC444DD984 + AAF90F76A6C0D5BA935007ECFCD10B9A + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/FSCalendar + sourceTree + <group> + + A28930DA66986E8D161FF256CFA2E2E9 + + fileRef + 60831C7844AF4083DDB81483B8551375 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + A2AC9FD0F42F638C48E72F88E8BC4C80 + + fileRef + 0C0F2707AC51B7AE391395A888647E09 + isa + PBXBuildFile + + A2DD571FFC37AC112093AEB0FCA09B92 + + fileRef + 2B426CDD5C4D354DC4FBF0FFCDD63F23 + isa + PBXBuildFile + + A31A1A0407176ED1974F8E75519822FD + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UILabel+Chameleon.h + path + Pod/Classes/Objective-C/UILabel+Chameleon.h + sourceTree + <group> + + A359AF394711D2015EEC292006B7C612 + + fileRef + F88D0FF5E57CF62065EBCBF75A4AAAB8 + isa + PBXBuildFile + + A36812D64930E0089E456916095FC128 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + PermissionScope.swift + path + PermissionScope/PermissionScope.swift + sourceTree + <group> + + A3C8626AC35DC46D1291E4B38362F4FB + + fileRef + 779F6053FDD5398431697087368B54A1 + isa + PBXBuildFile + + A3FF108D1FFF24E0F7E4056506E0FEC6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + Chameleon_.m + path + Pod/Classes/Objective-C/Chameleon_.m + sourceTree + <group> + + A46A3EAB602FB4840C5AB8493F86AE4F + + fileRef + CEF67511FD6E8DB3A42A3AA8B9C31D7E + isa + PBXBuildFile + + A4A7C6729AAB814DF324E08BF396954B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSTimeZone+SwiftDate.swift + path + Sources/SwiftDate/NSTimeZone+SwiftDate.swift + sourceTree + <group> + + A4AC0A23843A24F403875E424743A153 + + includeInIndex + 1 + isa + PBXFileReference + path + SwiftyBeaver.modulemap + sourceTree + <group> + + A4DD74546F0E5ABE1E63FE09B258A950 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + FSCalendar.framework + path + FSCalendar.framework + sourceTree + BUILT_PRODUCTS_DIR + + A513BB1FCBF12CA76D5E1C9F03CEFC7E + + includeInIndex + 1 + isa + PBXFileReference + path + MRProgress.modulemap + sourceTree + <group> + + A54AE4407ACC52B241E43CB017F276FF + + fileRef + 9ABB756BA507BB860FEEA4ECF922EAE8 + isa + PBXBuildFile + + A579DC91DD49DA57F1781C6C887A4E44 + + buildConfigurations + + 0C4EA2F8CD24B71BD3C823F1F7BE849B + E7D83D74F3A5AEC11161EA93D080FC4F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + A5A0EE43C9FD7834B17D804EDE2C39E5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Pods-tpg offline-dummy.m + sourceTree + <group> + + A5C78F0806A05F568B06C6500F030554 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Manager.swift + path + Source/Manager.swift + sourceTree + <group> + + A61CF9FA7CE0C441B4335C401EB17E46 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarHeader.h + path + FSCalendar/FSCalendarHeader.h + sourceTree + <group> + + A6558757AD02BC73EB6C99946937DC9C + + buildActionMask + 2147483647 + files + + F3D71D6BD5F271EFCE5F0D2F6A1282BB + A1268063E55978BD476666C2D1529599 + 71A4F9942B2D5342CFBE7726D018DA39 + F3F5B5737535D91E9394B0899338E6F5 + 785B161076B030756B1782E119CD09F2 + 87E5603C47D402ADE5A7C074B6EB06E5 + D72B7C8687B0968BC6EA8EB8273CA31B + F6A96B04212E73D95041689D00038C77 + A96072880D4D9BB62A9A48830FF2B51A + 0ED4693DD1A1D5120F7C1303F2D44129 + D034D2F31D04CA39382E58D5A48E24AA + 3129B0CCAE00C59E7C0D631811670ECF + 6D631FCAFDF1219435D003A82C369EE0 + 616423C8A1B7928B3F756D5E32816C22 + 7E13B0AF3A796DA7624F0D88EA1A28FE + 2B974AF0F9630827F8EA0361A9095555 + F90166532545159FC1603C1B990400F2 + 79C1BB13E001FBB74CCF52A526C9A64B + A359AF394711D2015EEC292006B7C612 + AB726B24F0CA0813AE27338C1F2A4923 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + A692BE7D4927D633187CC89D4E2447EB + + fileRef + B6856014DD16E68DE40CC944E13C7181 + isa + PBXBuildFile + + A6C60F5B4987A3FF1F9B0C5CFDE81230 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+StartEnd.swift + path + Sources/SwiftDate/DateInRegion+StartEnd.swift + sourceTree + <group> + + A70E357263499193F10AA1BA96BCEA5B + + baseConfigurationReference + E4FD8E95F1D23F3E7B4B9230F2D5D2C0 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SCLAlertView/SCLAlertView-prefix.pch + INFOPLIST_FILE + Target Support Files/SCLAlertView/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SCLAlertView/SCLAlertView.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + SCLAlertView + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + A71FF6ED3BA37FCEF019D1C5B75BFCFD + + baseConfigurationReference + 05377D88E97E09C79D6EFCAFE8387625 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Onboard/Onboard-prefix.pch + INFOPLIST_FILE + Target Support Files/Onboard/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Onboard/Onboard.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + Onboard + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + A7291604CA37481061C281665235591E + + fileRef + AF4033B9C64C6678DD874D1A9E2D80E0 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + A72B8F29B1F07A6FF8E5C5C436B948E5 + + children + + AACF259C714F9C058B028955BD99FB4A + 0C4008FA844C454405F88B19FA003A37 + + isa + PBXGroup + name + Circular + sourceTree + <group> + + A7557F78CD9E3C2F56F5AA0DF9E74099 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Crashlytics.h + path + iOS/Crashlytics.framework/Headers/Crashlytics.h + sourceTree + <group> + + A7DCEC21E1C32D8A2710782521B34164 + + fileRef + 099960FDE2B19E5384DA12CDE04B0CCE + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + A7E674E0456B599207C34EEB5C948725 + + buildActionMask + 2147483647 + files + + DDB28233EABD5BF71A9C3E33C4BEA870 + 149C1027FDDFEBE424BD4B407A167906 + 5CA7B37693BF3D25B1B90C385F6936EB + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + A84AC492E6E2A5F62E304FD91673DF66 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallClipRotate.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift + sourceTree + <group> + + A85E7C45C2C5560F5C30392EB2DF31D1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + NVActivityIndicatorView.xcconfig + sourceTree + <group> + + A865C7B25B7EE71F171DDE120AE9829A + + isa + PBXTargetDependency + name + AsyncSwift + target + D1DC35DB2C695031A72543555FB23729 + targetProxy + E464785D955FA1637C87E5F0D1DF5800 + + A8E09F672239DC6BB1DAE7CACBE17584 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + A8F50206CD66357B3514F8F057DE87B4 + + fileRef + E44A7805D7A64F340CA3841266E38DEB + isa + PBXBuildFile + + A93B6A2AF2DBFD2AB32170E213BE0FEA + + fileRef + C067C53445604DB178D82E59F7265F6C + isa + PBXBuildFile + + A96072880D4D9BB62A9A48830FF2B51A + + fileRef + 5F36D808819E718A54D920E57DD99355 + isa + PBXBuildFile + + AACDDE362FCFED7F106AF2BDA5C66B57 + + fileRef + 0637AFA0A1167808DA6FC820ACA891D6 + isa + PBXBuildFile + + AACF259C714F9C058B028955BD99FB4A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRCircularProgressView.h + path + src/Components/MRCircularProgressView.h + sourceTree + <group> + + AAF90F76A6C0D5BA935007ECFCD10B9A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + AB15DA90B2A574DB30894F8E209C32B9 + + fileRef + 82AB329159B7387DA01087F7E540C407 + isa + PBXBuildFile + + AB1F15592589F1C6C60318C7685FC08D + + children + + E8D3797D9C2FE3C3F92E241D070E854D + A4AC0A23843A24F403875E424743A153 + 5364B913036733DAF27822A4A4BDDB1D + BDBDEFCE625D18D0F6D6AF0801C240F4 + F6A327884DEF67AF7E3E5A685411561B + 2A7C32FB0C781CBA3F67AAC8614360FC + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/SwiftyBeaver + sourceTree + <group> + + AB2F6C609D7910C7FC5C0EDB62828778 + + children + + 0E7A29C04D4BBCC7DBB4A76569AEDE60 + + isa + PBXGroup + name + Fabric + path + Fabric + sourceTree + <group> + + AB58155B291E7FAE9A59721E1D4FC233 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + AB726B24F0CA0813AE27338C1F2A4923 + + fileRef + 1E5C45E9FDB5225C963EFD90509E3BD4 + isa + PBXBuildFile + + AB95512F3C299EEC15B2A0067AE63AED + + buildActionMask + 2147483647 + files + + 743D63D3EF95A875E73D332BC60C60BE + EE07C99FAD103050F7920FECE45C07D2 + 7F3A0CA4D0F80DC61F79C17B9A13B09D + 4B799D845B4D8A77F7BBE9639B18FC4F + AEA72DCE63F6B01478EF51120E64A734 + 0FBD5E2C6A03099EC2D8BC9F1FCCE00C + 9E691E14C1B77ED5D56D132384AE4E8D + 8D93F27DE77DEE3CDF1306A5B38A037C + 63FC2F696C591B06128339C15CBF70D9 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + ABE824437D95E0EC2293A1D4BA256A84 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationAudioEqualizer.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift + sourceTree + <group> + + AC0003CCE57676C620E79BD86A47543E + + children + + 7924757FDF730E1CA7EC6EC5B87560D7 + 5C68E7D5CAB6FA6E8D87DF770955B113 + C2EFE87D2FF634DB74387473716DCBAB + BC5E92ABFC3B5DFB45E5D0E854084867 + 0D4ADB973434EF4655727AB5DBEDC467 + B0DE299D26D1CDA907219908AB162529 + 12525765AC9F70C6CA0D2DCF8513E51B + AB1F15592589F1C6C60318C7685FC08D + + isa + PBXGroup + name + SwiftyBeaver + path + SwiftyBeaver + sourceTree + <group> + + AC09AA278A433796BC1633E8E9BAAF27 + + buildConfigurationList + AEE85DF0E68F32A3DAEA1346FF7C0D00 + buildPhases + + BA7D25D5FA55EF2EA6AE61DFB2CD8752 + E6EB56552C37C8681268A53742929B48 + E1C792C953CA2DBCE8614ABF2A66A8E0 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + SwiftyJSON-watchOS + productName + SwiftyJSON-watchOS + productReference + C3225E55CBB2C656E9FC052E5125798D + productType + com.apple.product-type.framework + + AC0F797C6CFD6A2EE34C448622133782 + + baseConfigurationReference + 9977A3C354D0666A654881E57BD22DFE + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/ChameleonFramework/ChameleonFramework-prefix.pch + INFOPLIST_FILE + Target Support Files/ChameleonFramework/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/ChameleonFramework/ChameleonFramework.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + ChameleonFramework + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + AC2A3E4BD0206BBAD26BB44A10B910DE + + fileRef + 9250D26BC513D25521A34970DBD95DB5 + isa + PBXBuildFile + + AC5B3840989E51908F23437283C812D8 + + fileRef + A84AC492E6E2A5F62E304FD91673DF66 + isa + PBXBuildFile + + AC6033FF7AA53434E139B5D29D94D938 + + fileRef + D6C836EBDA3F79FDE3CE26BDF284B38D + isa + PBXBuildFile + + ACE86AFFAB489BE1565B469221BEA3B3 + + baseConfigurationReference + 49FE048BC2C12D86608FA6F7EE9D2CDE + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/AsyncSwift/AsyncSwift-prefix.pch + INFOPLIST_FILE + Target Support Files/AsyncSwift/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/AsyncSwift/AsyncSwift.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + Async + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + ACF7C3C74DE8C78434656A73C2CE8CCA + + fileRef + 320A7A5F533740C94935BEAD9458E091 + isa + PBXBuildFile + + AD0FA6D7EF237874D0AF4066DF80A2A1 + + fileRef + C3254BF8147D7C68AD264C27D06D09BF + isa + PBXBuildFile + + AD1B92F91B30BD9E8899FEABDAD660CF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + NSArray+Chameleon.h + path + Pod/Classes/Objective-C/NSArray+Chameleon.h + sourceTree + <group> + + AD71DB465920894EA257DCF900C4CD69 + + buildActionMask + 2147483647 + files + + AB58155B291E7FAE9A59721E1D4FC233 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + AD993760FFB9260D5E6EC387C7C39A68 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKZocial.h + path + FontAwesomeKit/FAKZocial.h + sourceTree + <group> + + ADA631546BC13103C3496B47905217CB + + fileRef + 7AFDB6CA058C82D78D7EB14382C499B7 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + ADCE271C675326385ADFD7714A7BB8B8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarConstance.h + path + FSCalendar/FSCalendarConstance.h + sourceTree + <group> + + ADF234B401A04718C4AC446CDF33B401 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + SCLAlertView.swift + path + SCLAlertView/SCLAlertView.swift + sourceTree + <group> + + AE03B0A9C32384E6AFA1D1F6FDB4F627 + + children + + 727DE96D6CD78FF88F5E2B157BC84358 + 779F6053FDD5398431697087368B54A1 + + isa + PBXGroup + name + ActivityIndicator + sourceTree + <group> + + AE8AE78446997A62D5312585254CE95F + + buildConfigurationList + 68F44F9727851A9632ED1B1065F7205D + buildPhases + + 235951EC3801118BDA44E055541701D4 + 0C36D453A1A872D16378CBD69630AFFC + 08EEEE46A4AC8AC54F4EF77436245BED + + buildRules + + dependencies + + isa + PBXNativeTarget + name + SCLAlertView + productName + SCLAlertView + productReference + 14483911561319B902746FD3F21840B0 + productType + com.apple.product-type.framework + + AEA72DCE63F6B01478EF51120E64A734 + + fileRef + FF789217D639D9B251810729B161BC12 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + AEC65AA7DED93A21068C32F0BABCD88C + + fileRef + 8802D07C334E3D3A8779C6259A556298 + isa + PBXBuildFile + + AEE85DF0E68F32A3DAEA1346FF7C0D00 + + buildConfigurations + + EAC38992B2D12AEF8F6DC6C9AF020F39 + 3E3E32093BDCCDA1ACEEA9DEC3B5CC7E + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + AEF4A6BDD059F807A283AFF9317F509D + + baseConfigurationReference + 956B6A89964FF20F9A628AC3803DD819 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Localize-Swift/Localize-Swift-prefix.pch + INFOPLIST_FILE + Target Support Files/Localize-Swift/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Localize-Swift/Localize-Swift.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + Localize_Swift + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + AF4033B9C64C6678DD874D1A9E2D80E0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarScopeHandle.h + path + FSCalendar/FSCalendarScopeHandle.h + sourceTree + <group> + + AF59AD6324ECDD2FA48E698221C5DF5E + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Async.framework + path + AsyncSwift.framework + sourceTree + BUILT_PRODUCTS_DIR + + AF9FDFE994A206795619E469B68C614E + + fileRef + 3427E73FB6D383599E51382410A83DEA + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + AFA241097F41277C20FC9CCDC88A1D0B + + fileRef + 5844858DC011F247CC5F81F7C48BB621 + isa + PBXBuildFile + + AFF4D5D6CB01CE1F29688B652761D901 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + INTURequestIDGenerator.m + path + LocationManager/INTULocationManager/INTURequestIDGenerator.m + sourceTree + <group> + + B0BC8CC17F351FEE18EE4B23A6F13E84 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UINavigationController+Chameleon.m + path + Pod/Classes/Objective-C/UINavigationController+Chameleon.m + sourceTree + <group> + + B0C7ACFBEBFFB69B97AB113D78D4CAAE + + fileRef + BF96FD953B23FB892831FECBA3A94A68 + isa + PBXBuildFile + + B0D970ABB08A836E47A4026FB72A11B9 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 89C69EB624EC8137588D9568F2E11964 + remoteInfo + Alamofire-iOS + + B0DE299D26D1CDA907219908AB162529 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + SBPlatformDestination.swift + path + sources/SBPlatformDestination.swift + sourceTree + <group> + + B144462CABC8C185E77D5F62F8261825 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallScaleMultiple.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift + sourceTree + <group> + + B179499D1CEB179823BD3A900DF64DE6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKIonIcons.h + path + FontAwesomeKit/FAKIonIcons.h + sourceTree + <group> + + B19E94B10D550DC02B1D33FCAD52BA8B + + buildActionMask + 2147483647 + files + + CEDB724342476CBE063FFB437D7EE973 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + B1CFEE9FF3EB53A1C0009F6EFD1A9043 + + fileRef + 310CBB705E31A9305C10AABF2D3A2E69 + isa + PBXBuildFile + + B210FBB81D0AA735B795EBD274A0741B + + fileRef + 84916F7565212118FF5B37CFDD348802 + isa + PBXBuildFile + + B21621B06A5D8F576CBA5CEF09BC2461 + + fileRef + 0567C8D1682E16F651C8905C2A7508B9 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + B29D30E5EA5505B7A6CFEEA46C2ED2DC + + children + + FB9AABF3EBD81467B4B2C463EA146459 + 4761A882DE50CA81E8A2926730C1BABD + 46DF44B9ABFDD85AFE3A6EACF2A43511 + 42B544CBFA0141FC299230738308C889 + A5A0EE43C9FD7834B17D804EDE2C39E5 + 2B70D4347E6040771FD30904C77339D5 + 31A8A7AD1B934A995B4E000E415A78F6 + 0567C8D1682E16F651C8905C2A7508B9 + C5A18F53285E156BFF47A77330B6B38E + 09A32B41C7F51B14395B0AFDE1537523 + + isa + PBXGroup + name + Pods-tpg offline + path + Target Support Files/Pods-tpg offline + sourceTree + <group> + + B2F9711D635766F4754D415B41FFC818 + + fileRef + 30911B6DEA2551B3A7C3F3880EC2AD2C + isa + PBXBuildFile + + B33760236C3F3C4A2B0E081E4B1A9202 + + children + + 18290E31DE0A5E6026079E8A6EDA6ECA + + isa + PBXGroup + name + Resources + sourceTree + <group> + + B3C737674ADDEC4AD28C4DF1794120D4 + + fileRef + CE9D26EA4ECEC7DA3264366129935643 + isa + PBXBuildFile + + B3D0F7D545EC32BFBE276DBA4B760AB8 + + fileRef + 081BC0EB022066A8AA0B18F8DD1CF28F + isa + PBXBuildFile + + B3E855DC27E787D79472053C4DBA94B6 + + fileRef + 15E7F834642D60217656716CD6CEB4EF + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + B3F414258834249101A45944BD50C221 + + fileRef + 47C3A728AF23BC4D137B5C12720C1FED + isa + PBXBuildFile + + B4002705B407CE9B3BEE98B1D294A065 + + fileRef + F972C61D9A226BFB3404624CAFC50164 + isa + PBXBuildFile + + B626991E354736135B6D82B42FA9F8F1 + + buildConfigurationList + A579DC91DD49DA57F1781C6C887A4E44 + buildPhases + + 03A152E421788D7A175859F9A2FDA5FD + 28DA32D9549F3CA3519BD9BD67C3F077 + 479B795C9BB95917A708AC4AC91C3110 + + buildRules + + dependencies + + 7E812E4BD0214E629E8E43EDCCA4FB6A + 17C95E94C2651A1FDA2A933D73A1326C + + isa + PBXNativeTarget + name + Pods-tpg offline Watch Extension + productName + Pods-tpg offline Watch Extension + productReference + B9A641EBD699E9BFDB6FC1F70425E3D6 + productType + com.apple.product-type.framework + + B6856014DD16E68DE40CC944E13C7181 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallGridPulse.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift + sourceTree + <group> + + B69A9AF957DDA1C5FB012C6091F8456F + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + B6E7F2809FD185D297FFEC7E9E3D5169 + + buildConfigurations + + E9A5D3193E6A02E021C42CE6C3D0BC08 + DF5B9CB98A6BD1A8FAB72B5BEDD52F2A + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + B6F083938BF7FFDF8A0272C0B82C0DC2 + + isa + PBXTargetDependency + name + ChameleonFramework + target + 5172ACAB7FEA22813859DC97CA0AA16F + targetProxy + 8D43279E02746C3E916A66752B7BC94F + + B71968ADC80D9CA74C57959B609E46F6 + + fileRef + 6FB9BDB6E6C57E867D09845E12D225B0 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + B76322B76C1085EA2EF80DF7A7A92417 + + fileRef + 5409E3E86E05B187D9E6AAE533B32967 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + B792D76D6E95A8B4546DED08585638AF + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Foundation.framework + path + Platforms/WatchOS.platform/Developer/SDKs/WatchOS2.2.sdk/System/Library/Frameworks/Foundation.framework + sourceTree + DEVELOPER_DIR + + B850341D6210AC5C41F042CB552895DD + + fileRef + 93CCBF9CE5CD966617D3AE333FD6F62D + isa + PBXBuildFile + + B8606F16F012F24334B0DA93873C2B60 + + includeInIndex + 1 + isa + PBXFileReference + path + DGElasticPullToRefresh.modulemap + sourceTree + <group> + + B935D7425AD07F00E3FB6EB6D4B8D464 + + children + + C0AC999EFB8D893867B3DC2C84362326 + C29FB34B3D3CC709C8343F343071F6F5 + 526A3672738BF00D4CF896C2FC4550B6 + 772F23910EE903F51919A7BC788CD77C + DA2749A83D5B36911D4E7199EE397597 + 363F873F524DBDAF9EE7F3D79E884D1C + 13D361D6666C123D3355F6E3BDDD8033 + 3AD522B47E3BD8B349790BAB3DD2E5D9 + 5EAB5FF71F7BE46A5FED451B3C55987B + AFF4D5D6CB01CE1F29688B652761D901 + 30116F387DC5D761B2F728A51619DAF7 + + isa + PBXGroup + name + INTULocationManager + path + INTULocationManager + sourceTree + <group> + + B9432285FD94D011EB06F2C95A412B81 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + ChameleonEnums.h + path + Pod/Classes/Objective-C/ChameleonEnums.h + sourceTree + <group> + + B9501FC5980E7547D3448A24C9CFD66B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIView+ChameleonPrivate.h + path + Pod/Classes/Objective-C/UIView+ChameleonPrivate.h + sourceTree + <group> + + B962ED1B0D4466FE5AFD475EE58D4058 + + fileRef + 044E029F9285F67624E340B9F1043C6B + isa + PBXBuildFile + + B99ED447787D858E61E396C89EDEC563 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + FontAwesomeKit-umbrella.h + sourceTree + <group> + + B9A641EBD699E9BFDB6FC1F70425E3D6 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Pods_tpg_offline_Watch_Extension.framework + path + Pods-tpg offline Watch Extension.framework + sourceTree + BUILT_PRODUCTS_DIR + + B9A9AAEB10D58452A852D44FEA61499A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallZigZag.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift + sourceTree + <group> + + B9D340B116ADD45A91EB90F09DA98945 + + children + + F80A38740B0FC521430391E85908F05E + + isa + PBXGroup + name + Helper + sourceTree + <group> + + BA5076D65D23424DF737BDE3B859DA1A + + fileRef + CE9D26EA4ECEC7DA3264366129935643 + isa + PBXBuildFile + + BA6EF82474E186A9985DEC37E0DCF30D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+Comparisons.swift + path + Sources/SwiftDate/DateInRegion+Comparisons.swift + sourceTree + <group> + + BA7D25D5FA55EF2EA6AE61DFB2CD8752 + + buildActionMask + 2147483647 + files + + 774157004CC04955C71B546D440B5083 + A2DD571FFC37AC112093AEB0FCA09B92 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + BAAD97D5A4D227A0C032EB453C5053CE + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + BACD85AB02C48126DD258084A589351C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIViewController+Chameleon.m + path + Pod/Classes/Objective-C/UIViewController+Chameleon.m + sourceTree + <group> + + BB6C29A723635DB6B216FF05A302F432 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Chameleon_.h + path + Pod/Classes/Objective-C/Chameleon_.h + sourceTree + <group> + + BBEBF2291A0DDF65857B21A75BAAE5D7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + AKPickerView-Swift-prefix.pch + sourceTree + <group> + + BBFC6013BD1C3CCC528886453C70B655 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + EFCircularTrig.h + path + EFCircularSlider/EFCircularTrig.h + sourceTree + <group> + + BC0D59CC0982804DC83F07651CF83440 + + children + + 001D4CD94390AB3017E15CD2F583019E + 0405F41AA2F6BCBFCCC47C4A96245B39 + 9610EF1CC8189E1794A31790D5C18ABB + EBEA2C2D7F05DAA5680CC4E423E485B8 + 78D3F23B6CFD885502979878BFC67723 + 6AFEBE0A1BD23E93DD6419908ADCA10D + 515AEA7BBBD2BC5CF574227EC0508E91 + 1101628B16CB1BC1D3465E66872B95D0 + 4949B695B162A5AAA8D7B2F21C4D5C50 + 8C94FFBD5D5C9370281983F784ABF5A7 + 31B630D7E924123238DE209604CD7F7D + 28BC11DB5236A06FE7899FE3D8C12BC8 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/SwiftyJSON-iOS + sourceTree + <group> + + BC5E92ABFC3B5DFB45E5D0E854084867 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + FileDestination.swift + path + sources/FileDestination.swift + sourceTree + <group> + + BC73388CB913F7F28A16BAC639E913E0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + AsyncSwift-dummy.m + sourceTree + <group> + + BCCBE3BC84A4D62D9241F573F7A24BB8 + + fileRef + D66B51AF38160D1F6E6FA8DC38481A87 + isa + PBXBuildFile + + BD54DEF9E1421221348FD92E656E1DE2 + + fileRef + 8E61C2D23625C11C6F5BFE91C80DEF1D + isa + PBXBuildFile + + BD627222A931F86B626CFF892E7E4AEF + + fileRef + A61CF9FA7CE0C441B4335C401EB17E46 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + BD9F0543F7B4F444CA4A0948C0F03070 + + fileRef + 1AEBBDE75E9B16E92552D3AA3BB51A49 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + BDBDEFCE625D18D0F6D6AF0801C240F4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + SwiftyBeaver-dummy.m + sourceTree + <group> + + BDBFC32C86D0C5D4E37BE68D01397713 + + children + + 129F563826E5E9A812D60D486DBDF6A1 + + isa + PBXGroup + name + Resources + sourceTree + <group> + + BDC0281540324E5A27D70A10BD529254 + + fileRef + 309E84BF0A4033830F96F178DE549E32 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + BDE29EDCF3E5B5354727B3D733E56040 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSDate+SwiftDate.swift + path + Sources/SwiftDate/NSDate+SwiftDate.swift + sourceTree + <group> + + BE2009368FD51AF025C1B4945165F5D3 + + fileRef + 3C68703C7B1BDFD88E2F5A7F5E97D70A + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + BE325A5869FCE249947C11DED959C6A0 + + fileRef + 94288D98DDB588CCABEB079FA1ED081E + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + BE49B94D134B7F887D4C7D16EFFB79A2 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text + path + Pods-tpg offline Watch Extension-acknowledgements.markdown + sourceTree + <group> + + BECB33530B472227C99ED31AAF4109B1 + + fileRef + 02D5AFAD05FB846F86EBD9AC444DD984 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + BF96FD953B23FB892831FECBA3A94A68 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + ServerTrustPolicy.swift + path + Source/ServerTrustPolicy.swift + sourceTree + <group> + + BFBC61C63FA0C34553782367A3A88BC9 + + fileRef + 319C5055D1DF6A441227E4F09D67EA0D + isa + PBXBuildFile + + BFBD95493AE0698E03E3DECE68E2898B + + baseConfigurationReference + 8002BC0727E9A55C77975047D7F4513D + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/EFCircularSlider/EFCircularSlider-prefix.pch + INFOPLIST_FILE + Target Support Files/EFCircularSlider/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/EFCircularSlider/EFCircularSlider.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + EFCircularSlider + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + C067C53445604DB178D82E59F7265F6C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Localize-Swift-dummy.m + sourceTree + <group> + + C08DCA5180F1A15542694844C66B0EFB + + fileRef + E5A8052B5A4C8674C786A34E22C83D14 + isa + PBXBuildFile + + C0AC999EFB8D893867B3DC2C84362326 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + INTUHeadingRequest.h + path + LocationManager/INTULocationManager/INTUHeadingRequest.h + sourceTree + <group> + + C0ECC2428A599038E31B613A8E89C69B + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + C165D3D25B8808DF251152BC0AF2CB49 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Fabric.framework + path + iOS/Fabric.framework + sourceTree + <group> + + C16DFC1F69B5D2454F9642D4EE6189D7 + + fileRef + B792D76D6E95A8B4546DED08585638AF + isa + PBXBuildFile + + C1F305CB2F53579B41DEAE4A78F7303D + + fileRef + 7FF5C5B3FEE76ACA587E91307332BECD + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + C2493BFC5237B0B88FB213B66068D79A + + baseConfigurationReference + 4F44C512643471960C624277440B0AD7 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/MRProgress/MRProgress-prefix.pch + INFOPLIST_FILE + Target Support Files/MRProgress/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/MRProgress/MRProgress.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + MRProgress + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + C29FB34B3D3CC709C8343F343071F6F5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + INTUHeadingRequest.m + path + LocationManager/INTULocationManager/INTUHeadingRequest.m + sourceTree + <group> + + C2B33B7C772BD3B3BBCAA7F6E28B6295 + + fileRef + 7F74F6750DCA2C74CBE4D503E961B4C6 + isa + PBXBuildFile + + C2EFE87D2FF634DB74387473716DCBAB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + ConsoleDestination.swift + path + sources/ConsoleDestination.swift + sourceTree + <group> + + C2FB15FB93D6C16AE1BCD2388043E0D5 + + fileRef + C8530267F32F9C5D6DB04350092151C6 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + C3225E55CBB2C656E9FC052E5125798D + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + SwiftyJSON.framework + path + SwiftyJSON-watchOS.framework + sourceTree + BUILT_PRODUCTS_DIR + + C3254BF8147D7C68AD264C27D06D09BF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorViewable.swift + path + NVActivityIndicatorView/NVActivityIndicatorViewable.swift + sourceTree + <group> + + C3B2E1D68BC5256373D7257D0FED94D0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+NSDatePort.swift + path + Sources/SwiftDate/DateInRegion+NSDatePort.swift + sourceTree + <group> + + C3BD790AA6D38E6A67FB17B7C3EA5DC1 + + fileRef + 4C91E718D38E49875B9E4BC0880D2C33 + isa + PBXBuildFile + + C44B08B125A7FC4665D910B5092DD01D + + baseConfigurationReference + 8002BC0727E9A55C77975047D7F4513D + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/EFCircularSlider/EFCircularSlider-prefix.pch + INFOPLIST_FILE + Target Support Files/EFCircularSlider/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/EFCircularSlider/EFCircularSlider.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + EFCircularSlider + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + C49580AC5A1D4CC6626BBA9D093EE67D + + children + + 09C24C92F77C7C8956372718BAA36E05 + 8D9057263D516B050B625B71636D8E6C + 8B75BEDAB1DA3D563FE5EC4B2FB1DB20 + 1E5C45E9FDB5225C963EFD90509E3BD4 + 654CA45CBC88F1E1E781FC647E0D2EC5 + 7AFDB6CA058C82D78D7EB14382C499B7 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/SwiftDate + sourceTree + <group> + + C4D390002580AC1F469A1999C83FFDF8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UINavigationController+Chameleon.h + path + Pod/Classes/Objective-C/UINavigationController+Chameleon.h + sourceTree + <group> + + C55E46AC6A1E70A6AA25E306AE545375 + + buildConfigurationList + 1E11764067A3FE3683F412DF7BCE2D79 + buildPhases + + 756248B291D366F8B29EA3A7AE47C79A + 1FDF39FC9AC8BB97395383590A295D72 + 8FCCED683C001C0785AD28BD3880FA84 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + PermissionScope + productName + PermissionScope + productReference + D360DE7B0129863BADC6A5763FC638A5 + productType + com.apple.product-type.framework + + C5A18F53285E156BFF47A77330B6B38E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-tpg offline.debug.xcconfig + sourceTree + <group> + + C5FE88605B8796B643ABD6FE18770299 + + buildConfigurations + + 800EC413EDAEF9D166DE33535CFD20DA + 79F0AF923EA8BE9F7151F9B346CC1758 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + C6ABE07B09DBF0F7BABD30BBDD08ACA0 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + SwiftyBeaver.framework + path + SwiftyBeaver.framework + sourceTree + BUILT_PRODUCTS_DIR + + C6E011EAC995523734C90C4B3362D037 + + fileRef + 638D7FE118E7D93B77F675F381A463A4 + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -DOS_OBJECT_USE_OBJC=0 + + + C79DD6403B4134BF583372B42A62F5A3 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + FontAwesomeKit.framework + path + FontAwesomeKit.framework + sourceTree + BUILT_PRODUCTS_DIR + + C8530267F32F9C5D6DB04350092151C6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Alamofire-watchOS-umbrella.h + path + ../Alamofire-watchOS/Alamofire-watchOS-umbrella.h + sourceTree + <group> + + C85C9D5D7824562FB9A4B8A701FC63C1 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + AE8AE78446997A62D5312585254CE95F + remoteInfo + SCLAlertView + + C886326AB33644D5D15305F839A3A46A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + C8C2E9B5BDE46B636B681309AA4B43BF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + OnboardingViewController.m + path + Source/OnboardingViewController.m + sourceTree + <group> + + C8F191C4FA3530AAEBAD2DDE2604DCF2 + + fileRef + 9C4552FCDCC4876DE150A08BAE234484 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + C8FC7342A57CF84FC01D29A133B9A8B0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKFoundationIcons.m + path + FontAwesomeKit/FAKFoundationIcons.m + sourceTree + <group> + + C95AF396459EB28F90D29CED9A0B0E94 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorShape.swift + path + NVActivityIndicatorView/NVActivityIndicatorShape.swift + sourceTree + <group> + + CA3D60F1B493300D133D8DF6D2BC6BB9 + + buildActionMask + 2147483647 + files + + B21621B06A5D8F576CBA5CEF09BC2461 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + CA4CCD706EC7E8169DCCA8D9AFEDB127 + + buildConfigurations + + 6A6241399A74E4ADFA65F869A457289F + 08E47ED3FA5E0AEA61435C587DDCA347 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + CA9986DC70DB1904D00045789FDF47FB + + fileRef + 327C554036E2C9BBF90D19DE628F7FAB + isa + PBXBuildFile + + CABEB716184568B006F7754269DF3CDA + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + DGElasticPullToRefresh-umbrella.h + sourceTree + <group> + + CB10BA9046088B3B243728D68EC78C2E + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + CB1F38FB42E62C6CF5A2EA373D0644AC + + baseConfigurationReference + 0928BA1430F3548012E2C104B1F47154 + buildSettings + + APPLICATION_EXTENSION_API_ONLY + YES + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Alamofire-watchOS/Alamofire-watchOS-prefix.pch + INFOPLIST_FILE + Target Support Files/Alamofire-watchOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Alamofire-watchOS/Alamofire-watchOS.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + Alamofire + SDKROOT + watchos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 4 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Debug + + CB63EA71F76CF030DDDD92C2BA4420FB + + buildConfigurationList + E6A0D979FD3EB8F7F7DB7DE7534D6754 + buildPhases + + A6558757AD02BC73EB6C99946937DC9C + A18DDE132BF0B3FF6F33604B5CEB4D01 + 3472BFEF8691C0661B2FFDC01F956F71 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + SwiftDate + productName + SwiftDate + productReference + EE363F2391D07479199DF23D3E965F29 + productType + com.apple.product-type.framework + + CC109B752CAC2344FC05D525CB4B018A + + baseConfigurationReference + D747AEC672D1277C864E5C47A6B7471A + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/FSCalendar/FSCalendar-prefix.pch + INFOPLIST_FILE + Target Support Files/FSCalendar/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/FSCalendar/FSCalendar.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + FSCalendar + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + CCAB0340EB3B251B03E7F23293E0A4EB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationLineScalePulseOut.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift + sourceTree + <group> + + CCD875C439DD904B030CBFDB79D7778B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationPacman.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift + sourceTree + <group> + + CD3C1E8D1BAFF179B13FDDDD6118D146 + + fileRef + 8E9CBF31269638BD542697FB41DB1A3B + isa + PBXBuildFile + + CD8A3BE4AE2CEF50203E4F7910B3CC2F + + baseConfigurationReference + 93E41296CB3C32082686A447600CE334 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch-prefix.pch + INFOPLIST_FILE + Target Support Files/DGRunkeeperSwitch/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/DGRunkeeperSwitch/DGRunkeeperSwitch.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + DGRunkeeperSwitch + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + CD945D2700569C9B879F04384D634D8A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarStickyHeader.h + path + FSCalendar/FSCalendarStickyHeader.h + sourceTree + <group> + + CDE2047A5CCA51948AAFBD04D0E39459 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.script.sh + path + Pods-tpg offline Watch Extension-frameworks.sh + sourceTree + <group> + + CE12C9062588C667CD17D9B3831971B0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + Alamofire-watchOS-dummy.m + path + ../Alamofire-watchOS/Alamofire-watchOS-dummy.m + sourceTree + <group> + + CE9D26EA4ECEC7DA3264366129935643 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Error.swift + path + Source/Error.swift + sourceTree + <group> + + CEDB724342476CBE063FFB437D7EE973 + + fileRef + 16103CEC0262AD29E42A43B9CCF4AE08 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + CEF67511FD6E8DB3A42A3AA8B9C31D7E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIButton+Chameleon.m + path + Pod/Classes/Objective-C/UIButton+Chameleon.m + sourceTree + <group> + + CF58BB41F927A98D573196D5507F704F + + fileRef + A5C78F0806A05F568B06C6500F030554 + isa + PBXBuildFile + + CFB8C96C7D3F7331E409D296466B923A + + fileRef + 0479A980286966C2AB6B46EE876D7C4D + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + CFD8950662ACB73F634308436FB2D662 + + children + + 08D62DA1B69C6B1C99BF9B3B8CA1A9F4 + 2E7EFA9AF429A52352DCAE9DB454FDB5 + + isa + PBXGroup + name + AsyncSwift + path + AsyncSwift + sourceTree + <group> + + D00497D84C8DC9960CE80C61D2FBCDA8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendar.h + path + FSCalendar/FSCalendar.h + sourceTree + <group> + + D034D2F31D04CA39382E58D5A48E24AA + + fileRef + 9D145DE96935A47F052FE587D91E9A12 + isa + PBXBuildFile + + D03A993FA74994BFFCF104375E243CD3 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 9CAAB2A1855182D992E2945796B03B4D + remoteInfo + MRProgress + + D08CF2F59DED6848F1AB6501A2C8586D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Answers.h + path + iOS/Crashlytics.framework/Headers/Answers.h + sourceTree + <group> + + D08E3402855AB2CA47EE2A92E2859187 + + fileRef + 3C82F6B410DDFEB5D929CC079AA79955 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + D0FDBDE18D6FAABAEABA137E6A6B2B9A + + fileRef + 18290E31DE0A5E6026079E8A6EDA6ECA + isa + PBXBuildFile + + D10D84612A8837FC49554FCD6CE7725E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + NSArray+Chameleon.m + path + Pod/Classes/Objective-C/NSArray+Chameleon.m + sourceTree + <group> + + D1DC35DB2C695031A72543555FB23729 + + buildConfigurationList + 2C22D6720637A1B2B2F95C2B902C0C7D + buildPhases + + 8A50EC43E2E52EC3C02907FFC4A43D50 + EC45B49DAE58A4E80A54C3888DA457F3 + 3A91A1781435D2F6E292FCCF5F5356C1 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + AsyncSwift + productName + AsyncSwift + productReference + AF59AD6324ECDD2FA48E698221C5DF5E + productType + com.apple.product-type.framework + + D29EB9254067EF35A19024E05830CDD0 + + fileRef + 23791BB07AB12A358882FAD5F7810150 + isa + PBXBuildFile + + D2B61A78124FCB785E11A98BDD0471BC + + fileRef + 29D2BA66BDBF8D983D526899F7F324A8 + isa + PBXBuildFile + + D2FE5DF7E0F749F8A25CB2381ABE4C0D + + includeInIndex + 1 + isa + PBXFileReference + path + AKPickerView-Swift.modulemap + sourceTree + <group> + + D360DE7B0129863BADC6A5763FC638A5 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + PermissionScope.framework + path + PermissionScope.framework + sourceTree + BUILT_PRODUCTS_DIR + + D36BC9B0C925A5244E16EE70E4809EE6 + + fileRef + B9501FC5980E7547D3448A24C9CFD66B + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + D41D8CD98F00B204E9800998ECF8427E + + attributes + + LastSwiftUpdateCheck + 0730 + LastUpgradeCheck + 0700 + + buildConfigurationList + 2D8E8EC45A3A1A1D94AE762CB5028504 + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 + isa + PBXProject + knownRegions + + en + + mainGroup + 7DB346D0F39D3F0E887471402A8071AB + productRefGroup + 19C95D49F9D91535EDF35047A6AE5277 + projectDirPath + + projectReferences + + projectRoot + + targets + + 7EC1417298041145E9B1A4C7B395C179 + 89C69EB624EC8137588D9568F2E11964 + 063E3C59C1B7382B70A98D5EF8052B8D + D1DC35DB2C695031A72543555FB23729 + 5172ACAB7FEA22813859DC97CA0AA16F + 115824B7CB2E76E5ACB836A251E79404 + EF89A4DA92CC0D0F76CF983AB2A6F4F1 + 8F17DD5BDDF65F3AB77F350BE14632BE + 99467F259B31FBA8DDB95086022B4977 + 868010619D7E6CBA5C6E6E2874668C85 + 5AF1C612F4CDA296FC4C82D9BD0BD25D + 4E3BBCA6078A6AAAD053C911572F0B0C + 9CAAB2A1855182D992E2945796B03B4D + 8698C4558AE758AD92477EC134E714F7 + D7FF48F3092783E4E42B336F0DEF2D1A + C55E46AC6A1E70A6AA25E306AE545375 + FDCC5252155A69655285D62D2A183655 + B626991E354736135B6D82B42FA9F8F1 + AE8AE78446997A62D5312585254CE95F + CB63EA71F76CF030DDDD92C2BA4420FB + DD5C1620C8612B5D6689899A770B8CFD + 14D30697C5204FE013909BA0F029F93D + AC09AA278A433796BC1633E8E9BAAF27 + + + D47BBB0668B35535BCE0F3B009DC0875 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Localize.swift + path + Sources/Localize.swift + sourceTree + <group> + + D49074D67E1BE18C9962C2F58B1DB947 + + fileRef + 795D4787D2EB6E730000229B9CED1D2B + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + D4FA086F7408BEA45C613FBB3EDA3992 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NSTimeInterval+SwiftDate.swift + path + Sources/SwiftDate/NSTimeInterval+SwiftDate.swift + sourceTree + <group> + + D50109CEBE558FBD6363CF8BA4102B77 + + includeInIndex + 1 + isa + PBXFileReference + name + FontAwesome.otf + path + FontAwesomeKit/FontAwesome.otf + sourceTree + <group> + + D5162775B263A06E4540764E62008E2B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRProgress.h + path + src/MRProgress.h + sourceTree + <group> + + D5CFC932A9E3754B38564395F5A36859 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Chameleon.h + path + Pod/Classes/Objective-C/Chameleon.h + sourceTree + <group> + + D5D89DD1F13627BCBEBCFA37F9439883 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Alamofire.framework + path + Alamofire-watchOS.framework + sourceTree + BUILT_PRODUCTS_DIR + + D5DDE1D92A4C83D1619E0C861F5675E7 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 868010619D7E6CBA5C6E6E2874668C85 + remoteInfo + FSCalendar + + D610891B4297E0DC4A3B25F66C84245E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + D6161D09FA8248DCD374D8329E4896DC + + fileRef + 28BC11DB5236A06FE7899FE3D8C12BC8 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + D625A38F982BA2BB58D9FF6E58614806 + + fileRef + 789916382E59ADBE8407B6AAEBE8BE7C + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + D62875D1995DFB79936B63D5BAC70BC7 + + baseConfigurationReference + 15C2B07CA7B651EEBB343804D2E82740 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/Alamofire-iOS/Alamofire-iOS-prefix.pch + INFOPLIST_FILE + Target Support Files/Alamofire-iOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/Alamofire-iOS/Alamofire-iOS.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + Alamofire + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + D6334ECA4EA64E2AACCCDF4900ED8151 + + fileRef + B792D76D6E95A8B4546DED08585638AF + isa + PBXBuildFile + + D66B51AF38160D1F6E6FA8DC38481A87 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Alamofire.swift + path + Source/Alamofire.swift + sourceTree + <group> + + D66C1AEBCB12D9FDE960FD4A46266CBE + + fileRef + 5844858DC011F247CC5F81F7C48BB621 + isa + PBXBuildFile + + D684B00DD10686E981BB22F140C7DF36 + + isa + PBXTargetDependency + name + Localize-Swift + target + 4E3BBCA6078A6AAAD053C911572F0B0C + targetProxy + 42D3C764859138AB5B01D94A7125E1FF + + D6C836EBDA3F79FDE3CE26BDF284B38D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallTrianglePath.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift + sourceTree + <group> + + D72B7C8687B0968BC6EA8EB8273CA31B + + fileRef + 30CBE910D8F1E4788ABC1AE84437F32E + isa + PBXBuildFile + + D747AEC672D1277C864E5C47A6B7471A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + FSCalendar.xcconfig + sourceTree + <group> + + D7CA6D0090B235B1EC189247192B53D0 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 99467F259B31FBA8DDB95086022B4977 + remoteInfo + FontAwesomeKit + + D7FF48F3092783E4E42B336F0DEF2D1A + + buildConfigurationList + 0A984F75D7AF9321E9237A1F65995B44 + buildPhases + + 0B525EABCAC4BAEA6B73CF7A5C7EAFDF + 427329835593AB54E796D1B03B829FD3 + DD8D1A1E3CD8E497AC51AF94060F1931 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + Onboard + productName + Onboard + productReference + 171921A20D062AEAF39F9628F5DC79D8 + productType + com.apple.product-type.framework + + D83C65855AD92D33B8C23C28BA3153B3 + + isa + PBXTargetDependency + name + FontAwesomeKit + target + 99467F259B31FBA8DDB95086022B4977 + targetProxy + D7CA6D0090B235B1EC189247192B53D0 + + D83CC0EDA9AC8B872D5764F71AACE460 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + D86D03B8988CB9D6D5246DBDD3612E1A + + isa + PBXTargetDependency + name + EFCircularSlider + target + 8F17DD5BDDF65F3AB77F350BE14632BE + targetProxy + 9EF0841B16C8D84091669E26C5A789D7 + + D8812BF818659A6FB49E0B670078E14C + + children + + 98FC2CDDABA4A8E2D1978B56C20CA69E + EC647DF6C18846691FE29B1CB475D06D + D00497D84C8DC9960CE80C61D2FBCDA8 + 82AB329159B7387DA01087F7E540C407 + 327C554036E2C9BBF90D19DE628F7FAB + 7846CE8A672814DFF08B65B6E05171C2 + 7FF5C5B3FEE76ACA587E91307332BECD + 6C146E1B77F97639B95CBC0B8DD63FC5 + 3C82F6B410DDFEB5D929CC079AA79955 + 49A1B5CC7A9BA5D63A26377D3D9A5DBD + 7AD603BED1010165232F13B4F493A8DA + 081BC0EB022066A8AA0B18F8DD1CF28F + 795D4787D2EB6E730000229B9CED1D2B + 36756F83FF73B350B6045AEF48BD685C + DE6980B9737B568FD68F4C9141D79FF4 + 50B21D9B25C202E2D80B0DD4EC36C007 + ADCE271C675326385ADFD7714A7BB8B8 + 6C39B0FF5AE98BDDCB414B11DE712C3A + 6C9AAE941AC7CDF48E9EB2CA2EAC6768 + 3C68703C7B1BDFD88E2F5A7F5E97D70A + 18581811C2E4F921BA210687C370239A + 388999FAD5EF619DCCB087BCB1545FD3 + ECCAD59AF33BC4046C53EC65B9C7F80A + A61CF9FA7CE0C441B4335C401EB17E46 + 6445308509E1F6DDADDFF1FAAB8A66A5 + AF4033B9C64C6678DD874D1A9E2D80E0 + 0726701E029A3D2C0F0B9CFA21923ED2 + CD945D2700569C9B879F04384D634D8A + 7F54CEBBF8612CC9C1D4EC01F8A56A71 + 164B6C3A191D2140F6FB74763BC1D63F + F61157CC4773F2B9BC931BA267FF099F + A26A727D9801AB2B62A50BA4D50A9583 + + isa + PBXGroup + name + FSCalendar + path + FSCalendar + sourceTree + <group> + + D8B4C7B4DFF0B825EE64889145B7623D + + fileRef + 36756F83FF73B350B6045AEF48BD685C + isa + PBXBuildFile + + D8B825F2FA8DF2A94273D4AE8BA3DC96 + + fileRef + ADF234B401A04718C4AC446CDF33B401 + isa + PBXBuildFile + + D8D848205A2C3E33E43C3F4F21B72039 + + includeInIndex + 1 + isa + PBXFileReference + path + EFCircularSlider.modulemap + sourceTree + <group> + + D9780B595CD6643011731F12E4A02B67 + + includeInIndex + 1 + isa + PBXFileReference + path + PermissionScope.modulemap + sourceTree + <group> + + D97F65D291045500FCC9D7F88754B165 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIColor+ChameleonPrivate.h + path + Pod/Classes/Objective-C/UIColor+ChameleonPrivate.h + sourceTree + <group> + + D9AFEB183A6CB4D9B68B6F907D09F993 + + fileRef + 0A603E4CC3ED720849009E1FF6DBEBE5 + isa + PBXBuildFile + + DA2749A83D5B36911D4E7199EE397597 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + INTULocationManager+Internal.h + path + LocationManager/INTULocationManager/INTULocationManager+Internal.h + sourceTree + <group> + + DACEC73F51892F550928C78B65B4651A + + fileRef + E2CC1786211C6D4CD85FF90553A05819 + isa + PBXBuildFile + + DB1D4D4FEB351CBBBD9A5837771AEAA1 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + INTULocationManager.framework + path + INTULocationManager.framework + sourceTree + BUILT_PRODUCTS_DIR + + DB2168E57204757AD51628D13B2C3C31 + + buildActionMask + 2147483647 + files + + F3C7364D274C7349E6B092ECEC2BFBFA + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + DC7957B235F32B0A85E23A08C1BAE606 + + fileRef + B0DE299D26D1CDA907219908AB162529 + isa + PBXBuildFile + + DCD70EC29FEB66A5D62068D5A8435CCF + + includeInIndex + 1 + isa + PBXFileReference + path + FSCalendar.modulemap + sourceTree + <group> + + DCFE6F7EF7F4BB25A0BA8D725577BE33 + + fileRef + 06373D73E2921720ED7BF96B9DADCC0C + isa + PBXBuildFile + + DD4B63C70B694214733C76E90398F4BD + + children + + B8606F16F012F24334B0DA93873C2B60 + 4CE28BC6D0C9A8601F5227326CD6EA03 + 5D61A152210B0A4AC6DE57CF1DEC913A + 976FAE8F43BF8A0A9939168A0B0A4B23 + CABEB716184568B006F7754269DF3CDA + 5C36030BF1ED7ED41D8DEC2A5FBA66FB + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/DGElasticPullToRefresh + sourceTree + <group> + + DD5C1620C8612B5D6689899A770B8CFD + + buildConfigurationList + B6E7F2809FD185D297FFEC7E9E3D5169 + buildPhases + + 90F3A373E978EFE9B2FC3264B42489C3 + AD71DB465920894EA257DCF900C4CD69 + 3445A4B7953D61381745758E04EB34D3 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + SwiftyBeaver + productName + SwiftyBeaver + productReference + C6ABE07B09DBF0F7BABD30BBDD08ACA0 + productType + com.apple.product-type.framework + + DD8D1A1E3CD8E497AC51AF94060F1931 + + buildActionMask + 2147483647 + files + + 8E55107B59A92876B44B690F74B121E7 + EF4066B0EEC6CF4D847A4C6810886BDA + 45B28CDACD362CEF2CA6012BA0015DB6 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + DDB28233EABD5BF71A9C3E33C4BEA870 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + DDDBE5804B05E714CDF485CEBD3066BF + + children + + 6B2E64F2E8D4690790E98FB7D995AA2C + 9977A3C354D0666A654881E57BD22DFE + 7F8BB67D4CE2859B297E14C3B640C75B + EFCE2165F4329E78520702AC9B779494 + 8E41AFB94576AF0491E356300B836F1A + FAD180F14BDB0F5C97D0D3BD6E09FA3A + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/ChameleonFramework + sourceTree + <group> + + DE177FEDE0703332B50A5A4D7E6D2079 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + AKPickerView.swift + path + AKPickerView/AKPickerView.swift + sourceTree + <group> + + DE1D81DF9C3EFE93FE96D401DC42012B + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + DGElasticPullToRefresh.framework + path + DGElasticPullToRefresh.framework + sourceTree + BUILT_PRODUCTS_DIR + + DE6980B9737B568FD68F4C9141D79FF4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FSCalendarCollectionView.h + path + FSCalendar/FSCalendarCollectionView.h + sourceTree + <group> + + DE880DA68D7A784BC41B108C040CBF0A + + includeInIndex + 1 + isa + PBXFileReference + name + zocial-regular-webfont.ttf + path + FontAwesomeKit/zocial-regular-webfont.ttf + sourceTree + <group> + + DF565F97655E8A03E36E9AEDECF0BC88 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Download.swift + path + Source/Download.swift + sourceTree + <group> + + DF5B9CB98A6BD1A8FAB72B5BEDD52F2A + + baseConfigurationReference + 5364B913036733DAF27822A4A4BDDB1D + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftyBeaver/SwiftyBeaver-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftyBeaver/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftyBeaver/SwiftyBeaver.modulemap + MTL_ENABLE_DEBUG_INFO + NO + PRODUCT_NAME + SwiftyBeaver + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + DFC8701E7DD1F51BBE94E2EEB0D78F23 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRIconView.h + path + src/Components/MRIconView.h + sourceTree + <group> + + E04366B3CB23EFC589774E52E4E5154F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SCLAlertView-prefix.pch + sourceTree + <group> + + E0AEE06DCF8E2607459EBDD5C4757629 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Onboard-umbrella.h + sourceTree + <group> + + E0AFA39DA4A01D8A8FE3D4EC76250F46 + + fileRef + 4BE0CB2B9D1799579859E047C7016DBF + isa + PBXBuildFile + + E0C720836FBA4E75E3E57069219B7107 + + fileRef + 7F8BB67D4CE2859B297E14C3B640C75B + isa + PBXBuildFile + + E0EA97C7A06E7F9F5DD0876140378CBD + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + QuartzCore.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/QuartzCore.framework + sourceTree + DEVELOPER_DIR + + E10811611C26692BF478956AFCDF58A8 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + Alamofire.framework + path + Alamofire-iOS.framework + sourceTree + BUILT_PRODUCTS_DIR + + E135471C62BC0869120A386DAB63607D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + E1834E51CB8E4E87F728C7292BBC827A + + fileRef + 382ADC61BFD6F603D7126116EFBBF2D6 + isa + PBXBuildFile + + E1A910F5234561A4C2EB1125836E91C2 + + fileRef + 772F23910EE903F51919A7BC788CD77C + isa + PBXBuildFile + + E1C792C953CA2DBCE8614ABF2A66A8E0 + + buildActionMask + 2147483647 + files + + D6161D09FA8248DCD374D8329E4896DC + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + E22E022678FF41228D1CF045A77C6D61 + + buildConfigurations + + BFBD95493AE0698E03E3DECE68E2898B + C44B08B125A7FC4665D910B5092DD01D + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + E258C72F744D28F06BC21BAC66573318 + + fileRef + 6445308509E1F6DDADDFF1FAAB8A66A5 + isa + PBXBuildFile + + E29873AFD5B355C08B854EE17A44E974 + + children + + 83657B73A26369F9813C3BB14351DF76 + 5F36D808819E718A54D920E57DD99355 + BA6EF82474E186A9985DEC37E0DCF30D + F47D007801B5C3C795FCE310BB67E644 + 2A5B31E1F3FD73E3992BAD20B850BA51 + 58AF2601D0144359A19374C0CBFB6CE5 + C3B2E1D68BC5256373D7257D0FED94D0 + 30CBE910D8F1E4788ABC1AE84437F32E + A6C60F5B4987A3FF1F9B0C5CFDE81230 + 6668D6ADD917E4A5E9475FF6BC95EC54 + 9D145DE96935A47F052FE587D91E9A12 + BDE29EDCF3E5B5354727B3D733E56040 + 4D3478B625016D4EF1ACCC9DD2B2A85F + 92E951E21093F513CA9C9BB96058015F + 32E9A53C2041A83FC6BC394589C96201 + 1B786472CACB2184D1751CE40519C249 + D4FA086F7408BEA45C613FBB3EDA3992 + A4A7C6729AAB814DF324E08BF396954B + F88D0FF5E57CF62065EBCBF75A4AAAB8 + C49580AC5A1D4CC6626BBA9D093EE67D + + isa + PBXGroup + name + SwiftDate + path + SwiftDate + sourceTree + <group> + + E2CC1786211C6D4CD85FF90553A05819 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKIcon.m + path + FontAwesomeKit/FAKIcon.m + sourceTree + <group> + + E34FA00507C09AEC64D7232277F255CC + + children + + 1AEBBDE75E9B16E92552D3AA3BB51A49 + 889F01ECE08C84EED4FA1FEF7BCA2C91 + + isa + PBXGroup + name + ProgressBaseClass + sourceTree + <group> + + E39D92E50E8FA1E9BF6991CAB3F0DE7C + + fileRef + 515AEA7BBBD2BC5CF574227EC0508E91 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + E40E50B03C60D676D66FAD62322C7B62 + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + E44A7805D7A64F340CA3841266E38DEB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FAKMaterialIcons.m + path + FontAwesomeKit/FAKMaterialIcons.m + sourceTree + <group> + + E464785D955FA1637C87E5F0D1DF5800 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + D1DC35DB2C695031A72543555FB23729 + remoteInfo + AsyncSwift + + E4C0B1EC55E54FB77FDA2D63150195DB + + children + + E135471C62BC0869120A386DAB63607D + A513BB1FCBF12CA76D5E1C9F03CEFC7E + 4F44C512643471960C624277440B0AD7 + EE400C7E88591D6E094D3516FC1AB97E + F3742487A85A6B1BFDE23CB190E2481B + 1635A72A184E8A3C06EB9F0384AC92A3 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/MRProgress + sourceTree + <group> + + E4FD8E95F1D23F3E7B4B9230F2D5D2C0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + SCLAlertView.xcconfig + sourceTree + <group> + + E57FEB5B31E59F43D44ED9FB42B89FB6 + + fileRef + 115BF7DC111926ACDADBF12A9B1E35E4 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + E5A8052B5A4C8674C786A34E22C83D14 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIView+ChameleonPrivate.m + path + Pod/Classes/Objective-C/UIView+ChameleonPrivate.m + sourceTree + <group> + + E65F8EEC6AECDB63A6D20FF63122B748 + + fileRef + 2AEB5CFFC05460BFBEAB8A7FC0D21585 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + E6A0D979FD3EB8F7F7DB7DE7534D6754 + + buildConfigurations + + 8FB125B74EF44689C31B0BEEEC15B7F6 + 4BE0D6C3CC1BB40D3C1D1DAFBF8285F1 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + E6EB56552C37C8681268A53742929B48 + + buildActionMask + 2147483647 + files + + D6334ECA4EA64E2AACCCDF4900ED8151 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + E6F375A2B878B22B7E8A34D5524B527A + + fileRef + 2E65437C76D316CBDC46A143022AC4F1 + isa + PBXBuildFile + + E7C75EC032173C375F33906F5885064D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Permissions.swift + path + PermissionScope/Permissions.swift + sourceTree + <group> + + E7D83D74F3A5AEC11161EA93D080FC4F + + baseConfigurationReference + 60C38257AB01C6BEA222DA163A5C152F + buildSettings + + APPLICATION_EXTENSION_API_ONLY + YES + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + INFOPLIST_FILE + Target Support Files/Pods-tpg offline Watch Extension/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MACH_O_TYPE + staticlib + MODULEMAP_FILE + Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.modulemap + MTL_ENABLE_DEBUG_INFO + NO + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PODS_ROOT + $(SRCROOT) + PRODUCT_BUNDLE_IDENTIFIER + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + PRODUCT_NAME + Pods_tpg_offline_Watch_Extension + SDKROOT + watchos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 4 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Release + + E805993B25BD0F1D55AADCE5B4BB4B5A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Stream.swift + path + Source/Stream.swift + sourceTree + <group> + + E86B5BCF9AFD65C85F79982F1E65F3E3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + INTULocationManager-umbrella.h + sourceTree + <group> + + E8D3797D9C2FE3C3F92E241D070E854D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + E904753FC5F986C9C6A912761BE1465C + + children + + ABE824437D95E0EC2293A1D4BA256A84 + 73379C9E26389CA7D26E6B34D770D703 + A84AC492E6E2A5F62E304FD91673DF66 + 9250D26BC513D25521A34970DBD95DB5 + 2E65437C76D316CBDC46A143022AC4F1 + 3054F23BB5817B5D9E23AF945EB56EA0 + B6856014DD16E68DE40CC944E13C7181 + 0F69600F494AC278C1F6E395179D0B8E + 51379C1809B5415E36649D86D99C7A1E + 2B4991D7C1045F41C0D9E91177FA8AA4 + 70A9CB1BADBC6470028F8494402C5229 + 93CCBF9CE5CD966617D3AE333FD6F62D + 7359B876ABD6B37138D790129C7CE7B7 + B144462CABC8C185E77D5F62F8261825 + F972C61D9A226BFB3404624CAFC50164 + 9E76B85726E29D6DF547809CFB590E00 + 5C36A96D2161FE58BDA1F83CAAD98383 + D6C836EBDA3F79FDE3CE26BDF284B38D + B9A9AAEB10D58452A852D44FEA61499A + EBFE6DAD0E45D2C7DBE782C8478C4552 + 382ADC61BFD6F603D7126116EFBBF2D6 + 21067C6ABC90B85C3F83A8098CE38300 + 3C854A2307CFA48D05EB77C8DC0C7512 + 0637AFA0A1167808DA6FC820ACA891D6 + 546C7D83BE6A81EC387005E5860E0790 + CCAB0340EB3B251B03E7F23293E0A4EB + 25DDD9D65FBD08F99FB1EDC78289F649 + 2BD1046DCEC2F5C2A3ABAC9693DA8196 + F48F809327568EB59C3F2A68E5151B47 + CCD875C439DD904B030CBFDB79D7778B + 9B3AB6C9D30847CE518BDB0606AD01A8 + ED3298553664EEF70B0B1A616FB7CDF6 + 044E029F9285F67624E340B9F1043C6B + C95AF396459EB28F90D29CED9A0B0E94 + 319C5055D1DF6A441227E4F09D67EA0D + C3254BF8147D7C68AD264C27D06D09BF + 2177FACA31E0FA63D7D2BDE24C466F08 + + isa + PBXGroup + name + NVActivityIndicatorView + path + NVActivityIndicatorView + sourceTree + <group> + + E91F050FE186DDFAD9FB4631361BF1BE + + includeInIndex + 1 + isa + PBXFileReference + path + FontAwesomeKit.modulemap + sourceTree + <group> + + E93F7537D7281728CFE3B5108B36D30D + + fileRef + EBFE6DAD0E45D2C7DBE782C8478C4552 + isa + PBXBuildFile + + E9A5D3193E6A02E021C42CE6C3D0BC08 + + baseConfigurationReference + 5364B913036733DAF27822A4A4BDDB1D + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftyBeaver/SwiftyBeaver-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftyBeaver/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftyBeaver/SwiftyBeaver.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + SwiftyBeaver + SDKROOT + iphoneos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + E9EDD9643F20B37D2E4A80FB9EB37267 + + children + + 66E557E17489DFBFD0E6DA57946F3B28 + 39CFAE1CB6595F0C44AE27B8B2A2954A + 796F45EA891A4B4E3A6583CA38ECE698 + 2DF2745F3738AFEF9BE0049F93D89EA9 + E0EA97C7A06E7F9F5DD0876140378CBD + 61E31D4148107C0C5EFAC72DC58095BD + + isa + PBXGroup + name + iOS + sourceTree + <group> + + EA794BFDB9159F5E73606E92A28BA8AF + + buildActionMask + 2147483647 + files + + 1250C15821D063438351CA3D374B8153 + ACF7C3C74DE8C78434656A73C2CE8CCA + E1A910F5234561A4C2EB1125836E91C2 + 9AEE8CB9A438667C3BF905C6206BC1EB + 8CF5ACA6C355B72E2CE843393A3E2C7C + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + EA8E3989C5975FEE6D9719E3BD964DAD + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + ANSCompatibility.h + path + iOS/Crashlytics.framework/Headers/ANSCompatibility.h + sourceTree + <group> + + EAB85CCCBFB0ACCCDECFD201735E2898 + + fileRef + F582D7F1AEBACC6A265487E4374AE806 + isa + PBXBuildFile + + EAC38992B2D12AEF8F6DC6C9AF020F39 + + baseConfigurationReference + 4949B695B162A5AAA8D7B2F21C4D5C50 + buildSettings + + APPLICATION_EXTENSION_API_ONLY + YES + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-prefix.pch + INFOPLIST_FILE + Target Support Files/SwiftyJSON-watchOS/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + SwiftyJSON + SDKROOT + watchos + SKIP_INSTALL + YES + SWIFT_OPTIMIZATION_LEVEL + -Onone + TARGETED_DEVICE_FAMILY + 4 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + WATCHOS_DEPLOYMENT_TARGET + 2.0 + + isa + XCBuildConfiguration + name + Debug + + EB717CB50DCCEB28CCFDA01C39B432BB + + fileRef + 7F54CEBBF8612CC9C1D4EC01F8A56A71 + isa + PBXBuildFile + + EBEA2C2D7F05DAA5680CC4E423E485B8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + SwiftyJSON-iOS.xcconfig + sourceTree + <group> + + EBFE6DAD0E45D2C7DBE782C8478C4552 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallZigZagDeflect.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift + sourceTree + <group> + + EC45B49DAE58A4E80A54C3888DA457F3 + + buildActionMask + 2147483647 + files + + 37E433452F9AEE4A0B51CCDA404B53EC + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + EC647DF6C18846691FE29B1CB475D06D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + CALayer+FSExtension.m + path + FSCalendar/CALayer+FSExtension.m + sourceTree + <group> + + EC7761D11370FB950DDCF8C953171A01 + + fileRef + F95F0CAE21D9C3DBDF266CA0C4D39AE9 + isa + PBXBuildFile + + EC82CC4D4F952C1DE7C3D560F46F7154 + + buildActionMask + 2147483647 + files + + 821E8C0F89874CF1E49B864A81D2DDA6 + 41EA68AD4B370695B3E435122D31256C + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + ECBA47A31E296B87BA94ABCFC8D04862 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + ChameleonConstants.m + path + Pod/Classes/Objective-C/ChameleonConstants.m + sourceTree + <group> + + ECCAD59AF33BC4046C53EC65B9C7F80A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + FSCalendarFlowLayout.m + path + FSCalendar/FSCalendarFlowLayout.m + sourceTree + <group> + + ECDF2C04EED904A4AFC64DED8EA45544 + + fileRef + 26821A98774BBD2296063F1634AF8AE3 + isa + PBXBuildFile + + ECDFA6CDAFA2207ECE1733E8E1EB8980 + + fileRef + F61157CC4773F2B9BC931BA267FF099F + isa + PBXBuildFile + + ED30B7DD7B886B42115F9F24B1029048 + + buildActionMask + 2147483647 + files + + C0ECC2428A599038E31B613A8E89C69B + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + ED3298553664EEF70B0B1A616FB7CDF6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationSquareSpin.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift + sourceTree + <group> + + ED6729BBCAA181743608834CFDA28B10 + + fileRef + 4E614F66151A3E4691C35D469857A352 + isa + PBXBuildFile + + ED9693054C5D644ECD60224CD91698D6 + + buildActionMask + 2147483647 + files + + A93B6A2AF2DBFD2AB32170E213BE0FEA + 9CB8A816A7DA1AD905C0E945B029B205 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + EDC1F070425F72F78F5A4A930707F5E5 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + OnboardingViewController.h + path + Source/OnboardingViewController.h + sourceTree + <group> + + EDE12978B3BB8AD4A68940CB07878C96 + + fileRef + 61E31D4148107C0C5EFAC72DC58095BD + isa + PBXBuildFile + + EDFC523A5F19ECFF928A3CD172DD77BB + + fileRef + 5C36A96D2161FE58BDA1F83CAAD98383 + isa + PBXBuildFile + + EE07C99FAD103050F7920FECE45C07D2 + + fileRef + 7880179AA3CC43A3A4B653BB3DFF2252 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + EE363F2391D07479199DF23D3E965F29 + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + name + SwiftDate.framework + path + SwiftDate.framework + sourceTree + BUILT_PRODUCTS_DIR + + EE400C7E88591D6E094D3516FC1AB97E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + MRProgress-dummy.m + sourceTree + <group> + + EE442E93E5BBC6AB805C3E1B2D3482CA + + fileRef + 727DE96D6CD78FF88F5E2B157BC84358 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + EE45E0FB3A26B7DFF80DDCF6C597970B + + fileRef + 6E3DB3F82F3648296FD1BF2E36CFC124 + isa + PBXBuildFile + + EE691DA3C9B83F18E776E1437AC81D60 + + fileRef + D50109CEBE558FBD6363CF8BA4102B77 + isa + PBXBuildFile + + EE86971AA740996009F8764DC6282C71 + + includeInIndex + 1 + isa + PBXFileReference + name + ionicons.ttf + path + FontAwesomeKit/ionicons.ttf + sourceTree + <group> + + EEEB710A6F2BF621D014CC1909D9540D + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + EF4066B0EEC6CF4D847A4C6810886BDA + + fileRef + 7FF13C6E5AB7838B850691AF3A2C0597 + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + EF758A31B8900B6F0CF67C030692525A + + fileRef + 0FE9093598BDC2E573B5AC53CC2C517E + isa + PBXBuildFile + + EF89A4DA92CC0D0F76CF983AB2A6F4F1 + + buildConfigurationList + 9AF2EF1CAE695BB53E5A8461232EBAD5 + buildPhases + + 3F70216E96FADB6650A523C5B0D82ABA + 50D2750C40F449BFD8567BAFCABB9C26 + B19E94B10D550DC02B1D33FCAD52BA8B + + buildRules + + dependencies + + isa + PBXNativeTarget + name + DGRunkeeperSwitch + productName + DGRunkeeperSwitch + productReference + 327CD9CC9A7C9740E5A0018D0D43B133 + productType + com.apple.product-type.framework + + EFCE2165F4329E78520702AC9B779494 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + ChameleonFramework-prefix.pch + sourceTree + <group> + + F0062A0D1BD5D56ED254B194BB3B7EB4 + + fileRef + 889F01ECE08C84EED4FA1FEF7BCA2C91 + isa + PBXBuildFile + + F03ABD336CFCA6B0D44FBE282BBCE0BD + + fileRef + 51379C1809B5415E36649D86D99C7A1E + isa + PBXBuildFile + + F0773AC9987AB625DB323BE396B47B06 + + fileRef + 25DDD9D65FBD08F99FB1EDC78289F649 + isa + PBXBuildFile + + F0EEB0967A204264AC22A16C2567A9C3 + + fileRef + F39DCEA5EBC5476B103B02F706975DD7 + isa + PBXBuildFile + + F10DC2A793C1B040AD2EDDB74761FF3A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + FontAwesomeKit.xcconfig + sourceTree + <group> + + F184344C26287628234779747B25E716 + + fileRef + F48F809327568EB59C3F2A68E5151B47 + isa + PBXBuildFile + + F2066100EFBC52F34473CC2FE405B240 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Onboard-prefix.pch + sourceTree + <group> + + F31769919E87DD9269F637DD018BB1C3 + + children + + 7FF13C6E5AB7838B850691AF3A2C0597 + 638D7FE118E7D93B77F675F381A463A4 + EDC1F070425F72F78F5A4A930707F5E5 + C8C2E9B5BDE46B636B681309AA4B43BF + 38CEC30ED3A2A4E002EB141058D8C1CE + + isa + PBXGroup + name + Onboard + path + Onboard + sourceTree + <group> + + F339E94E38E5065683FAE9BF97EFC592 + + fileRef + 0726701E029A3D2C0F0B9CFA21923ED2 + isa + PBXBuildFile + + F3742487A85A6B1BFDE23CB190E2481B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + MRProgress-prefix.pch + sourceTree + <group> + + F39DCEA5EBC5476B103B02F706975DD7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Timeline.swift + path + Source/Timeline.swift + sourceTree + <group> + + F3C7364D274C7349E6B092ECEC2BFBFA + + fileRef + 2DF2745F3738AFEF9BE0049F93D89EA9 + isa + PBXBuildFile + + F3D71D6BD5F271EFCE5F0D2F6A1282BB + + fileRef + 83657B73A26369F9813C3BB14351DF76 + isa + PBXBuildFile + + F3DBC8682135AF5B36382E304C0CEF08 + + buildActionMask + 2147483647 + files + + 47DD9712148A849597BF4BB6A7CF5B9C + 599393E375A20A35BDA5AF34B08A443D + 0AB4C7D0B16AE708849843F055FC111C + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + F3F5B5737535D91E9394B0899338E6F5 + + fileRef + 2A5B31E1F3FD73E3992BAD20B850BA51 + isa + PBXBuildFile + + F449D510B09D6326A93FAC33032FB68D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Pods-tpg offline Watch Extension-acknowledgements.plist + sourceTree + <group> + + F47D007801B5C3C795FCE310BB67E644 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + DateInRegion+Components.swift + path + Sources/SwiftDate/DateInRegion+Components.swift + sourceTree + <group> + + F48F809327568EB59C3F2A68E5151B47 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationOrbit.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift + sourceTree + <group> + + F4F9BA77B86D296C90AFDC11261635FF + + children + + 8961E8868A393E2E54136A1C15D6BC22 + 2019F6EA9F6BD039AADB1D2E35820A95 + BE49B94D134B7F887D4C7D16EFFB79A2 + F449D510B09D6326A93FAC33032FB68D + 06373D73E2921720ED7BF96B9DADCC0C + CDE2047A5CCA51948AAFBD04D0E39459 + 5D0BF7FB825CB2A572CB83CCDEF07714 + 115BF7DC111926ACDADBF12A9B1E35E4 + 1270BD2BC49934F62901F5EE26F7CC80 + 60C38257AB01C6BEA222DA163A5C152F + + isa + PBXGroup + name + Pods-tpg offline Watch Extension + path + Target Support Files/Pods-tpg offline Watch Extension + sourceTree + <group> + + F5141B8238B803A23A3F901EDC70268B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + F582D7F1AEBACC6A265487E4374AE806 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + SCLExtensions.swift + path + SCLAlertView/SCLExtensions.swift + sourceTree + <group> + + F5D10CA3D63021591D39AE358891BA73 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Response.swift + path + Source/Response.swift + sourceTree + <group> + + F60BC667495022BB71DE0C146D3C99EA + + buildActionMask + 2147483647 + files + + 20C5E87C1DF07DEA65CD74B8D07D6D1C + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + F60E1974ADBE32987CC1F894A09C93CC + + fileRef + 789A6651091900E2BFB07B5D02157B92 + isa + PBXBuildFile + + F61157CC4773F2B9BC931BA267FF099F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIView+FSExtension.m + path + FSCalendar/UIView+FSExtension.m + sourceTree + <group> + + F6A327884DEF67AF7E3E5A685411561B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + SwiftyBeaver-prefix.pch + sourceTree + <group> + + F6A96B04212E73D95041689D00038C77 + + fileRef + A6C60F5B4987A3FF1F9B0C5CFDE81230 + isa + PBXBuildFile + + F734E1FA3A588E9EC2FDA1615C838B7D + + children + + 5A20C4D526672DD2695F53406DAD887B + 60831C7844AF4083DDB81483B8551375 + 24267DA0FF9710DD416C9B55056F5677 + + isa + PBXGroup + name + Stopable + sourceTree + <group> + + F75D4F700C77705629EE9969F67FB4C1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + CLSReport.h + path + iOS/Crashlytics.framework/Headers/CLSReport.h + sourceTree + <group> + + F7ABFABB520B8D5526AC38DF3455D5AC + + children + + 15E7F834642D60217656716CD6CEB4EF + 887D126993E8C0690949124F6600C0E0 + BBFC6013BD1C3CCC528886453C70B655 + 726937D5C8BC54B2B99A37DCEB4980BD + 0D6B6EDA531359137080AF7834E42DD4 + + isa + PBXGroup + name + EFCircularSlider + path + EFCircularSlider + sourceTree + <group> + + F80A38740B0FC521430391E85908F05E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRProgressHelper.h + path + src/Utils/MRProgressHelper.h + sourceTree + <group> + + F834CACF20C495FC9A95546E26E11648 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKOcticons.h + path + FontAwesomeKit/FAKOcticons.h + sourceTree + <group> + + F88D0FF5E57CF62065EBCBF75A4AAAB8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + Region.swift + path + Sources/SwiftDate/Region.swift + sourceTree + <group> + + F8FBE1DB56050AD970A4F89D093B9CB7 + + fileRef + EC647DF6C18846691FE29B1CB475D06D + isa + PBXBuildFile + + F90166532545159FC1603C1B990400F2 + + fileRef + D4FA086F7408BEA45C613FBB3EDA3992 + isa + PBXBuildFile + + F9220BCD172EA6B63B76964F147252DD + + isa + PBXTargetDependency + name + DGRunkeeperSwitch + target + EF89A4DA92CC0D0F76CF983AB2A6F4F1 + targetProxy + 16712E84BDF3AEE5298D556A030DAADC + + F95F0CAE21D9C3DBDF266CA0C4D39AE9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Alamofire-iOS-dummy.m + sourceTree + <group> + + F9651A36064ADFD1D9F41D3C989DB162 + + isa + PBXTargetDependency + name + FSCalendar + target + 868010619D7E6CBA5C6E6E2874668C85 + targetProxy + D5DDE1D92A4C83D1619E0C861F5675E7 + + F972C61D9A226BFB3404624CAFC50164 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.swift + name + NVActivityIndicatorAnimationBallScaleRipple.swift + path + NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift + sourceTree + <group> + + F9D4DC767565A372DD63242D6DCD6B9D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIColor+Chameleon.m + path + Pod/Classes/Objective-C/UIColor+Chameleon.m + sourceTree + <group> + + F9E78295BF967675C4E64563D61D4C2B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + DGRunkeeperSwitch-prefix.pch + sourceTree + <group> + + F9EAB52F5C156FD838E611107250E5E8 + + baseConfigurationReference + 4CA03D3DE72346C3D89371CCFF709888 + buildSettings + + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_NO_COMMON_BLOCKS + YES + GCC_PREFIX_HEADER + Target Support Files/INTULocationManager/INTULocationManager-prefix.pch + INFOPLIST_FILE + Target Support Files/INTULocationManager/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + + $(inherited) + @executable_path/Frameworks + @loader_path/Frameworks + + MODULEMAP_FILE + Target Support Files/INTULocationManager/INTULocationManager.modulemap + MTL_ENABLE_DEBUG_INFO + YES + PRODUCT_NAME + INTULocationManager + SDKROOT + iphoneos + SKIP_INSTALL + YES + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + FA74B80DC1FBC39BF26C1E87FB3168F3 + + fileRef + A5C78F0806A05F568B06C6500F030554 + isa + PBXBuildFile + + FAD180F14BDB0F5C97D0D3BD6E09FA3A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + FB27F2811CD7FB6F55C6785CD882D5F0 + + fileRef + 0F69600F494AC278C1F6E395179D0B8E + isa + PBXBuildFile + + FB9AABF3EBD81467B4B2C463EA146459 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + FC1A73E30C8322A70D5DCD63B04CAE84 + + buildActionMask + 2147483647 + files + + 1736C9EB167121B7B4033DB3304686AE + E40E50B03C60D676D66FAD62322C7B62 + 81840B35F7DD7F3CA4592E2B6893B933 + EDE12978B3BB8AD4A68940CB07878C96 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + FCA36069C48038212D7DAB90CF404108 + + children + + 59831F1BC5761E280D1FEE2B25D8163D + 4B7190B08381CDD4A4453BA091E02F61 + 30911B6DEA2551B3A7C3F3880EC2AD2C + 26821A98774BBD2296063F1634AF8AE3 + 0B2B40BF58A324E6486B5EB81B632A19 + DD4B63C70B694214733C76E90398F4BD + + isa + PBXGroup + name + DGElasticPullToRefresh + path + DGElasticPullToRefresh + sourceTree + <group> + + FD45C877DFBFA8340B0FD7F66C01CD80 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRBlurView.h + path + src/Blur/MRBlurView.h + sourceTree + <group> + + FDCC5252155A69655285D62D2A183655 + + buildConfigurationList + 93192D8BBBFAA2AB4F5C187B845F0B5E + buildPhases + + 445293A88E014449B195B5DA54B4766C + 35F6C8A7280FBC36F0E40CD799EE6D05 + CA3D60F1B493300D133D8DF6D2BC6BB9 + + buildRules + + dependencies + + 4C8138002F585E3B4E7E09F7CC88FC6C + 379B9223D6293F174CCEAB702D3F43A8 + A865C7B25B7EE71F171DDE120AE9829A + B6F083938BF7FFDF8A0272C0B82C0DC2 + 3A71EE8AEFF0CA489234681A31D396FF + F9220BCD172EA6B63B76964F147252DD + D86D03B8988CB9D6D5246DBDD3612E1A + F9651A36064ADFD1D9F41D3C989DB162 + D83C65855AD92D33B8C23C28BA3153B3 + 577D1719FDC3065037FC4BAE2CDC6B4B + D684B00DD10686E981BB22F140C7DF36 + 8F77B7906E5AFAFE268632DD1EAFA561 + 02440CFFC3C1C2717F53FF78F97B0987 + 679C929DEA051D45B16D0A91B7759867 + 464A71345D9D2033EC9D2A164C9AA3E6 + 544CEFAC4AE87FDB3CE861ABD8D864D8 + 9E658FC70A55CCE5224B20696F95E89E + 3EBAC77EA7F2BE66AF6539134A69F3D6 + 1480FF8A3480070E78BB6E831A125957 + + isa + PBXNativeTarget + name + Pods-tpg offline + productName + Pods-tpg offline + productReference + 6F200F750E61DB9022BD5CE95C163D5A + productType + com.apple.product-type.framework + + FE9B97D4313BD459EC6B7ED95274B08C + + fileRef + 9D5A2C405F99E7A86A47810900B9B7D9 + isa + PBXBuildFile + + FF424AFF7D049E8EC495D95B7A9C5E5F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + MRNavigationBarProgressView.h + path + src/Components/MRNavigationBarProgressView.h + sourceTree + <group> + + FF4A8EFE1154C1FFD58B48E978298871 + + fileRef + AD1B92F91B30BD9E8899FEABDAD660CF + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + FF789217D639D9B251810729B161BC12 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + FAKMaterialIcons.h + path + FontAwesomeKit/FAKMaterialIcons.h + sourceTree + <group> + + FF838400EFA243FA870C843C043254F3 + + containerPortal + D41D8CD98F00B204E9800998ECF8427E + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + AC09AA278A433796BC1633E8E9BAAF27 + remoteInfo + SwiftyJSON-watchOS + + FFFA24AD733F7F688AE0747CBA0BA280 + + fileRef + B792D76D6E95A8B4546DED08585638AF + isa + PBXBuildFile + + + rootObject + D41D8CD98F00B204E9800998ECF8427E + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftTweaks.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftTweaks.xcscheme deleted file mode 100644 index 2284089f..00000000 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftTweaks.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftyJSON.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftyJSON.xcscheme deleted file mode 100644 index fd549911..00000000 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftyJSON.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/xcschememanagement.plist b/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index e9511310..00000000 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,126 +0,0 @@ - - - - - SchemeUserState - - AKPickerView-Swift.xcscheme - - isShown - - - Alamofire.xcscheme - - isShown - - - AsyncSwift.xcscheme - - isShown - - - ChameleonFramework.xcscheme - - isShown - - - DGElasticPullToRefresh.xcscheme - - isShown - - - DGRunkeeperSwitch.xcscheme - - isShown - - - EFCircularSlider.xcscheme - - isShown - - - FSCalendar.xcscheme - - isShown - - - FontAwesomeKit.xcscheme - - isShown - - - INTULocationManager.xcscheme - - isShown - - - Localize-Swift.xcscheme - - isShown - - - Log.xcscheme - - isShown - - - MRProgress.xcscheme - - isShown - - - NVActivityIndicatorView.xcscheme - - isShown - - - Onboard.xcscheme - - isShown - - - PermissionScope.xcscheme - - isShown - - - Pods-tpg offline.xcscheme - - isShown - - - SCLAlertView.xcscheme - - isShown - - - SwiftDate.xcscheme - - isShown - - - SwiftInAppPurchase-SwiftInAppPurchase.xcscheme - - isShown - - - SwiftInAppPurchase.xcscheme - - isShown - - - SwiftTweaks.xcscheme - - isShown - - - SwiftyJSON.xcscheme - - isShown - - - - SuppressBuildableAutocreation - - - diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme new file mode 100644 index 00000000..3c863761 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Alamofire-iOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Alamofire-iOS.xcscheme new file mode 100644 index 00000000..ce47d37c --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Alamofire-iOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Alamofire-watchOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Alamofire-watchOS.xcscheme new file mode 100644 index 00000000..67f43a94 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Alamofire-watchOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/AsyncSwift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/AsyncSwift.xcscheme new file mode 100644 index 00000000..13983d20 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/AsyncSwift.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/ChameleonFramework.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/ChameleonFramework.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/ChameleonFramework.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/ChameleonFramework.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/EFCircularSlider.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/EFCircularSlider.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/EFCircularSlider.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/EFCircularSlider.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/FSCalendar.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/FSCalendar.xcscheme similarity index 96% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/FSCalendar.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/FSCalendar.xcscheme index 73af509e..176d950b 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/FSCalendar.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/FSCalendar.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/INTULocationManager.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/INTULocationManager.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/INTULocationManager.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/INTULocationManager.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Localize-Swift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Localize-Swift.xcscheme new file mode 100644 index 00000000..67549ca0 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Localize-Swift.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/MRProgress.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/MRProgress.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/MRProgress.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/MRProgress.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme similarity index 96% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme index cb4a7843..c13bbc24 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Onboard.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Onboard.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Onboard.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Onboard.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/PermissionScope.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/PermissionScope.xcscheme similarity index 100% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/PermissionScope.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/PermissionScope.xcscheme diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Pods-tpg offline Watch Extension.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Pods-tpg offline Watch Extension.xcscheme new file mode 100644 index 00000000..25fe3e10 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Pods-tpg offline Watch Extension.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme similarity index 65% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme index a0f7c322..b20bb647 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme @@ -7,30 +7,33 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + BuildableIdentifier = "primary" + BlueprintIdentifier = "FDCC5252155A69655285D62D2A183655" + BuildableName = "Pods_tpg_offline.framework" + BlueprintName = "Pods-tpg offline" + ReferencedContainer = "container:Pods.xcodeproj"> + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + debugDocumentVersioning = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SCLAlertView.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SCLAlertView.xcscheme similarity index 96% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SCLAlertView.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SCLAlertView.xcscheme index fa767629..6f1d938a 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SCLAlertView.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SCLAlertView.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftDate.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftDate.xcscheme similarity index 96% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftDate.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftDate.xcscheme index 3153e41f..1928802d 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftDate.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftDate.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftInAppPurchase-SwiftInAppPurchase.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftInAppPurchase-SwiftInAppPurchase.xcscheme similarity index 96% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftInAppPurchase-SwiftInAppPurchase.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftInAppPurchase-SwiftInAppPurchase.xcscheme index 53568231..0018e3bf 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftInAppPurchase-SwiftInAppPurchase.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftInAppPurchase-SwiftInAppPurchase.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftInAppPurchase.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftInAppPurchase.xcscheme similarity index 96% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftInAppPurchase.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftInAppPurchase.xcscheme index e3ea81f3..844225ba 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/SwiftInAppPurchase.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftInAppPurchase.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyBeaver.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyBeaver.xcscheme new file mode 100644 index 00000000..28a55b88 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyBeaver.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyJSON-iOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyJSON-iOS.xcscheme new file mode 100644 index 00000000..bda897c1 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyJSON-iOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyJSON-watchOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyJSON-watchOS.xcscheme new file mode 100644 index 00000000..1d6d589e --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/SwiftyJSON-watchOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/xcschememanagement.plist b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/xcschememanagement.plist index b0da97d7..9a3d5914 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/xcschememanagement.plist @@ -2,144 +2,227 @@ - SuppressBuildableAutocreation + SchemeUserState - 05FE1F0D2B1FA1DC3263A13FCD68A0C1 + AKPickerView-Swift.xcscheme - primary - + isShown + - 115824B7CB2E76E5ACB836A251E79404 + Alamofire-iOS.xcscheme - primary - + isShown + - 1B0512388D489C05009CBA9A7EBBF9CB + Alamofire-watchOS.xcscheme - primary - + isShown + - 32227DE82A25F38D0FB6FD6A6B51574B + AsyncSwift.xcscheme - primary - + isShown + - 3DF57BC410DCEA29039098C5508D9145 + ChameleonFramework.xcscheme - primary - + isShown + - 4D48BE2E1C03FDDFE91191F0714E9095 + DGElasticPullToRefresh.xcscheme - primary - + isShown + - 4E3BBCA6078A6AAAD053C911572F0B0C + DGRunkeeperSwitch.xcscheme - primary - + isShown + - 5172ACAB7FEA22813859DC97CA0AA16F + EFCircularSlider.xcscheme - primary - + isShown + - 5AF1C612F4CDA296FC4C82D9BD0BD25D + FSCalendar.xcscheme - primary - + isShown + + + FontAwesomeKit.xcscheme + + isShown + + + INTULocationManager.xcscheme + + isShown + + + Localize-Swift.xcscheme + + isShown + + + MRProgress.xcscheme + + isShown + + + NVActivityIndicatorView.xcscheme + + isShown + + + Onboard.xcscheme + + isShown + + + PermissionScope.xcscheme + + isShown + + + Pods-tpg offline Watch Extension.xcscheme + + isShown + + + Pods-tpg offline.xcscheme + + isShown + + + SCLAlertView.xcscheme + + isShown + - 626D49AD18621B0A3059EE726B27AE89 + SwiftDate.xcscheme + + isShown + + + SwiftInAppPurchase-SwiftInAppPurchase.xcscheme + + isShown + + + SwiftInAppPurchase.xcscheme + + isShown + + + SwiftyBeaver.xcscheme + + isShown + + + SwiftyJSON-iOS.xcscheme + + isShown + + + SwiftyJSON-watchOS.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + 063E3C59C1B7382B70A98D5EF8052B8D primary - 79C040AFDDCE1BCBF6D8B5EB0B85887F + 115824B7CB2E76E5ACB836A251E79404 primary - 7EC1417298041145E9B1A4C7B395C179 + 14D30697C5204FE013909BA0F029F93D primary - 8F17DD5BDDF65F3AB77F350BE14632BE + 4E3BBCA6078A6AAAD053C911572F0B0C primary - 99467F259B31FBA8DDB95086022B4977 + 5172ACAB7FEA22813859DC97CA0AA16F primary - 9CAAB2A1855182D992E2945796B03B4D + 5AF1C612F4CDA296FC4C82D9BD0BD25D primary - A59A93B402011A0E65D47D9CF441BB2B + 7EC1417298041145E9B1A4C7B395C179 primary - AC1712E3DDF09799E32C170FE229B203 + 868010619D7E6CBA5C6E6E2874668C85 primary - AC21AA5E85F7C4BF354E6D4D7FC2D0DF + 8698C4558AE758AD92477EC134E714F7 primary - B02222757DD07A46E150C0E11274C937 + 89C69EB624EC8137588D9568F2E11964 primary - B2619B2813D910DBC9FE9714E0788D55 + 8F17DD5BDDF65F3AB77F350BE14632BE primary - B65E98BA7CCF7BE04E8CAA4122F678BF + 99467F259B31FBA8DDB95086022B4977 primary - B7C99010DEE22AAAB76BCF07F093651A + 9CAAB2A1855182D992E2945796B03B4D primary - B8A49B21FD9EF99E936D68AE82846108 + AC09AA278A433796BC1633E8E9BAAF27 primary - C34A83566498361D749476BD0940597B + AE8AE78446997A62D5312585254CE95F primary - C55E46AC6A1E70A6AA25E306AE545375 + B626991E354736135B6D82B42FA9F8F1 primary - CD1B623325F2AC51DB2DCAB97D2AAF91 + C55E46AC6A1E70A6AA25E306AE545375 primary - D1DC35DB2C695031A72543555FB23729 + CB63EA71F76CF030DDDD92C2BA4420FB primary - D2EFA080A4B0D8B15AE902DB07F66CF1 + D1DC35DB2C695031A72543555FB23729 primary @@ -149,17 +232,17 @@ primary - E1451243CF8F8145D8DF8D29D338882D + DD5C1620C8612B5D6689899A770B8CFD primary - E298D507EEA3822434DCEEEC9B6AF9F0 + EF89A4DA92CC0D0F76CF983AB2A6F4F1 primary - EF89A4DA92CC0D0F76CF983AB2A6F4F1 + FDCC5252155A69655285D62D2A183655 primary diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme new file mode 100644 index 00000000..3c863761 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Alamofire-iOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Alamofire-iOS.xcscheme new file mode 100644 index 00000000..ce47d37c --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Alamofire-iOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Alamofire-watchOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Alamofire-watchOS.xcscheme new file mode 100644 index 00000000..67f43a94 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Alamofire-watchOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/AsyncSwift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/AsyncSwift.xcscheme new file mode 100644 index 00000000..13983d20 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/AsyncSwift.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/ChameleonFramework.xcscheme similarity index 91% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/ChameleonFramework.xcscheme index f8cfd484..5ffcdaf2 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/AKPickerView-Swift.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/ChameleonFramework.xcscheme @@ -14,10 +14,10 @@ buildForArchiving = "YES"> + BuildableName = 'ChameleonFramework.framework'> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme new file mode 100644 index 00000000..ad265d96 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/DGElasticPullToRefresh.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme new file mode 100644 index 00000000..8788d77f --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/DGRunkeeperSwitch.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/EFCircularSlider.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/EFCircularSlider.xcscheme new file mode 100644 index 00000000..a8fc0520 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/EFCircularSlider.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/AsyncSwift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/FSCalendar.xcscheme similarity index 91% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/AsyncSwift.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/FSCalendar.xcscheme index ddcc24b4..176d950b 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/AsyncSwift.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/FSCalendar.xcscheme @@ -14,10 +14,10 @@ buildForArchiving = "YES"> + BuildableName = 'FSCalendar.framework'> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Localize-Swift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme similarity index 91% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Localize-Swift.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme index 3f275ace..8816f041 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Localize-Swift.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/FontAwesomeKit.xcscheme @@ -14,10 +14,10 @@ buildForArchiving = "YES"> + BuildableName = 'FontAwesomeKit.framework'> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/INTULocationManager.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/INTULocationManager.xcscheme new file mode 100644 index 00000000..d6902f74 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/INTULocationManager.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Localize-Swift.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Localize-Swift.xcscheme new file mode 100644 index 00000000..67549ca0 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Localize-Swift.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/MRProgress.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/MRProgress.xcscheme new file mode 100644 index 00000000..707a8cee --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/MRProgress.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme new file mode 100644 index 00000000..c13bbc24 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/NVActivityIndicatorView.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Log.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Onboard.xcscheme similarity index 92% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Log.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Onboard.xcscheme index ab8e3e37..e6ca41ff 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Log.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Onboard.xcscheme @@ -14,10 +14,10 @@ buildForArchiving = "YES"> + BuildableName = 'Onboard.framework'> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/PermissionScope.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/PermissionScope.xcscheme new file mode 100644 index 00000000..503e58d9 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/PermissionScope.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Pods-tpg offline Watch Extension.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Pods-tpg offline Watch Extension.xcscheme new file mode 100644 index 00000000..25fe3e10 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Pods-tpg offline Watch Extension.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme new file mode 100644 index 00000000..b20bb647 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/Pods-tpg offline.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SCLAlertView.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SCLAlertView.xcscheme new file mode 100644 index 00000000..418e769f --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SCLAlertView.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Alamofire.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftDate.xcscheme similarity index 91% rename from iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Alamofire.xcscheme rename to iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftDate.xcscheme index c0e3115b..47cb9da9 100644 --- a/iOS/Pods/Pods.xcodeproj/xcuserdata/.xcuserdatad/xcschemes/Alamofire.xcscheme +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftDate.xcscheme @@ -14,10 +14,10 @@ buildForArchiving = "YES"> + BuildableName = 'SwiftDate.framework'> diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyBeaver.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyBeaver.xcscheme new file mode 100644 index 00000000..ea827cbf --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyBeaver.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyJSON-iOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyJSON-iOS.xcscheme new file mode 100644 index 00000000..bda897c1 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyJSON-iOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyJSON-watchOS.xcscheme b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyJSON-watchOS.xcscheme new file mode 100644 index 00000000..1d6d589e --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/SwiftyJSON-watchOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..9f86a892 --- /dev/null +++ b/iOS/Pods/Pods.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,242 @@ + + + + + SchemeUserState + + AKPickerView-Swift.xcscheme + + isShown + + + Alamofire-iOS.xcscheme + + isShown + + + Alamofire-watchOS.xcscheme + + isShown + + + AsyncSwift.xcscheme + + isShown + + + ChameleonFramework.xcscheme + + isShown + + + DGElasticPullToRefresh.xcscheme + + isShown + + + DGRunkeeperSwitch.xcscheme + + isShown + + + EFCircularSlider.xcscheme + + isShown + + + FSCalendar.xcscheme + + isShown + + + FontAwesomeKit.xcscheme + + isShown + + + INTULocationManager.xcscheme + + isShown + + + Localize-Swift.xcscheme + + isShown + + + MRProgress.xcscheme + + isShown + + + NVActivityIndicatorView.xcscheme + + isShown + + + Onboard.xcscheme + + isShown + + + PermissionScope.xcscheme + + isShown + + + Pods-tpg offline Watch Extension.xcscheme + + isShown + + + Pods-tpg offline.xcscheme + + isShown + + + SCLAlertView.xcscheme + + isShown + + + SwiftDate.xcscheme + + isShown + + + SwiftyBeaver.xcscheme + + isShown + + + SwiftyJSON-iOS.xcscheme + + isShown + + + SwiftyJSON-watchOS.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + 063E3C59C1B7382B70A98D5EF8052B8D + + primary + + + 115824B7CB2E76E5ACB836A251E79404 + + primary + + + 14D30697C5204FE013909BA0F029F93D + + primary + + + 4E3BBCA6078A6AAAD053C911572F0B0C + + primary + + + 5172ACAB7FEA22813859DC97CA0AA16F + + primary + + + 5AF1C612F4CDA296FC4C82D9BD0BD25D + + primary + + + 7EC1417298041145E9B1A4C7B395C179 + + primary + + + 868010619D7E6CBA5C6E6E2874668C85 + + primary + + + 8698C4558AE758AD92477EC134E714F7 + + primary + + + 89C69EB624EC8137588D9568F2E11964 + + primary + + + 8F17DD5BDDF65F3AB77F350BE14632BE + + primary + + + 99467F259B31FBA8DDB95086022B4977 + + primary + + + 9CAAB2A1855182D992E2945796B03B4D + + primary + + + AC09AA278A433796BC1633E8E9BAAF27 + + primary + + + AE8AE78446997A62D5312585254CE95F + + primary + + + B626991E354736135B6D82B42FA9F8F1 + + primary + + + C55E46AC6A1E70A6AA25E306AE545375 + + primary + + + CB63EA71F76CF030DDDD92C2BA4420FB + + primary + + + D1DC35DB2C695031A72543555FB23729 + + primary + + + D7FF48F3092783E4E42B336F0DEF2D1A + + primary + + + DD5C1620C8612B5D6689899A770B8CFD + + primary + + + EF89A4DA92CC0D0F76CF983AB2A6F4F1 + + primary + + + FDCC5252155A69655285D62D2A183655 + + primary + + + + + diff --git a/iOS/Pods/SCLAlertView/README.md b/iOS/Pods/SCLAlertView/README.md index d71b9cbb..5d365149 100644 --- a/iOS/Pods/SCLAlertView/README.md +++ b/iOS/Pods/SCLAlertView/README.md @@ -1,6 +1,9 @@ SCLAlertView =========== +[![Version](https://img.shields.io/cocoapods/v/SCLAlertView.svg?style=flat)](http://cocoadocs.org/docsets/SCLAlertView/) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) + Animated Alert View written in Swift, which can be used as a `UIAlertView` or `UIAlertController` replacement. Since `UIAlertView` is deprecated and `UIAlertController` only works on iOS 8.x or above, if you have a Swift project where you want to support iOS 7.x too, SCLAlertView is an ideal substitution. ![BackgroundImage](https://raw.githubusercontent.com/vikmeup/SCPopUpView/master/successScreenshot.png)_ @@ -230,6 +233,17 @@ enum SCLAlertViewStyle: Int { } ``` + +### Alert show animation Styles + +```swift +// Animation Styles +public enum SCLAnimationStyle { + case NoAnimation, TopToBottom, BottomToTop, LeftToRight, RightToLeft +} +``` + + Installation --- diff --git a/iOS/Pods/SCLAlertView/SCLAlertView/SCLAlertView.swift b/iOS/Pods/SCLAlertView/SCLAlertView/SCLAlertView.swift index 5db9f693..f4b8b14e 100644 --- a/iOS/Pods/SCLAlertView/SCLAlertView/SCLAlertView.swift +++ b/iOS/Pods/SCLAlertView/SCLAlertView/SCLAlertView.swift @@ -35,6 +35,11 @@ public enum SCLAlertViewStyle { } +// Animation Styles +public enum SCLAnimationStyle { + case NoAnimation, TopToBottom, BottomToTop, LeftToRight, RightToLeft +} + // Action Types public enum SCLActionType { case None, Selector, Closure @@ -517,47 +522,64 @@ public class SCLAlertView: UIViewController { } } + // showCustom(view, title, subTitle, UIColor, UIImage) + public func showCustom(title: String, subTitle: String, color: UIColor, icon: UIImage, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Success.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + + + var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0 + + color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) + + var colorAsUInt32 : UInt32 = 0 + colorAsUInt32 += UInt32(red * 255.0) << 16 + UInt32(green * 255.0) << 8 + UInt32(blue * 255.0) + + let colorAsUInt = UInt(colorAsUInt32) + + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Success, colorStyle: colorAsUInt, colorTextButton: colorTextButton, circleIconImage: icon, animationStyle: animationStyle) + } + // showSuccess(view, title, subTitle) - public func showSuccess(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Success.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Success, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showSuccess(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Success.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Success, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showError(view, title, subTitle) - public func showError(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Error.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Error, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showError(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Error.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Error, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showNotice(view, title, subTitle) - public func showNotice(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Notice.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Notice, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showNotice(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Notice.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Notice, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showWarning(view, title, subTitle) - public func showWarning(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Warning.defaultColorInt, colorTextButton: UInt=0x000000, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Warning, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showWarning(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Warning.defaultColorInt, colorTextButton: UInt=0x000000, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Warning, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showInfo(view, title, subTitle) - public func showInfo(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Info.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Info, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showInfo(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Info.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Info, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showWait(view, title, subTitle) - public func showWait(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt?=SCLAlertViewStyle.Wait.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Wait, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showWait(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt?=SCLAlertViewStyle.Wait.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Wait, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } - public func showEdit(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Edit.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Edit, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showEdit(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Edit.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Edit, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showTitle(view, title, subTitle, style) - public func showTitle(title: String, subTitle: String, style: SCLAlertViewStyle, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt?=0x000000, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { - return showTitle(title, subTitle: subTitle, duration:duration, completeText:closeButtonTitle, style: style, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage) + public func showTitle(title: String, subTitle: String, style: SCLAlertViewStyle, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt?=0x000000, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { + + return showTitle(title, subTitle: subTitle, duration:duration, completeText:closeButtonTitle, style: style, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage, animationStyle: animationStyle) } // showTitle(view, title, subTitle, duration, style) - public func showTitle(title: String, subTitle: String, duration: NSTimeInterval?, completeText: String?, style: SCLAlertViewStyle, colorStyle: UInt?=0x000000, colorTextButton: UInt?=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder { + public func showTitle(title: String, subTitle: String, duration: NSTimeInterval?, completeText: String?, style: SCLAlertViewStyle, colorStyle: UInt?=0x000000, colorTextButton: UInt?=0xFFFFFF, circleIconImage: UIImage? = nil, animationStyle: SCLAnimationStyle = .TopToBottom) -> SCLAlertViewResponder { selfReference = self view.alpha = 0 let rv = UIApplication.sharedApplication().keyWindow! as UIWindow @@ -686,17 +708,52 @@ public class SCLAlertView: UIViewController { } // Animate in the alert view - self.baseView.frame.origin.y = -400 - UIView.animateWithDuration(0.2, animations: { - self.baseView.center.y = rv.center.y + 15 - self.view.alpha = 1 + self.showAnimation(animationStyle) + + // Chainable objects + return SCLAlertViewResponder(alertview: self) + } + + // Show animation in the alert view + private func showAnimation(animationStyle: SCLAnimationStyle = .TopToBottom, animationStartOffset: CGFloat = -400.0, boundingAnimationOffset: CGFloat = 15.0, animationDuration: NSTimeInterval = 0.2) { + + let rv = UIApplication.sharedApplication().keyWindow! as UIWindow + var animationStartOrigin = self.baseView.frame.origin + var animationCenter : CGPoint = rv.center + + switch animationStyle { + + case .NoAnimation: + self.view.alpha = 1.0 + return; + + case .TopToBottom: + animationStartOrigin = CGPoint(x: animationStartOrigin.x, y: self.baseView.frame.origin.y + animationStartOffset) + animationCenter = CGPoint(x: animationCenter.x, y: animationCenter.y + boundingAnimationOffset) + + case .BottomToTop: + animationStartOrigin = CGPoint(x: animationStartOrigin.x, y: self.baseView.frame.origin.y - animationStartOffset) + animationCenter = CGPoint(x: animationCenter.x, y: animationCenter.y - boundingAnimationOffset) + + case .LeftToRight: + animationStartOrigin = CGPoint(x: self.baseView.frame.origin.x + animationStartOffset, y: animationStartOrigin.y) + animationCenter = CGPoint(x: animationCenter.x + boundingAnimationOffset, y: animationCenter.y) + + case .RightToLeft: + animationStartOrigin = CGPoint(x: self.baseView.frame.origin.x - animationStartOffset, y: animationStartOrigin.y) + animationCenter = CGPoint(x: animationCenter.x - boundingAnimationOffset, y: animationCenter.y) + } + + self.baseView.frame.origin = animationStartOrigin + UIView.animateWithDuration(animationDuration, animations: { + self.view.alpha = 1.0 + self.baseView.center = animationCenter }, completion: { finished in - UIView.animateWithDuration(0.2, animations: { + UIView.animateWithDuration(animationDuration, animations: { + self.view.alpha = 1.0 self.baseView.center = rv.center }) }) - // Chainable objects - return SCLAlertViewResponder(alertview: self) } public func updateDurationStatus() { diff --git a/iOS/Pods/SwiftInAppPurchase/LICENSE b/iOS/Pods/SwiftInAppPurchase/LICENSE deleted file mode 100644 index 70fbf332..00000000 --- a/iOS/Pods/SwiftInAppPurchase/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -SwiftInAppPurchase is licensed under the Apache License, Version 2.0. - -Copyright (c) 2015 Rawd - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. diff --git a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/PaymentRequestHandler.swift b/iOS/Pods/SwiftInAppPurchase/Pod/Classes/PaymentRequestHandler.swift deleted file mode 100644 index 38087667..00000000 --- a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/PaymentRequestHandler.swift +++ /dev/null @@ -1,108 +0,0 @@ -// -// PaymentRequestHandler.swift -// IAPMaster -// -// Created by Suraphan on 11/30/2558 BE. -// Copyright © 2558 irawd. All rights reserved. -// - - -import StoreKit - -public enum TransactionResult { - case Purchased(productId: String,transaction:SKPaymentTransaction,paymentQueue:SKPaymentQueue) - case Restored(productId: String,transaction:SKPaymentTransaction,paymentQueue:SKPaymentQueue) - case NothingToDo - case Failed(error: NSError) -} -public typealias AddPaymentCallback = (result: TransactionResult) -> () - -public class PaymentRequestHandler: NSObject,SKPaymentTransactionObserver { - - - private var addPaymentCallback: AddPaymentCallback? - private var incompleteTransaction : [SKPaymentTransaction] = [] - override init() { - super.init() - SKPaymentQueue.defaultQueue().addTransactionObserver(self) - } - deinit { - SKPaymentQueue.defaultQueue().removeTransactionObserver(self) - } - - func addPayment(product: SKProduct,userIdentifier:String?, addPaymentCallback: AddPaymentCallback){ - - self.addPaymentCallback = addPaymentCallback - - let payment = SKMutablePayment(product: product) - if userIdentifier != nil { - payment.applicationUsername = userIdentifier! - } - SKPaymentQueue.defaultQueue().addPayment(payment) - } - - func restoreTransaction(userIdentifier:String?,addPaymentCallback: AddPaymentCallback){ - - self.addPaymentCallback = addPaymentCallback - if userIdentifier != nil { - SKPaymentQueue.defaultQueue().restoreCompletedTransactionsWithApplicationUsername(userIdentifier) - }else{ - SKPaymentQueue.defaultQueue().restoreCompletedTransactions() - } - - } - public func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]){ - - for transaction in transactions { - switch transaction.transactionState { - case .Purchased: - if (addPaymentCallback != nil){ - addPaymentCallback!(result:.Purchased(productId: transaction.payment.productIdentifier, transaction: transaction, paymentQueue: queue)) - }else{ - incompleteTransaction.append(transaction) - } - - case .Failed: - if (addPaymentCallback != nil){ - addPaymentCallback!(result:.Failed(error: transaction.error!)) - } - queue.finishTransaction(transaction) - - case .Restored: - if (addPaymentCallback != nil){ - addPaymentCallback!(result:.Restored(productId: transaction.payment.productIdentifier, transaction: transaction, paymentQueue: queue)) - }else{ - incompleteTransaction.append(transaction) - } - - case .Purchasing: - // In progress: do nothing - break - case .Deferred: - break - } - - } - } - - - func checkIncompleteTransaction(addPaymentCallback: AddPaymentCallback){ - - self.addPaymentCallback = addPaymentCallback - let queue = SKPaymentQueue.defaultQueue() - for transaction in self.incompleteTransaction { - - switch transaction.transactionState { - case .Purchased: - addPaymentCallback(result:.Purchased(productId: transaction.payment.productIdentifier, transaction: transaction, paymentQueue: queue)) - - case .Restored: - addPaymentCallback(result:.Restored(productId: transaction.payment.productIdentifier, transaction: transaction, paymentQueue: queue)) - - default: - break - } - } - self.incompleteTransaction.removeAll() - } -} diff --git a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/ProductRequestHandler.swift b/iOS/Pods/SwiftInAppPurchase/Pod/Classes/ProductRequestHandler.swift deleted file mode 100644 index 5a99abe6..00000000 --- a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/ProductRequestHandler.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// ProductRequestHandler.swift -// IAPMaster -// -// Created by Suraphan on 11/30/2558 BE. -// Copyright © 2558 irawd. All rights reserved. -// -import StoreKit - -public typealias RequestProductCallback = (products: [SKProduct]?,invalidIdentifiers:[String]?,error:NSError?) -> () - -public class ProductRequestHandler: NSObject,SKProductsRequestDelegate { - - private var requestCallback: RequestProductCallback? - var products: [String: SKProduct] = [:] - - override init() { - super.init() - } - deinit { - - } - func addProduct(product: SKProduct) { - products[product.productIdentifier] = product - } - - func requestProduc(productIds: Set, requestCallback: RequestProductCallback){ - self.requestCallback = requestCallback - let productRequest = SKProductsRequest(productIdentifiers: productIds) - productRequest.delegate = self - productRequest.start() - } - // MARK: SKProductsRequestDelegate - public func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) { - - for product in response.products{ - addProduct(product) - } - requestCallback!(products: response.products, invalidIdentifiers: response.invalidProductIdentifiers, error: nil) - } - - public func requestDidFinish(request: SKRequest) { - print(request) - } - public func request(request: SKRequest, didFailWithError error: NSError) { - requestCallback!(products: nil, invalidIdentifiers: nil, error: error) - } - -} diff --git a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/ReceiptRequestHandler.swift b/iOS/Pods/SwiftInAppPurchase/Pod/Classes/ReceiptRequestHandler.swift deleted file mode 100644 index 30e94430..00000000 --- a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/ReceiptRequestHandler.swift +++ /dev/null @@ -1,105 +0,0 @@ -// -// ReceiptRequestHandler.swift -// IAPMaster -// -// Created by Suraphan on 12/2/2558 BE. -// Copyright © 2558 irawd. All rights reserved. -// -import StoreKit - -public typealias RequestReceiptCallback = (error:NSError?) -> () -public typealias ReceiptVerifyCallback = (receipt:NSDictionary?,error:NSError?) -> () - -let productionVerifyURL = "http://buy.itunes.apple.com/verifyReceipt" -let sandboxVerifyURL = "https://sandbox.itunes.apple.com/verifyReceipt" - -public class ReceiptRequestHandler: NSObject ,SKRequestDelegate{ - - private var requestCallback: RequestReceiptCallback? - private var receiptVerifyCallback: ReceiptVerifyCallback? - var isProduction:Bool - - override init() { - isProduction = false - super.init() - - } - deinit { - - } - func receiptURL() -> NSURL { - return NSBundle.mainBundle().appStoreReceiptURL! - } - - func refreshReceipt(requestCallback: RequestReceiptCallback){ - self.requestCallback = requestCallback - let receiptRequest = SKReceiptRefreshRequest.init(receiptProperties: nil) - receiptRequest.delegate = self - receiptRequest.start() - } - - public func requestDidFinish(request: SKRequest) { - requestCallback!(error: nil) - } - public func request(request: SKRequest, didFailWithError error: NSError) { - requestCallback!(error: error) - } - - func verifyReceipt(autoRenewableSubscriptionsPassword:String?,receiptVerifyCallback:ReceiptVerifyCallback){ - self.receiptVerifyCallback = receiptVerifyCallback - - let session = NSURLSession.sharedSession() - let receipt = NSData.init(contentsOfURL: self.receiptURL()) - - let requestContents :NSMutableDictionary = [ "receipt-data" : (receipt?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)))!] - - if (autoRenewableSubscriptionsPassword != nil) { - requestContents.setValue(autoRenewableSubscriptionsPassword, forKey: "password") - } - - let storeURL = NSURL.init(string: isProduction ? productionVerifyURL:sandboxVerifyURL) - - let storeRequest = NSMutableURLRequest.init(URL: storeURL!) - - do { - storeRequest.HTTPBody = try NSJSONSerialization.dataWithJSONObject(requestContents, options: []) - } catch { - - print(error) - receiptVerifyCallback(receipt: nil, error: NSError.init(domain: "JsonError", code: 0, userInfo: nil)) - return - } - - storeRequest.HTTPMethod = "POST" - - - let task = session.dataTaskWithRequest(storeRequest, completionHandler: {data, response, error -> Void in - - guard error == nil else { return } - let json: NSDictionary? - do { - json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary - } catch let dataError { - print(dataError) - receiptVerifyCallback(receipt: nil, error: NSError.init(domain: "JsonError", code: 0, userInfo: nil)) - return - } - - if let parseJSON = json { - let success = parseJSON["success"] as? Int - print("Succes: \(success)") - receiptVerifyCallback(receipt: parseJSON, error: nil) - - } - else { - let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) - print("Error could not parse JSON: \(jsonStr)") - - receiptVerifyCallback(receipt: nil, error: error) - } - - }) - - task.resume() - } -} diff --git a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/SwiftInAppPurchase.swift b/iOS/Pods/SwiftInAppPurchase/Pod/Classes/SwiftInAppPurchase.swift deleted file mode 100644 index 0e3e1ff9..00000000 --- a/iOS/Pods/SwiftInAppPurchase/Pod/Classes/SwiftInAppPurchase.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// SwiftInAppPurchase.swift -// Pods -// -// Created by Suraphan on 12/13/2558 BE. -// -// - -import Foundation -import StoreKit - -public class SwiftInAppPurchase: NSObject { - - public static let sharedInstance = SwiftInAppPurchase() - - public let productRequestHandler:ProductRequestHandler - public let paymentRequestHandler:PaymentRequestHandler - public let receiptRequestHandler:ReceiptRequestHandler - - override init() { - self.productRequestHandler = ProductRequestHandler.init() - self.paymentRequestHandler = PaymentRequestHandler.init() - self.receiptRequestHandler = ReceiptRequestHandler.init() - super.init() - } - - deinit{ - } - public func setProductionMode(isProduction:Bool){ - self.receiptRequestHandler.isProduction = isProduction - } - public func canMakePayments() -> Bool { - return SKPaymentQueue.canMakePayments() - } - public func receiptURL() -> NSURL { - return self.receiptRequestHandler.receiptURL() - } - - // MARK: - Product - public func productForIdentifier(productIdentifier:String) -> SKProduct{ - return self.productRequestHandler.products[productIdentifier]! - } - public func requestProducts(productIDS:Set,completion:RequestProductCallback){ - self.productRequestHandler.requestProduc(productIDS, requestCallback: completion) - } - // MARK: - Purchase - public func addPayment(productIDS: String,userIdentifier:String?, addPaymentCallback: AddPaymentCallback){ - let product = self.productRequestHandler.products[productIDS] - if product != nil { - self.paymentRequestHandler.addPayment(product!, userIdentifier: userIdentifier, addPaymentCallback: addPaymentCallback) - }else{ - addPaymentCallback(result:.Failed(error: NSError.init(domain: "AddPayment Unknow Product identifier", code: 0, userInfo: nil))) - } - } - // MARK: - Restore - public func restoreTransaction(userIdentifier:String?,addPaymentCallback: AddPaymentCallback){ - self.paymentRequestHandler.restoreTransaction(userIdentifier, addPaymentCallback: addPaymentCallback) - } - public func checkIncompleteTransaction(addPaymentCallback: AddPaymentCallback){ - self.paymentRequestHandler.checkIncompleteTransaction(addPaymentCallback) - } - // MARK: - Receipt - public func refreshReceipt(requestCallback: RequestReceiptCallback){ - self.receiptRequestHandler.refreshReceipt(requestCallback) - } - public func verifyReceipt(autoRenewableSubscriptionsPassword:String?,receiptVerifyCallback:ReceiptVerifyCallback){ - self.receiptRequestHandler.verifyReceipt(autoRenewableSubscriptionsPassword, receiptVerifyCallback: receiptVerifyCallback) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftInAppPurchase/README.md b/iOS/Pods/SwiftInAppPurchase/README.md deleted file mode 100644 index b15aeff5..00000000 --- a/iOS/Pods/SwiftInAppPurchase/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# SwiftInAppPurchase - -[![CI Status](http://img.shields.io/travis/Rawd/SwiftInAppPurchase.svg?style=flat)](https://travis-ci.org/Rawd/SwiftInAppPurchase) -[![Version](https://img.shields.io/cocoapods/v/SwiftInAppPurchase.svg?style=flat)](http://cocoapods.org/pods/SwiftInAppPurchase) -[![License](https://img.shields.io/cocoapods/l/SwiftInAppPurchase.svg?style=flat)](http://cocoapods.org/pods/SwiftInAppPurchase) -[![Platform](https://img.shields.io/cocoapods/p/SwiftInAppPurchase.svg?style=flat)](http://cocoapods.org/pods/SwiftInAppPurchase) - -## Usage - -To run the example project, clone the repo, and run `pod install` from the Example directory first. - -## Requirements - -## Installation - -SwiftInAppPurchase is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: - -```ruby -pod "SwiftInAppPurchase" -``` - -## Author - -Rawd, suraphan.d@gmail.com - -## License - -SwiftInAppPurchase is available under the Apache 2.0 license. See the LICENSE file for more info. - -##Production Mode - SwiftInAppPurchase.sharedInstance.setProductionMode(false) - -##Request Products - var productIden = Set() - productIden.insert("com.irawd.test.30d") - - let iap = SwiftInAppPurchase.sharedInstance - - iap.requestProducts(productIden) { (products, invalidIdentifiers, error) -> () in - - } - -##Purchase - let iap = SwiftInAppPurchase.sharedInstance - iap.addPayment("com.irawd.test.30d", userIdentifier: nil) { (result) -> () in - - switch result{ - case .Purchased(let productId,let transaction,let paymentQueue): - - paymentQueue.finishTransaction(transaction) - case .Failed(let error): - print(error) - default: - break - } - } - -##RefreshReceipt - let iap = SwiftInAppPurchase.sharedInstance - iap.refreshReceipt { (error) -> () in - print(error) - } -##VerifyReceipt - let iap = SwiftInAppPurchase.sharedInstance - iap.verifyReceipt(nil) { (receipt, error) -> () in - print(receipt) - print(error) - } -##Restore - let iap = SwiftInAppPurchase.sharedInstance - iap.restoreTransaction(nil) { (result) -> () in - switch result{ - case .Restored(let productId,let transaction,let paymentQueue) : - - paymentQueue.finishTransaction(transaction) - case .Failed(let error): - print(error) - - default: - break - } - } -##CheckIncompleteTransaction - let iap = SwiftInAppPurchase.sharedInstance - iap.checkIncompleteTransaction { (result) -> () in - switch result{ - case .Purchased(let productId,let transaction,let paymentQueue): - paymentQueue.finishTransaction(transaction) - case .Restored(let productId,let transaction,let paymentQueue) : - - paymentQueue.finishTransaction(transaction) - default: - break - } - } diff --git a/iOS/Pods/SwiftTweaks/README.md b/iOS/Pods/SwiftTweaks/README.md deleted file mode 100644 index 257c7b92..00000000 --- a/iOS/Pods/SwiftTweaks/README.md +++ /dev/null @@ -1,169 +0,0 @@ -# SwiftTweaks - -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Version](http://img.shields.io/cocoapods/v/SwiftTweaks.svg)](http://cocoapods.org/?q=SwiftTweaks) [![GitHub release](https://img.shields.io/github/release/Khan/SwiftTweaks.svg)](https://github.com/Khan/SwiftTweaks/releases) ![Swift 2.2.x](https://img.shields.io/badge/Swift-2.2.x-orange.svg) ![platforms](https://img.shields.io/badge/platforms-iOS%20-lightgrey.svg) [![Build Status](https://travis-ci.org/Khan/SwiftTweaks.svg?branch=master)](https://travis-ci.org/Khan/SwiftTweaks) - -Adjust your iOS app on the fly without needing to compile! -![Tweaks](https://github.com/Khan/SwiftTweaks/blob/master/Images/SwiftTweaks%20Overview.png?raw=true) - -Your users won’t see your animation study, Sketch comps, or prototypes. What they will see is the finished product - so it’s really important to make sure that your app feels right on a real device! - -Animations that look great on your laptop often feel too slow when in-hand. Layouts that looks perfect on a 27-inch display might be too cramped on a 4-inch device. Light gray text may look subtle in Sketch, but it’s downright illegible when you’re outside on a sunny day. - -These animation timings, font sizes, and color choices are all examples of “magic numbers” - the constants that give your app its usability and identity. The goal of SwiftTweaks: allow you to fine-tune these magic numbers in the debug builds of your Swift project, without having to wait for Xcode to rebuild the app. - -## Overview -Use a `Tweak` in place of a boolean, number, or color in your code. You can adjust that `Tweak` without having to recompile, which means you can play with animation timings, colors, and layouts without needing Xcode! - -Currently, you can tweak the following types: -- `Bool` -- `Int` -- `CGFloat` -- `Double` -- `UIColor` - -A `Tweak` looks like this: -```swift -public static let colorTint = Tweak("General", "Colors", "Tint", UIColor.blueColor()) -``` - -There are also helpful `TweakGroupTemplate` types, like this one for iOS spring animations: -```swift -public static let buttonAnimation = SpringAnimationTweakTemplate("Animation", "Button Animation") -``` - -There are templates for “basic” `UIView` animations, `UIEdgeInsets`, and best of all - you can create your own `TweakGroupTemplate` type and contribute ‘em back here! - -![Tweaks](https://github.com/Khan/SwiftTweaks/blob/master/Images/SwiftTweaks%20Demo.gif?raw=true) - -### Wait, what about [Facebook Tweaks](https://github.com/facebook/Tweaks)? -Good question! I’m glad you asked. **The whole reason SwiftTweaks exists is because we love the stuffing out of FBTweaks.** We’re long-time fans of FBTweaks in our Objective-C projects: Replace the magic numbers with an `FBTweak` macro, and you’re all set! You can leave an FBTweak macro in your production code, because it’s replaced at compile-time with the tweak’s default value. - -But Swift doesn’t support this macro-wizardry, so FBTweaks is burdensome to use in Swift code. Our app is nearly all Swift, so we wanted to see if we could make something that was a little easier! - -## Steps to Tweaking -There are three steps to add SwiftTweaks to your project: - -1. Create a `TweakLibraryType`, which contains a set of `Tweak`s and a `TweakStore` to persist them. -2. Reference that `TweakLibraryType` in your code to use a `Tweak`. -3. In your AppDelegate, make the `TweakWindow` the root view controller of your app (there are other options, but this is the most straightforward! More on that later.) - -Now build-and-run, then shake your phone to bring up the Tweaks UI! Adjust tweaks, and when you’re satisfied with what you’ve got, share your tweaks with others from within the Tweaks UI. - -### Step One: Make your TweakLibrary -A tweak library is responsible for listing out a bunch of `public static` tweaks, and building a `TweakStore`. A tweak library looks like this: - -```swift -public struct ExampleTweaks: TweakLibraryType { - public static let colorTint = Tweak("General", "Colors", "Tint", UIColor.blueColor()) - public static let marginHorizontal = Tweak("General", "Layout", "H. Margins", defaultValue: 15, min: 0) - public static let marginVertical = Tweak("General", "Layout", "V. Margins", defaultValue: 10, min: 0) - public static let featureFlagMainScreenHelperText = Tweak("Feature Flags", "Main Screen", "Show Body Text", true) - - public static let buttonAnimation = SpringAnimationTweakTemplate("Animation", "Button Animation") - - public static let defaultStore: TweakStore = { - let allTweaks: [TweakClusterType] = [colorTint, marginHorizontal, marginVertical, featureFlagMainScreenHelperText, buttonAnimation] - - // Since SwiftTweaks is a dynamic library, you'll need to determine whether tweaks are enabled. - // Try using the DEBUG flag (add "-D DEBUG" to "Other Swift Flags" in your project's Build Settings). - #if DEBUG - let tweaksEnabled: Bool = true - #else - let tweaksEnabled: Bool = false - #endif - - return TweakStore( - tweaks: allTweaks, - enabled: tweaksEnabled - ) - }() -} -``` - -Let’s break down what happened here: - - - We have four tweaks in `ExampleTweaks`: a tint color, two `CGFloat`s for layout, and a `Bool` that toggles an in-development feature. - - The compiler can get confused between `Int`, `CGFloat`, and `Double` - so you might find it necessary to tell the `Tweak` what type its `T` is - as we do here with our margin tweaks. - - We create a `defaultStore` by creating a `TweakStore`, which needs to know whether tweaks are `enabled`, and a list of all `tweaks`. - - The `enabled` flag on `TweakStore` exists so that `SwiftTweaks` isn’t accessible by your users in production. You can set it however you like; we enjoy using the `DEBUG` flag from our project’s Build Settings. - -### Step Two: Using Your TweakLibrary -To use a tweak, you replace a number or `UIColor`s in your code with a `Tweak` reference, like this: - -Here’s our original code: -```swift -button.tintColor = UIColor.greenColor() -``` - -**assign** returns the current value of the tweak: -```swift -button.tintColor = ExampleTweaks.assign(ExampleTweaks.colorTint) -``` -**bind** calls its closure immediately, and again each time the tweak changes: -```swift -ExampleTweaks.bind(ExampleTweaks.colorTint) { button.tintColor = $0 } -``` -**bindMultiple** calls its closure immediately, and again each time any of its tweaks change: -```swift -// A "multipleBind" is called initially, and each time _any_ of the included tweaks change: -let tweaksToWatch: [TweakType] = [ExampleTweaks.marginHorizontal, ExampleTweaks.marginVertical] -ExampleTweaks.bindMultiple(tweaksToWatch) { - let horizontal = ExampleTweaks.assign(ExampleTweaks.marginHorizontal) - let vertical = ExampleTweaks.assign(ExampleTweaks.marginVertical) - scrollView.contentInset = UIEdgeInsets(top: vertical, right: horizontal, bottom: vertical, left: horizontal) -} -``` - -For more examples, check out the example project’s `ViewController.swift` file - it’s got lots of different use cases. - -### Step Three: Set TweakWindow as your Root View Controller -By default, SwiftTweaks uses a shake gesture to bring up the UI, but you can also use a custom gesture if you prefer it! - -## Installation - -#### Carthage -To add `SwiftTweaks` to your application, add it to your `Cartfile`: - -``` -github "Khan/SwiftTweaks" ~> 1.0 -``` - -#### [CocoaPods](http://cocoapods.org/?q=SwiftTweaks) - -```ruby -pod 'SwiftTweaks', '~> 1.0' -``` - -## FAQ -#### Do I *have* to set TweakWindow as the root of my app? -Nope! Wherever/however you prefer, just create a `TweaksViewController` like so: - let tweaksVC = TweaksViewController(tweakStore: ExampleTweaks.defaultStore) - -#### Can I have multiple `TweakLibraryType`s in my app? -Sure! You’d initialize their `defaultStore`s with a unique `storeName` identifier, like so: - -```swift -public struct FirstTweaksLibrary: TweakLibraryType { - // ... - - public static let defaultStore: TweakStore = { - let allTweaks: [TweakClusterType] = //... - - return TweakStore( - tweaks: allTweaks, - storeName: "FirstTweaksLibrary", // Here's the identifier - enabled: tweaksEnabled - ) - }() -} -``` - -#### Why can’t any type be used for a `Tweak`? -While `Tweak` is generic, we have to restrict `T` to be `TweakableType` so that we can guarantee that each kind of `T` can be represented in our editing interface and persisted on disk. More types would be awesome, though! It’d be neat to support dictionaries, closures, strings, and other things. - -If you’d like to extend `TweakableType`, you’ll need to extend some internal components, like `TweakViewDataType`, `TweakDefaultData`, `TweakViewData`, and `TweakPersistency`. Feel free to open a pull request if you’d like to add a new type! - -#### How do I create a new TweakGroupTemplate? -Maybe you’re a different animation framework, or want a template for `CGRect` or something like that - great! As long as the tweakable “components” of your template conform to `TweakableType` then you’re all set. Create a new `TweakGroupTemplateType`, and take a look at the existing templates for implementation suggestions. (You’ll probably want to use `SignedNumberTweakDefaultParameters` too - they’re very helpful!) - -If you think your `TweakGroupTemplateType` would help out others, please make a pull request! diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/AnyTweak.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/AnyTweak.swift deleted file mode 100644 index 05f8680e..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/AnyTweak.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// AnyTweak.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/18/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// A type-erasure around Tweak, so we can collect them together in TweakLibraryType. -public struct AnyTweak: TweakType { - public let tweak: TweakType - - public var collectionName: String { return tweak.collectionName } - public var groupName: String { return tweak.groupName } - public var tweakName: String { return tweak.tweakName } - - public var tweakViewDataType: TweakViewDataType { return tweak.tweakViewDataType } - public var tweakDefaultData: TweakDefaultData { return tweak.tweakDefaultData } - - public init(tweak: TweakType) { - self.tweak = tweak.tweak - } -} - -/// When combined with AnyTweak, this provides our type-erasure around Tweak -public protocol TweakType: TweakClusterType { - var tweak: TweakType { get } - - var collectionName: String { get } - var groupName: String { get } - var tweakName: String { get } - - var tweakViewDataType: TweakViewDataType { get } - var tweakDefaultData: TweakDefaultData { get } -} - -extension TweakType { - var tweakIdentifier: String { - return "\(collectionName)\(TweakIdentifierSeparator)\(groupName)\(TweakIdentifierSeparator)\(tweakName)" - } -} - -extension AnyTweak: Hashable { - public var hashValue: Int { - return tweakIdentifier.hashValue - } -} - -public func ==(lhs: AnyTweak, rhs: AnyTweak) -> Bool { - return lhs.tweakIdentifier == rhs.tweakIdentifier -} - - -/// Extend AnyTweak to support identification in disk persistence -extension AnyTweak: TweakIdentifiable { - var persistenceIdentifier: String { return tweakIdentifier } -} - -/// Extend AnyTweak to support easy initialization of a TweakStore -extension AnyTweak: TweakClusterType { - public var tweakCluster: [AnyTweak] { return [self] } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/AppTheme.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/AppTheme.swift deleted file mode 100644 index 18eecd47..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/AppTheme.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// AppTheme.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/6/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - -/// A central "palette" so to help keep our design consistent. -internal struct AppTheme { - struct Colors { - private struct Palette { - static let whiteColor = UIColor.whiteColor() - static let blackColor = UIColor.blackColor() - static let grayColor = UIColor(hex: 0x8E8E93) - static let pageBackground1 = UIColor(hex: 0xF8F8F8) - - static let tintColor = UIColor(hex: 0x007AFF) - static let tintColorPressed = UIColor(hex: 0x084BC1) - static let controlGrayscale = UIColor.darkGrayColor() - - static let secondaryControl = UIColor(hex: 0xC8C7CC) - static let secondaryControlPressed = UIColor(hex: 0xAFAFB3) - - static let destructiveRed = UIColor(hex: 0xC90911) - } - - static let sectionHeaderTitleColor = Palette.grayColor - - static let textPrimary = Palette.blackColor - - static let controlTinted = Palette.tintColor - static let controlTintedPressed = Palette.tintColorPressed - static let controlDisabled = Palette.secondaryControl - static let controlDestructive = Palette.destructiveRed - static let controlSecondary = Palette.secondaryControl - static let controlSecondaryPressed = Palette.secondaryControlPressed - static let controlGrayscale = Palette.controlGrayscale - - static let floatingTweakGroupNavBG = Palette.pageBackground1 - - static let tableSeparator = Palette.secondaryControl - - static let debugRed = UIColor.redColor().colorWithAlphaComponent(0.3) - static let debugYellow = UIColor.yellowColor().colorWithAlphaComponent(0.3) - static let debugBlue = UIColor.blueColor().colorWithAlphaComponent(0.3) - - } - - struct Fonts { - static let sectionHeaderTitleFont: UIFont = .preferredFontForTextStyle(UIFontTextStyleBody) - } - - struct Shadows { - static let floatingShadowColor = Colors.Palette.blackColor.CGColor - static let floatingShadowOpacity: Float = 0.6 - static let floatingShadowOffset = CGSize(width: 0, height: 1) - static let floatingShadowRadius: CGFloat = 4 - - static let floatingNavShadowColor = floatingShadowColor - static let floatingNavShadowOpacity: Float = 0.1 - static let floatingNavShadowOffset = floatingShadowOffset - static let floatingNavShadowRadius: CGFloat = 0 - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/BasicAnimationTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/BasicAnimationTweakTemplate.swift deleted file mode 100644 index fa2cb06e..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/BasicAnimationTweakTemplate.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// BasicAnimationTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - -/// A shortcut to create a TweakGroup for a basic animateWithDuration(_:delay:options:animations:completion:) -/// Creates a collection of Tweak - public let delay: Tweak - - public var tweakCluster: [AnyTweak] { - return [duration, delay].map(AnyTweak.init) - } - - public init( - _ collectionName: String, - _ groupName: String, - duration: Double? = nil, - delay: Double? = nil - ) { - self.collectionName = collectionName - self.groupName = groupName - - self.duration = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Duration", - defaultParameters: BasicAnimationTweakTemplate.durationDefaults, - customDefaultValue: duration - ) - - self.delay = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Delay", - defaultParameters: BasicAnimationTweakTemplate.delayDefaults, - customDefaultValue: delay - ) - } - - private static let durationDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.3, - minValue: 0.0, - maxValue: 2.0, - stepSize: 0.01 - ) - - private static let delayDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.0, - minValue: 0.0, - maxValue: 5.0, - stepSize: 0.01 - ) -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/CALayer+ShadowTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/CALayer+ShadowTweakTemplate.swift deleted file mode 100644 index fb304ca3..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/CALayer+ShadowTweakTemplate.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// CALayer+ShadowTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 5/19/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - -public extension CALayer { - /// A shortcut for applying a ShadowTweakTemplate to a CALayer. - public func applyShadowTweakTemplate(tweakTemplate: ShadowTweakTemplate, fromTweakStore tweakStore: TweakStore) { - self.shadowColor = tweakStore.assign(tweakTemplate.color).CGColor - self.shadowOpacity = Float(tweakStore.assign(tweakTemplate.opacity)) - self.shadowOffset = CGSize(width: 0, height: tweakStore.assign(tweakTemplate.offsetY)) - self.shadowRadius = tweakStore.assign(tweakTemplate.radius) - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Clip.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/Clip.swift deleted file mode 100644 index e7fe2a6c..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/Clip.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// Clip.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/19/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// Clips a value to be between the given min / max values, if provided. -internal func clip(value: U, _ minimum: U?, _ maximum: U?) -> U { - var result = value - - if let minimum = minimum { - result = max(minimum, result) - } - - if let maximum = maximum { - result = min(maximum, result) - } - - return result -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/ColorRepresentation.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/ColorRepresentation.swift deleted file mode 100644 index 08b5e4e7..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/ColorRepresentation.swift +++ /dev/null @@ -1,243 +0,0 @@ -// -// ColorComponents.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/16/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal enum ColorRepresentationType: Int { - case Hex = 0 - case RGBa = 1 - case HSBa = 2 - - static let titles: [String] = ["Hex", "RGBa", "HSBa"] -} - -internal enum ColorRepresentation { - case Hex(hex: String, alpha: ColorComponentNumerical) - case RGBa(r: ColorComponentNumerical, g: ColorComponentNumerical, b: ColorComponentNumerical, a: ColorComponentNumerical) - case HSBa(h: ColorComponentNumerical, s: ColorComponentNumerical, b: ColorComponentNumerical, a: ColorComponentNumerical) -} - -extension ColorRepresentation { - var type: ColorRepresentationType { - switch self { - case .Hex: return .Hex - case .RGBa: return .RGBa - case .HSBa: return .HSBa - } - } - - var numberOfComponents: Int { - switch self { - case .Hex: return 2 - case .RGBa, .HSBa: return 4 - } - } - - var color: UIColor { - switch self { - case let .Hex(hex: hex, alpha: alpha): - return UIColor.colorWithHexString(hex)!.colorWithAlphaComponent(CGFloat(alpha.rawValue)) - case let .RGBa(r: r, g: g, b: b, a: a): - return UIColor(red: r.rawValue, green: g.rawValue, blue: b.rawValue, alpha: a.rawValue) - case let .HSBa(h: h, s: s, b: b, a: a): - return UIColor(hue: h.rawValue, saturation: s.rawValue, brightness: b.rawValue, alpha: a.rawValue) - } - } - - init(type: ColorRepresentationType, color: UIColor) { - switch type { - case .Hex: - var white: CGFloat = 0 - var alpha: CGFloat = 0 - color.getWhite(&white, alpha: &alpha) - - self = .Hex( - hex: color.hexString, - alpha: ColorComponentNumerical(type: .Alpha, rawValue: alpha) - ) - case .RGBa: - var red: CGFloat = 0 - var green: CGFloat = 0 - var blue: CGFloat = 0 - var alpha: CGFloat = 0 - color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) - - self = .RGBa( - r: ColorComponentNumerical(type: .Red, rawValue: red), - g: ColorComponentNumerical(type: .Green, rawValue: green), - b: ColorComponentNumerical(type: .Blue, rawValue: blue), - a: ColorComponentNumerical(type: .Alpha, rawValue: alpha) - ) - case .HSBa: - var hue: CGFloat = 0 - var saturation: CGFloat = 0 - var brightness: CGFloat = 0 - var alpha: CGFloat = 0 - color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) - - self = .HSBa( - h: ColorComponentNumerical(type: .Hue, rawValue: hue), - s: ColorComponentNumerical(type: .Saturation, rawValue: saturation), - b: ColorComponentNumerical(type: .Brightness, rawValue: brightness), - a: ColorComponentNumerical(type: .Alpha, rawValue: alpha) - ) - } - } - - subscript(index: Int) -> ColorComponent? { - switch self { - case let .Hex(hex: hex, alpha: alpha): - switch index { - case 0: return .HexComponent(hex) - case 1: return .NumericalComponent(alpha) - default: break - } - case let .RGBa(r: r, g: g, b: b, a: a): - switch index { - case 0: return .NumericalComponent(r) - case 1: return .NumericalComponent(g) - case 2: return .NumericalComponent(b) - case 3: return .NumericalComponent(a) - default: break - } - case let .HSBa(h: h, s: s, b: b, a: a): - switch index { - case 0: return .NumericalComponent(h) - case 1: return .NumericalComponent(s) - case 2: return .NumericalComponent(b) - case 3: return .NumericalComponent(a) - default: break - } - } - return nil - } -} - -/// Represents a component of a ColorRepresentation -internal enum ColorComponent { - case HexComponent(String) // e.g. #FFFFFF = white - case NumericalComponent(ColorComponentNumerical) // e.g. RGB, HSB, alpha - - var title: String { - switch self { - case .HexComponent: - return "Hex" - case .NumericalComponent(let colorComponentNumerical): - return colorComponentNumerical.title - } - } - - var numericType: ColorComponentNumericalType? { - switch self { - case .NumericalComponent(let numericComponent): - return numericComponent.type - case .HexComponent: - return nil - } - } - - var numericValue: ColorComponentNumerical? { - switch self { - case .NumericalComponent(let numericComponent): - return numericComponent - case .HexComponent: - return nil - } - } -} - -/// Represents an instance of a ColorComponent's numerical component. -internal struct ColorComponentNumerical { - let type: ColorComponentNumericalType - let value: Float - - var title: String { - return type.title - } - - var rawValue: CGFloat { - return CGFloat(value / type.maximumValue) - } - - init(type: ColorComponentNumericalType, rawValue: CGFloat) { - self.type = type - assert(0.0 <= rawValue && rawValue <= 1.0) - - self.value = Float(rawValue) * type.maximumValue - } - - init(type: ColorComponentNumericalType, value: Float) { - self.type = type - assert(type.minimumValue <= value && value <= type.maximumValue) - - self.value = value - } -} - -/// A list of the types of numerical color components, and describes their behavior. -internal enum ColorComponentNumericalType { - case Hue - case Saturation - case Brightness - - case Red - case Green - case Blue - - case Alpha - - var title: String { - switch self { - case .Hue: return "H" - case .Saturation: return "S" - case .Brightness: return "B" - - case .Red: return "R" - case .Green: return "G" - case .Blue: return "B" - - case .Alpha: return "A" - } - } - - var minimumValue: Float { - return 0 - } - - var maximumValue: Float { - switch self { - case .Hue: - return 360 - case .Saturation, .Brightness: - return 100 - case .Red, .Green, .Blue: - return 255 - case .Alpha: - return 1 - - } - } - - var roundsToInteger: Bool { - switch self { - case .Hue, .Saturation, .Brightness, .Red, .Green, .Blue: - return true - case .Alpha: - return false - } - } - - var tintColor: UIColor? { - switch self { - case .Red: return UIColor.redColor() - case .Green: return UIColor.greenColor() - case .Blue: return UIColor.blueColor() - case .Hue, .Saturation, .Brightness, .Alpha: return nil - } - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/EdgeInsetsTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/EdgeInsetsTweakTemplate.swift deleted file mode 100644 index 524a3936..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/EdgeInsetsTweakTemplate.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// EdgeInsetsTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - -/// A shortcut to create UIEdgeInsets using Tweaks. -public struct EdgeInsetsTweakTemplate: TweakGroupTemplateType { - public let collectionName: String - public let groupName: String - - public let top: Tweak - public let left: Tweak - public let bottom: Tweak - public let right: Tweak - - public var tweakCluster: [AnyTweak] { - return [top, left, bottom, right].map(AnyTweak.init) - } - - private static let edgeInsetDefaultParameters = SignedNumberTweakDefaultParameters(defaultValue: 0, minValue: 0, maxValue: nil, stepSize: 1.0) - - public init( - _ collectionName: String, - _ groupName: String, - defaultValue: UIEdgeInsets? = nil - ) { - self.collectionName = collectionName - self.groupName = groupName - - func createInsetTweak(tweakName: String, customDefaultValue: CGFloat?) -> Tweak { - return Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: tweakName, - defaultParameters: EdgeInsetsTweakTemplate.edgeInsetDefaultParameters, - customDefaultValue: customDefaultValue - ) - } - - self.top = createInsetTweak("Top", customDefaultValue: defaultValue?.top) - self.left = createInsetTweak("Left", customDefaultValue: defaultValue?.left) - self.bottom = createInsetTweak("Bottom", customDefaultValue: defaultValue?.bottom) - self.right = createInsetTweak("Right", customDefaultValue: defaultValue?.right) - } - - - -} - diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/FloatingTweakGroupViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/FloatingTweakGroupViewController.swift deleted file mode 100644 index 77a71f7a..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/FloatingTweakGroupViewController.swift +++ /dev/null @@ -1,359 +0,0 @@ -// -// FloatingTweakGroupViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/6/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - - -// MARK: - FloatingTweaksWindowPresenter - -internal protocol FloatingTweaksWindowPresenter { - func presentFloatingTweaksUIForTweakGroup(tweakGroup: TweakGroup) - func dismissFloatingTweaksUI() -} - -// MARK: - FloatingTweakGroupViewController - -/// A "floating" UI for a particular TweakGroup. -internal final class FloatingTweakGroupViewController: UIViewController { - var tweakGroup: TweakGroup? { - didSet { - titleLabel.text = tweakGroup?.title - self.tableView.reloadData() - } - } - - private let presenter: FloatingTweaksWindowPresenter - private let tweakStore: TweakStore - private let fullFrame: CGRect - - internal init(frame: CGRect, tweakStore: TweakStore, presenter: FloatingTweaksWindowPresenter) { - self.tweakStore = tweakStore - self.presenter = presenter - self.fullFrame = frame - - super.init(nibName: nil, bundle: nil) - - view.frame = frame - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - internal var minimizedFrameOriginX: CGFloat { - return fullFrame.size.width - FloatingTweakGroupViewController.minimizedWidth + FloatingTweakGroupViewController.margins * 2 - } - - override func viewDidLoad() { - super.viewDidLoad() - - installSubviews() - layoutSubviews() - } - - override func viewDidAppear(animated: Bool) { - super.viewDidAppear(animated) - - tableView.flashScrollIndicators() - } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - layoutSubviews() - } - - // MARK: Subviews - - internal static let height: CGFloat = 168 - internal static let margins: CGFloat = 5 - private static let minimizedWidth: CGFloat = 30 - - private static let closeButtonSize = CGSize(width: 42, height: 32) - private static let navBarHeight: CGFloat = 32 - private static let windowCornerRadius: CGFloat = 5 - - private let navBar: UIView = { - let view = UIView() - view.backgroundColor = AppTheme.Colors.floatingTweakGroupNavBG - - view.layer.shadowColor = AppTheme.Shadows.floatingNavShadowColor - view.layer.shadowOpacity = AppTheme.Shadows.floatingNavShadowOpacity - view.layer.shadowOffset = AppTheme.Shadows.floatingNavShadowOffset - view.layer.shadowRadius = AppTheme.Shadows.floatingNavShadowRadius - - return view - }() - - private let titleLabel: UILabel = { - let label = UILabel() - label.textColor = AppTheme.Colors.sectionHeaderTitleColor - label.font = AppTheme.Fonts.sectionHeaderTitleFont - return label - }() - - private let closeButton: UIButton = { - let button = UIButton() - let buttonImage = UIImage(swiftTweaksImage: .FloatingCloseButton).imageWithRenderingMode(.AlwaysTemplate) - button.setImage(buttonImage.imageTintedWithColor(AppTheme.Colors.controlTinted), forState: .Normal) - button.setImage(buttonImage.imageTintedWithColor(AppTheme.Colors.controlTintedPressed), forState: .Highlighted) - return button - }() - - private let tableView: UITableView = { - let tableView = UITableView(frame: .zero, style: .Plain) - tableView.backgroundColor = .clearColor() - tableView.registerClass(TweakTableCell.self, forCellReuseIdentifier: FloatingTweakGroupViewController.TweakTableViewCellIdentifer) - tableView.contentInset = UIEdgeInsets(top: FloatingTweakGroupViewController.navBarHeight, left: 0, bottom: 0, right: 0) - tableView.separatorColor = AppTheme.Colors.tableSeparator - return tableView - }() - - private let restoreButton: UIButton = { - let button = UIButton() - let buttonImage = UIImage(swiftTweaksImage: .FloatingMinimizedArrow).imageWithRenderingMode(.AlwaysTemplate) - button.setImage(buttonImage.imageTintedWithColor(AppTheme.Colors.controlSecondary), forState: .Normal) - button.setImage(buttonImage.imageTintedWithColor(AppTheme.Colors.controlSecondaryPressed), forState: .Highlighted) - button.hidden = true - return button - }() - - private let backgroundView = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) - - private func installSubviews() { - // Create the rounded corners and shadows - view.layer.cornerRadius = FloatingTweakGroupViewController.windowCornerRadius - view.layer.shadowColor = AppTheme.Shadows.floatingShadowColor - view.layer.shadowOffset = AppTheme.Shadows.floatingShadowOffset - view.layer.shadowRadius = AppTheme.Shadows.floatingShadowRadius - view.layer.shadowOpacity = AppTheme.Shadows.floatingShadowOpacity - - // Set up the blurry background - view.backgroundColor = .clearColor() - backgroundView.layer.cornerRadius = FloatingTweakGroupViewController.windowCornerRadius - backgroundView.clipsToBounds = true - self.view.addSubview(backgroundView) - - // The table view - tableView.delegate = self - tableView.dataSource = self - view.addSubview(tableView) - - // The "fake nav bar" - closeButton.addTarget(self, action: #selector(self.closeButtonTapped), forControlEvents: .TouchUpInside) - navBar.addSubview(closeButton) - navBar.addSubview(titleLabel) - view.addSubview(navBar) - - // The restore button - restoreButton.addTarget(self, action: #selector(self.restore), forControlEvents: .TouchUpInside) - view.addSubview(restoreButton) - - // The pan gesture recognizer - let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.moveWindowPanGestureRecognized(_:))) - panGestureRecognizer.delegate = self - view.addGestureRecognizer(panGestureRecognizer) - } - - private func layoutSubviews() { - backgroundView.frame = self.view.bounds - - tableView.frame = CGRect(origin: .zero, size: CGSize(width: view.bounds.width, height: FloatingTweakGroupViewController.height)) - - tableView.scrollIndicatorInsets = UIEdgeInsets( - top: tableView.contentInset.top, - left: 0, - bottom: 0, - right: 0 - ) - - navBar.frame = CGRect(origin: .zero, size: CGSize(width: view.bounds.width, height: FloatingTweakGroupViewController.navBarHeight)) - - // Round the top two corners of the nav bar - navBar.layer.mask = { - let maskPath = UIBezierPath( - roundedRect: view.bounds, - byRoundingCorners: [.TopLeft, .TopRight], - cornerRadii: CGSize( - width: FloatingTweakGroupViewController.windowCornerRadius, - height: FloatingTweakGroupViewController.windowCornerRadius - )).CGPath - let mask = CAShapeLayer() - mask.path = maskPath - return mask - }() - - closeButton.frame = CGRect(origin: .zero, size: FloatingTweakGroupViewController.closeButtonSize) - titleLabel.frame = CGRect( - origin: CGPoint( - x: closeButton.frame.width, - y: 0 - ), - size: CGSize( - width: view.bounds.width - closeButton.frame.width, - height: navBar.bounds.height - ) - ) - - restoreButton.frame = CGRect( - origin: .zero, - size: CGSize( - width: FloatingTweakGroupViewController.minimizedWidth, - height: view.bounds.height - ) - ) - } - - // MARK: Actions - - @objc private func closeButtonTapped() { - presenter.dismissFloatingTweaksUI() - } - - private static let gestureSpeedBreakpoint: CGFloat = 10 - private static let gesturePositionBreakpoint: CGFloat = 30 - - @objc private func moveWindowPanGestureRecognized(gestureRecognizer: UIPanGestureRecognizer) { - switch (gestureRecognizer.state) { - case .Began: - gestureRecognizer.setTranslation(self.view.frame.origin, inView: self.view) - case .Changed: - view.frame.origin.x = gestureRecognizer.translationInView(self.view).x - case .Possible, .Ended, .Cancelled, .Failed: - let gestureIsMovingToTheRight = (gestureRecognizer.velocityInView(nil).x > FloatingTweakGroupViewController.gestureSpeedBreakpoint) - let viewIsKindaNearTheRight = view.frame.origin.x > FloatingTweakGroupViewController.gesturePositionBreakpoint - if gestureIsMovingToTheRight && viewIsKindaNearTheRight { - minimize() - } else { - restore() - } - } - } - - private static let minimizeAnimationDuration: Double = 0.3 - private static let minimizeAnimationDamping: CGFloat = 0.8 - - private func minimize() { - // TODO map the continuous gesture's velocity into the animation. - self.restoreButton.alpha = 0 - self.restoreButton.hidden = false - - UIView.animateWithDuration( - FloatingTweakGroupViewController.minimizeAnimationDuration, - delay: 0, - usingSpringWithDamping: FloatingTweakGroupViewController.minimizeAnimationDamping, - initialSpringVelocity: 0, - options: .BeginFromCurrentState, - animations: { - self.view.frame.origin.x = self.minimizedFrameOriginX - self.tableView.alpha = 0 - self.navBar.alpha = 0 - self.restoreButton.alpha = 1 - }, - completion: nil - ) - } - - @objc private func restore() { - // TODO map the continuous gesture's velocity into the animation - - UIView.animateWithDuration( - FloatingTweakGroupViewController.minimizeAnimationDuration, - delay: 0, - usingSpringWithDamping: FloatingTweakGroupViewController.minimizeAnimationDamping, - initialSpringVelocity: 0, - options: .BeginFromCurrentState, - animations: { - self.view.frame.origin.x = self.fullFrame.origin.x - self.tableView.alpha = 1 - self.navBar.alpha = 1 - self.restoreButton.alpha = 0 - }, - completion: { _ in - self.restoreButton.hidden = true - } - ) - } -} - -extension FloatingTweakGroupViewController: UIGestureRecognizerDelegate { - @objc func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { - guard let hitView = gestureRecognizer.view?.hitTest(gestureRecognizer.locationInView(gestureRecognizer.view), withEvent: nil) else { - return true - } - - // We don't want to move the window if you're trying to drag a slider or a switch! - // But if you're dragging on the restore button, that's what we do want! - let gestureIsNotOnAControl = !hitView.isKindOfClass(UIControl.self) - let gestureIsOnTheRestoreButton = hitView == restoreButton - - return gestureIsNotOnAControl || gestureIsOnTheRestoreButton - } -} - -// MARK: Table View - -extension FloatingTweakGroupViewController: UITableViewDelegate { - @objc func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - guard let tweak = tweakAtIndexPath(indexPath) else { return } - switch tweak.tweakViewDataType { - case .UIColor: - let alert = UIAlertController(title: "Can't edit colors here.", message: "Sorry, haven't built out the floating UI for it yet!", preferredStyle: .Alert) - alert.addAction(UIAlertAction(title: "Dismiss", style: .Default, handler: nil)) - presentViewController(alert, animated: true, completion: nil) - case .Boolean, .Integer, .CGFloat, .Double: - break - } - } -} - -extension FloatingTweakGroupViewController: UITableViewDataSource { - private static let TweakTableViewCellIdentifer = "TweakTableViewCellIdentifer" - - func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return tweakGroup?.tweaks.count ?? 0 - } - - func numberOfSectionsInTableView(tableView: UITableView) -> Int { - return 1 - } - - func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - - let cell = tableView.dequeueReusableCellWithIdentifier(FloatingTweakGroupViewController.TweakTableViewCellIdentifer, forIndexPath: indexPath) as! TweakTableCell - - let tweak = tweakAtIndexPath(indexPath)! - - cell.textLabel?.text = tweak.tweakName - cell.isInFloatingTweakGroupWindow = true - cell.viewData = tweakStore.currentViewDataForTweak(tweak) - cell.delegate = self - cell.backgroundColor = .clearColor() - cell.contentView.backgroundColor = .clearColor() - - return cell - } - - private func tweakAtIndexPath(indexPath: NSIndexPath) -> AnyTweak? { - return tweakGroup?.sortedTweaks[indexPath.row] - } -} - -// MARK: TweakTableCellDelegate - -extension FloatingTweakGroupViewController: TweakTableCellDelegate { - func tweakCellDidChangeCurrentValue(tweakCell: TweakTableCell) { - if let - indexPath = tableView.indexPathForCell(tweakCell), - viewData = tweakCell.viewData, - tweak = tweakAtIndexPath(indexPath) - { - tweakStore.setValue(viewData, forTweak: tweak) - } - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/HashingUtilities.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/HashingUtilities.swift deleted file mode 100644 index 19055441..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/HashingUtilities.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// HashingUtilities.swift -// Khan Academy -// -// Created by Nacho Soto on 1/9/15. -// Copyright (c) 2015 Khan Academy. All rights reserved. -// - -import Foundation - -infix operator ^^^ { associativity left precedence 160 } - -public func ^^^(left: L, right: R) -> Int { - return hash(left, right) -} - -public func ^^^(left: Int, right: Int) -> Int { - return hash(left, right) -} - -public func ^^^(left: Int, right: R) -> Int { - return hash(left, right) -} - -public func ^^^(left: L, right: Int) -> Int { - return hash(right, left) -} - -public func ^^^(left: L, right: R?) -> Int { - return hash(left, right) -} - -public func ^^^(left: L?, right: R) -> Int { - return hash(right, left) -} - -public func ^^^(left: L, right: [R]) -> Int { - return hash(left, right) -} - -public func ^^^(left: [L], right: R) -> Int { - return hash(right, left) -} - -public func ^^^(left: L, right: [R]?) -> Int { - return hash(left, right) -} - -public func ^^^(left: [L]?, right: R) -> Int { - return hash(right, left) -} - - -// MARK: Private functions - -private func hash(left: L, _ right: R) -> Int { - return hash(left.hashValue, right) -} - -private func hash(left: L, _ right: R?) -> Int { - if let right = right { - return hash(left, right) - } else { - return left.hashValue - } -} - -private func hash(left: L, _ right: [R]) -> Int { - return hash(left, hash(right)) -} - -private func hash(left: L, _ right: [R]?) -> Int { - if let right = right { - return hash(left, right) - } else { - return left.hashValue - } -} - -private func hash(array: [T]) -> Int { - return array.reduce(0, combine: ^^^) -} - -private func hash(left: Int, _ right: R) -> Int { - return Int.addWithOverflow(Int.multiplyWithOverflow(left, HashingPrime).0, right.hashValue).0 -} - -private let HashingPrime: Int = 31 diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/HitTransparentWindow.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/HitTransparentWindow.swift deleted file mode 100644 index 34def18d..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/HitTransparentWindow.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// HitTransparentWindow.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/6/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - - -/// A UIWindow that ignores touch events outside of its bounds, allowing it to float over another interactive UI. -/// Enables SwiftTweaks' floating UI. -/// Inspired by the *super-handy* TunableSpec: https://github.com/kongtomorrow/TunableSpec/blob/master/KFTunableSpec.m -internal final class HitTransparentWindow: UIWindow { - override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? { - let result = super.hitTest(point, withEvent: event) - return (result == self) ? nil : result - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/Contents.json b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/Contents.json deleted file mode 100644 index 5004da64..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "disclosure-indicator.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "disclosure-indicator@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "disclosure-indicator@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator.png deleted file mode 100644 index e2da6de1..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator@2x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator@2x.png deleted file mode 100644 index cc6c227b..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator@2x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator@3x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator@3x.png deleted file mode 100644 index 9386b9b2..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/disclosure-indicator.imageset/disclosure-indicator@3x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton.png deleted file mode 100644 index 4825d1e6..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton@2x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton@2x.png deleted file mode 100644 index 93051bbd..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton@2x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton@3x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton@3x.png deleted file mode 100644 index 6f3a3948..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-plus-button.imageset/FloatingPlusButton@3x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close.png deleted file mode 100644 index 55702232..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close@2x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close@2x.png deleted file mode 100644 index 4e733701..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close@2x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close@3x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close@3x.png deleted file mode 100644 index 60a8bea0..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-close.imageset/floating-ui-close@3x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/Contents.json b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/Contents.json deleted file mode 100644 index de996775..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "floating-ui-minimized-arrow.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "floating-ui-minimized-arrow@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "floating-ui-minimized-arrow@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow.png deleted file mode 100644 index c3a99647..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow@2x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow@2x.png deleted file mode 100644 index 2c975313..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow@2x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow@3x.png b/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow@3x.png deleted file mode 100644 index 40e876fd..00000000 Binary files a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/floating-ui-minimized-arrow.imageset/floating-ui-minimized-arrow@3x.png and /dev/null differ diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Precision.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/Precision.swift deleted file mode 100644 index 03ec648f..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/Precision.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// Precision.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/17/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation -import CoreGraphics - -/// A measure of precision for decimal numbers. -/// The rawValue is the number of decimals, e.g. .Thousandth = 3 for 0.001 -internal enum PrecisionLevel: Int { - case Integer = 0 - case Tenth = 1 - case Hundredth = 2 - case Thousandth = 3 - - /// The smallest value for the precision - e.g. .Thousandth.multiplier = .001 - var precision: Double { - return pow(10, -Double(rawValue)) // e.g 10 ^ -3 = 0.001 - } - - /// The number of digits after the decimal for a given precision (e.g. .Thousandth.maximumFractionDigits = 3) - var maximumFractionDigits: Int { - return self.rawValue - } -} - -/// Rounds a value within a precision tolerance. -/// Helps to avoid "0.5999999999999" from showing up in yer Tweaks -internal protocol Roundable { - var doubleValue: Double { get } - - /// Returns the value, rounded to the given precision level. - func roundToNearest(precisionLevel: PrecisionLevel) -> Self -} - -extension Roundable { - func stringValueRoundedToNearest(precisionLevel: PrecisionLevel) -> String { - let numberFormatter = NSNumberFormatter() - numberFormatter.maximumFractionDigits = precisionLevel.maximumFractionDigits - return numberFormatter.stringFromNumber(doubleValue)! - } -} - -extension Double: Roundable { - var doubleValue: Double { return self } - - func roundToNearest(precisionLevel: PrecisionLevel) -> Double { - // I'd tried using Foundation's NSDecimalNumberHandler, but it wasn't working out as well! - // This is goofy, but it works: - // For .Thousandth, multiply times 1000, then round, then divide by 1000. Boom! Rounded to the required precision value. - return Double(round(doubleValue / precisionLevel.precision)) * precisionLevel.precision - } -} - -extension CGFloat: Roundable { - var doubleValue: Double { return Double(self) } - - func roundToNearest(precisionLevel: PrecisionLevel) -> CGFloat { - return CGFloat(Double(self).roundToNearest(precisionLevel)) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/ShadowTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/ShadowTweakTemplate.swift deleted file mode 100644 index e461a9d1..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/ShadowTweakTemplate.swift +++ /dev/null @@ -1,103 +0,0 @@ -// -// ShadowTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 5/19/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - -/// A TweakTemplate for easy adjustment of CALayer shadows. -/// Creates tweaks for color, opacity, offsetY, offsetX, and radius. -public struct ShadowTweakTemplate: TweakGroupTemplateType { - public let collectionName: String - public let groupName: String - - public let color: Tweak - public let opacity: Tweak - public let offsetY: Tweak - public let offsetX: Tweak - public let radius: Tweak - - public var tweakCluster: [AnyTweak] { - return [color, opacity, offsetY, radius].map(AnyTweak.init) - } - - public init( - _ collectionName: String, - _ groupName: String, - color: UIColor? = nil, - opacity: CGFloat? = nil, - offsetY: CGFloat? = nil, - offsetX: CGFloat? = nil, - radius: CGFloat? = nil - ) { - self.collectionName = collectionName - self.groupName = groupName - - self.color = Tweak(collectionName, groupName, "Color", color ?? ShadowTweakTemplate.colorDefault) - - self.opacity = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Opacity", - defaultParameters: ShadowTweakTemplate.opacityDefaults, - customDefaultValue: opacity - ) - - self.offsetY = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Offset Y", - defaultParameters: ShadowTweakTemplate.offsetYDefaults, - customDefaultValue: offsetY - ) - - self.offsetX = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Offset X", - defaultParameters: ShadowTweakTemplate.offsetXDefaults, - customDefaultValue: offsetX - ) - - self.radius = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Radius", - defaultParameters: ShadowTweakTemplate.radiusDefaults, - customDefaultValue: radius - ) - } - - private static let colorDefault = UIColor.blackColor() - - private static let opacityDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.2, - minValue: 0.0, - maxValue: 1.0, - stepSize: 0.05 - ) - - private static let offsetYDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0, - minValue: nil, - maxValue: nil, - stepSize: 0.5 - ) - - private static let offsetXDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0, - minValue: nil, - maxValue: nil, - stepSize: 0.5 - ) - - private static let radiusDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0, - minValue: 0, - maxValue: nil, - stepSize: 0.5 - ) -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/SignedNumberTweakDefaultParameters.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/SignedNumberTweakDefaultParameters.swift deleted file mode 100644 index a82d433b..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/SignedNumberTweakDefaultParameters.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// SignedNumberTweakDefaultParameters.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - -/// A struct you can use to represent default / min / max / stepSize values. -/// (You'll probably only want to use this in creating custom TweakGroupTemplateTypes) -public struct SignedNumberTweakDefaultParameters { - public let defaultValue: T - public let minValue: T? - public let maxValue: T? - public let stepSize: T? - - public init(defaultValue: T, minValue: T? = nil, maxValue: T? = nil, stepSize: T? = nil) { - self.defaultValue = defaultValue - self.minValue = minValue - self.maxValue = maxValue - self.stepSize = stepSize - } -} - -public extension Tweak where T: SignedNumberType { - init(collectionName: String, groupName: String, tweakName: String, defaultParameters: SignedNumberTweakDefaultParameters, customDefaultValue: T?) { - self.init( - collectionName: collectionName, - groupName: groupName, - tweakName: tweakName, - defaultValue: customDefaultValue ?? defaultParameters.defaultValue, - minimumValue: defaultParameters.minValue, - maximumValue: defaultParameters.maxValue, - stepSize: defaultParameters.stepSize - ) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/SpringAnimationTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/SpringAnimationTweakTemplate.swift deleted file mode 100644 index d28490f0..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/SpringAnimationTweakTemplate.swift +++ /dev/null @@ -1,100 +0,0 @@ -// -// SpringAnimationTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - - - -/// A shortcut to create a TweakGroup for an iOS-style spring animation. -/// Creates a collection of Tweak with sensible defaults for a spring animation. -/// You can optionally provide a default value for each parameter, but the min / max / stepSize are automatically created with sensible defaults. -public struct SpringAnimationTweakTemplate: TweakGroupTemplateType { - public let collectionName: String - public let groupName: String - - public let duration: Tweak - public let delay: Tweak - public let damping: Tweak - public let initialSpringVelocity: Tweak - - public var tweakCluster: [AnyTweak] { - return [duration, delay, damping, initialSpringVelocity].map(AnyTweak.init) - } - - public init( - _ collectionName: String, - _ groupName: String, - duration: Double? = nil, - delay: Double? = nil, - damping: CGFloat? = nil, - initialSpringVelocity: CGFloat? = nil - ) { - self.collectionName = collectionName - self.groupName = groupName - - self.duration = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Duration", - defaultParameters: SpringAnimationTweakTemplate.durationDefaults, - customDefaultValue: duration - ) - - self.delay = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Delay", - defaultParameters: SpringAnimationTweakTemplate.delayDefaults, - customDefaultValue: delay - ) - - self.damping = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Damping", - defaultParameters: SpringAnimationTweakTemplate.dampingDefaults, - customDefaultValue: damping - ) - - self.initialSpringVelocity = Tweak( - collectionName: collectionName, - groupName: groupName, - tweakName: "Initial V.", - defaultParameters: SpringAnimationTweakTemplate.initialSpringVelocityDefaults, - customDefaultValue: initialSpringVelocity - ) - } - - private static let durationDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.3, - minValue: 0.0, - maxValue: 2.0, - stepSize: 0.01 - ) - - private static let delayDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.0, - minValue: 0.0, - maxValue: 5.0, - stepSize: 0.01 - ) - - private static let dampingDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.8, - minValue: 0.0, - maxValue: 1.0, - stepSize: 0.01 - ) - - private static let initialSpringVelocityDefaults = SignedNumberTweakDefaultParameters( - defaultValue: 0.0, - minValue: nil, - maxValue: nil, - stepSize: 0.01 - ) -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Tweak.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/Tweak.swift deleted file mode 100644 index 0c1ed828..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/Tweak.swift +++ /dev/null @@ -1,137 +0,0 @@ -// -// Tweak.swift -// KATweak -// -// Created by Bryan Clark on 11/4/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation -import CoreGraphics -import UIKit - -/// Tweaks let you adjust things on the fly. -/// Because each T needs a UI component, we have to restrict what T can be - hence T: TweakableType. -/// If T: SignedNumberType, you can declare a min / max / stepSize for a Tweak. -public struct Tweak { - public let collectionName: String - public let groupName: String - public let tweakName: String - internal let defaultValue: T - internal let minimumValue: T? // Only supported for T: SignedNumberType - internal let maximumValue: T? // Only supported for T: SignedNumberType - internal let stepSize: T? // Only supported for T: SignedNumberType - - internal init(collectionName: String, groupName: String, tweakName: String, defaultValue: T, minimumValue: T? = nil, maximumValue: T? = nil, stepSize: T? = nil) { - - [collectionName, groupName, tweakName].forEach { - if $0.containsString(TweakIdentifierSeparator) { - assertionFailure("The substring `\(TweakIdentifierSeparator)` can't be used in a tweak name, group name, or collection name.") - } - } - - self.collectionName = collectionName - self.groupName = groupName - self.tweakName = tweakName - self.defaultValue = defaultValue - self.minimumValue = minimumValue - self.maximumValue = maximumValue - self.stepSize = stepSize - } -} - -internal let TweakIdentifierSeparator = "|" - -extension Tweak { - public init(_ collectionName: String, _ groupName: String, _ tweakName: String, _ defaultValue: T) { - self.init( - collectionName: collectionName, - groupName: groupName, - tweakName: tweakName, - defaultValue: defaultValue - ) - } -} - -extension Tweak where T: SignedNumberType { - /// Creates a Tweak where T: SignedNumberType - /// You can optionally provide a min / max / stepSize to restrict the bounds and behavior of a tweak. - /// The step size is "how much does the value change when I tap the UIStepper" - public init(_ collectionName: String, _ groupName: String, _ tweakName: String, defaultValue: T, min minimumValue: T? = nil, max maximumValue: T? = nil, stepSize: T? = nil) { - - // Assert that the tweak's defaultValue is between its min and max (if they exist) - if clip(defaultValue, minimumValue, maximumValue) != defaultValue { - assertionFailure("A tweak's default value must be between its min and max. Your tweak \"\(tweakName)\" doesn't meet this requirement.") - } - - self.init( - collectionName: collectionName, - groupName: groupName, - tweakName: tweakName, - defaultValue: defaultValue, - minimumValue: minimumValue, - maximumValue: maximumValue, - stepSize: stepSize - ) - } -} - -extension Tweak: TweakType { - public var tweak: TweakType { - return self - } - - public var tweakDefaultData: TweakDefaultData { - switch T.tweakViewDataType { - case .Boolean: - return .Boolean(defaultValue: (defaultValue as! Bool)) - case .Integer: - return .Integer( - defaultValue: defaultValue as! Int, - min: minimumValue as? Int, - max: maximumValue as? Int, - stepSize: stepSize as? Int - ) - case .CGFloat: - return .Float( - defaultValue: defaultValue as! CGFloat, - min: minimumValue as? CGFloat, - max: maximumValue as? CGFloat, - stepSize: stepSize as? CGFloat - ) - case .Double: - return .DoubleTweak( - defaultValue: defaultValue as! Double, - min: minimumValue as? Double, - max: maximumValue as? Double, - stepSize: stepSize as? Double - ) - case .UIColor: - return .Color(defaultValue: defaultValue as! UIColor) - } - } - - public var tweakViewDataType: TweakViewDataType { - return T.tweakViewDataType - } -} - -extension Tweak: Hashable { - public var hashValue: Int { - return tweakIdentifier.hashValue - } -} - -public func ==(lhs: Tweak, rhs: Tweak) -> Bool { - return lhs.tweakIdentifier == rhs.tweakIdentifier -} - -/// Extend Tweak to support identification in bindings -extension Tweak: TweakIdentifiable { - var persistenceIdentifier: String { return tweakIdentifier } -} - -/// Extend Tweak to support easy initialization of a TweakStore -extension Tweak: TweakClusterType { - public var tweakCluster: [AnyTweak] { return [AnyTweak.init(tweak: self)] } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakBackup.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakBackup.swift deleted file mode 100644 index c31a9093..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakBackup.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// TweakBackup.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/20/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// A "save point" for a given TweakStore. While it's not yet implemented, here's the gist: -/// 1. You should be able to create "backups" of your Tweaks, to encourage experimentation without having to destroy your existing modifications. -/// 2. You should be able to load another person's Backup into your Tweaks - hence the representation as plain text. -/// 3. The backup should be human-readable - preferably it's just the same text that we use when we email somebody. -/// 4. Favor legible backups over having it be "perfect" - the process of parsing a TweakBackup should be forgiving, but if a the parser fails to recognize a Tweak because of a typo or something, that's ¯\_(ツ)_/¯. -internal struct TweakBackup { - let text: String - - init(text: String) { - self.text = text - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakBinding.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakBinding.swift deleted file mode 100644 index 5e80ff93..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakBinding.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// TweakBinding.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/17/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// Represents a Tweak and a closure that should be run whenever the Tweak changes. -internal struct TweakBinding: TweakBindingType{ - let tweak: Tweak - let binding: (T) -> Void - - init(tweak: Tweak, binding: (T) -> Void) { - self.tweak = tweak - self.binding = binding - } - - func applyBindingWithValue(value: TweakableType) { - switch value.dynamicType.tweakViewDataType { - case .Boolean, .Integer, .CGFloat, .Double, .UIColor: - binding(value as! T) - } - } -} - -// A type-erasure around TweakBinding, so we can gather them together in TweakStore.tweakBindings -internal struct AnyTweakBinding: TweakBindingType { - private let tweakBinding: TweakBindingType - - init(tweakBinding: TweakBindingType) { - self.tweakBinding = tweakBinding - } - - func applyBindingWithValue(value: TweakableType) { - tweakBinding.applyBindingWithValue(value) - } -} - -// When combined with AnyTweakBinding, this provides our type-erasure around TweakBinding -internal protocol TweakBindingType { - func applyBindingWithValue(value: TweakableType) -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakClusterType.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakClusterType.swift deleted file mode 100644 index 52e35d8a..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakClusterType.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// TweakClusterType.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - -/// This protocol allows for easy initialization of TweakStore. -/// It allows you to combine one-off Tweak's with TweakGroupTemplates into a single array without hassle. -/// (For example, a single Tweak can conform by returning itself wrapped in an array!) -public protocol TweakClusterType { - var tweakCluster: [AnyTweak] { get } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakCollection.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakCollection.swift deleted file mode 100644 index 106e6f20..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakCollection.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// TweakCollection.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/10/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// A collection of TweakGroups; used in the root level of the Tweaks UI. -internal struct TweakCollection { - let title: String - var tweakGroups: [String: TweakGroup] = [:] - - init(title: String) { - self.title = title - } -} - -extension TweakCollection { - /// The child TweakGroups, sorted alphabetically. - internal var sortedTweakGroups: [TweakGroup] { - return tweakGroups - .sort { $0.0 < $1.0 } - .map { return $0.1 } - } - - /// The total number of Tweaks in a TweakCollection. - internal var numberOfTweaks: Int { - return sortedTweakGroups.reduce(0) { $0 + $1.sortedTweaks.count } - } - - /// A flat list of all the tweaks in a TweakCollection. - /// Used for sharing out the contents of a TweakStore. - internal var allTweaks: [AnyTweak] { - return sortedTweakGroups.reduce([]) { - $0 + $1.sortedTweaks - } - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakCollectionViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakCollectionViewController.swift deleted file mode 100644 index 1e181e7e..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakCollectionViewController.swift +++ /dev/null @@ -1,238 +0,0 @@ -// -// TweakCollectionViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/10/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal protocol TweakCollectionViewControllerDelegate { - func tweakCollectionViewControllerDidPressDismissButton(tweakCollectionViewController: TweakCollectionViewController) - func tweakCollectionViewController(tweakCollectionViewController: TweakCollectionViewController, didTapFloatingTweakGroupButtonForTweakGroup tweakGroup: TweakGroup) -} - -/// Displays the contents of a TweakCollection in a table - each child TweakGroup gets a section, each Tweak gets a cell. -internal final class TweakCollectionViewController: UIViewController { - private let tweakCollection: TweakCollection - private let tweakStore: TweakStore - - private let delegate: TweakCollectionViewControllerDelegate - - private let tableView: UITableView = { - let tableView = UITableView(frame: CGRectZero, style: .Grouped) - tableView.keyboardDismissMode = .OnDrag - return tableView - }() - - init(tweakCollection: TweakCollection, tweakStore: TweakStore, delegate: TweakCollectionViewControllerDelegate) { - self.tweakCollection = tweakCollection - self.tweakStore = tweakStore - self.delegate = delegate - - super.init(nibName: nil, bundle: nil) - - title = tweakCollection.title - - toolbarItems = [ - UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), - UIBarButtonItem(title: TweaksViewController.dismissButtonTitle, style: .Done, target: self, action: #selector(self.dismissButtonTapped)) - ] - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.frame = view.bounds - tableView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] - tableView.delegate = self - tableView.dataSource = self - tableView.registerClass(TweakTableCell.self, forCellReuseIdentifier: TweakCollectionViewController.TweakTableViewCellIdentifer) - tableView.registerClass(TweakGroupSectionHeader.self, forHeaderFooterViewReuseIdentifier: TweakGroupSectionHeader.identifier) - view.addSubview(tableView) - } - - override func viewWillAppear(animated: Bool) { - super.viewWillAppear(animated) - - // Reload data (in case colors were changed on a divedown) - tableView.reloadData() - } - - - // MARK: Events - - @objc private func dismissButtonTapped() { - delegate.tweakCollectionViewControllerDidPressDismissButton(self) - } - - - // MARK: Table Cells - - private static let TweakTableViewCellIdentifer = "TweakTableViewCellIdentifer" - -} - -extension TweakCollectionViewController: UITableViewDelegate { - func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - let tweak = tweakAtIndexPath(indexPath) - switch tweak.tweakViewDataType { - case .UIColor: - let colorEditVC = TweakColorEditViewController(anyTweak: tweak, tweakStore: tweakStore, delegate: self) - navigationController?.pushViewController(colorEditVC, animated: true) - case .Boolean, .Integer, .CGFloat, .Double: - break - } - } -} - -extension TweakCollectionViewController: UITableViewDataSource { - func numberOfSectionsInTableView(tableView: UITableView) -> Int { - return tweakCollection.tweakGroups.count - } - - func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return tweakCollection.sortedTweakGroups[section].tweaks.count - } - - func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - let tweak = tweakAtIndexPath(indexPath) - - let cell = tableView.dequeueReusableCellWithIdentifier(TweakCollectionViewController.TweakTableViewCellIdentifer, forIndexPath: indexPath) as! TweakTableCell - cell.textLabel?.text = tweak.tweakName - cell.viewData = tweakStore.currentViewDataForTweak(tweak) - cell.delegate = self - return cell - } - - private static let sectionFooterHeight: CGFloat = 27 - - func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { - return TweakCollectionViewController.sectionFooterHeight - } - - func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { - return TweakGroupSectionHeader.height - } - - func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier(TweakGroupSectionHeader.identifier) as! TweakGroupSectionHeader - headerView.tweakGroup = tweakCollection.sortedTweakGroups[section] - headerView.delegate = self - return headerView - } - - private func tweakAtIndexPath(indexPath: NSIndexPath) -> AnyTweak { - return tweakCollection.sortedTweakGroups[indexPath.section].sortedTweaks[indexPath.row] - } -} - -extension TweakCollectionViewController: TweakTableCellDelegate { - func tweakCellDidChangeCurrentValue(tweakCell: TweakTableCell) { - if let - indexPath = tableView.indexPathForCell(tweakCell), - viewData = tweakCell.viewData - { - let tweak = tweakAtIndexPath(indexPath) - tweakStore.setValue(viewData, forTweak: tweak) - } - } -} - -extension TweakCollectionViewController: TweakColorEditViewControllerDelegate { - func tweakColorEditViewControllerDidPressDismissButton(tweakColorEditViewController: TweakColorEditViewController) { - self.delegate.tweakCollectionViewControllerDidPressDismissButton(self) - } -} - -extension TweakCollectionViewController: TweakGroupSectionHeaderDelegate { - private func tweakGroupSectionHeaderDidPressFloatingButton(sectionHeader: TweakGroupSectionHeader) { - guard let tweakGroup = sectionHeader.tweakGroup else { return } - - delegate.tweakCollectionViewController(self, didTapFloatingTweakGroupButtonForTweakGroup: tweakGroup) - } -} - -private protocol TweakGroupSectionHeaderDelegate: class { - func tweakGroupSectionHeaderDidPressFloatingButton(sectionHeader: TweakGroupSectionHeader) -} - -/// Displays the name of a tweak group, and includes a (+) button to present the floating TweakGroup UI when tapped. -private final class TweakGroupSectionHeader: UITableViewHeaderFooterView { - static let identifier = "TweakGroupSectionHeader" - - private let floatingButton: UIButton = { - let button = UIButton(type: .Custom) - let buttonImage = UIImage(swiftTweaksImage: .FloatingPlusButton).imageWithRenderingMode(.AlwaysTemplate) - button.setImage(buttonImage.imageTintedWithColor(AppTheme.Colors.controlTinted), forState: .Normal) - button.setImage(buttonImage.imageTintedWithColor(AppTheme.Colors.controlTintedPressed), forState: .Highlighted) - return button - }() - - private let titleLabel: UILabel = { - let label = UILabel() - label.textColor = AppTheme.Colors.sectionHeaderTitleColor - label.font = AppTheme.Fonts.sectionHeaderTitleFont - - return label - }() - - private weak var delegate: TweakGroupSectionHeaderDelegate? - - var tweakGroup: TweakGroup? { - didSet { - titleLabel.text = tweakGroup?.title - } - } - - override init(reuseIdentifier: String?) { - super.init(reuseIdentifier: reuseIdentifier) - - floatingButton.addTarget(self, action: #selector(self.floatingButtonTapped), forControlEvents: .TouchUpInside) - - contentView.addSubview(floatingButton) - contentView.addSubview(titleLabel) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - static let height: CGFloat = 38 - private static let horizontalMargin: CGFloat = 12 - private static let floatingButtonSize = CGSize(width: 46, height: TweakGroupSectionHeader.height) - - override private func layoutSubviews() { - super.layoutSubviews() - - let floatingButtonFrame = CGRect( - origin: CGPoint( - x: self.contentView.bounds.maxX - TweakGroupSectionHeader.floatingButtonSize.width, - y: 0 - ), - size: TweakGroupSectionHeader.floatingButtonSize - ) - floatingButton.frame = floatingButtonFrame - - let titleLabelFrame = CGRect( - origin: CGPoint( - x: TweakGroupSectionHeader.horizontalMargin, - y: 0 - ), - size: CGSize( - width: self.contentView.bounds.width - floatingButtonFrame.width - TweakGroupSectionHeader.horizontalMargin, - height: TweakGroupSectionHeader.height - ) - ) - titleLabel.frame = titleLabelFrame - } - - @objc private func floatingButtonTapped() { - delegate!.tweakGroupSectionHeaderDidPressFloatingButton(self) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakColorCell.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakColorCell.swift deleted file mode 100644 index 3df995e7..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakColorCell.swift +++ /dev/null @@ -1,153 +0,0 @@ -// -// TweakSliderCell.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/16/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal protocol TweakColorCellDelegate { - func tweakColorCellDidChangeValue(cell: TweakColorCell) -} - -/// a UITableViewCell that contains a slider & text field for editing a ColorComponent. -internal final class TweakColorCell: UITableViewCell { - internal static let cellHeight: CGFloat = 50 - - internal var delegate: TweakColorCellDelegate? - - internal var viewData: ColorComponent? { - didSet { - updateSubviews() - } - } - - private let slider = UISlider() - private let label: UILabel = { - let label = UILabel() - label.textAlignment = .Right - label.textColor = UIColor.lightGrayColor() - return label - }() - private let textField: UITextField = { - let textField = UITextField() - textField.textAlignment = .Right - textField.returnKeyType = .Done - return textField - }() - private let accessory = UIView() - - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: .Value1, reuseIdentifier: reuseIdentifier) - - slider.addTarget(self, action: #selector(self.sliderValueChanged(_:)), forControlEvents: .ValueChanged) - - textField.delegate = self - - accessory.addSubview(slider) - accessory.addSubview(textField) - accessory.addSubview(label) - accessoryView = accessory - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func layoutSubviews() { - defer { - // After adjusting the accessoryView's frame, we need to call super.layoutSubviews() - super.layoutSubviews() - } - - // No need to proceed if we don't have view data - guard let viewData = viewData else { - return - } - - switch viewData { - case .HexComponent: - let textFieldFrame = CGRect(origin: CGPointZero, size: CGSize(width: bounds.width * 0.5, height: bounds.height)) - textField.frame = textFieldFrame - accessory.bounds = CGRectIntegral(textFieldFrame) - case .NumericalComponent: - let sliderFrame = CGRect( - origin: CGPointZero, - size: CGSize(width: bounds.width - 130, height: bounds.height)) - let labelFrame = CGRect( - origin: CGPoint(x: sliderFrame.width, y: 0), - size: CGSize(width: 50, height: bounds.height)) - slider.frame = sliderFrame - label.frame = labelFrame - - let accessoryFrame = CGRectUnion(sliderFrame, labelFrame) - accessory.bounds = accessoryFrame - } - } - - private func updateSubviews() { - // No point in setting data if we don't have it. - guard let viewData = viewData else { - return - } - - textLabel?.text = viewData.title - - switch viewData { - case .HexComponent(let hexString): - slider.hidden = true - label.hidden = true - textField.hidden = false - - textField.textColor = tintColor - textField.text = hexString - case .NumericalComponent(let numberComponent): - slider.hidden = false - label.hidden = false - textField.hidden = true - - slider.minimumValue = numberComponent.type.minimumValue - slider.maximumValue = numberComponent.type.maximumValue - slider.value = numberComponent.value - slider.tintColor = numberComponent.type.tintColor ?? tintColor - - let numberFormatter = NSNumberFormatter() - numberFormatter.numberStyle = .DecimalStyle - numberFormatter.minimumFractionDigits = numberComponent.type.roundsToInteger ? 0 : 2 - numberFormatter.maximumFractionDigits = numberComponent.type.roundsToInteger ? 0 : 2 - numberFormatter.minimumIntegerDigits = 1 - label.text = numberFormatter.stringFromNumber(numberComponent.value) - } - } - - // MARK: Events - @objc private func sliderValueChanged(sender: UISlider) { - switch viewData! { - case .NumericalComponent(let oldValue): - let newValue = ColorComponentNumerical(type: oldValue.type, value: slider.value) - viewData = .NumericalComponent(newValue) - delegate?.tweakColorCellDidChangeValue(self) - case .HexComponent: - assertionFailure("Shouldn't be able to change slider if viewData.type != NumericalComponent") - break - } - } -} - -extension TweakColorCell: UITextFieldDelegate { - func textFieldShouldReturn(textField: UITextField) -> Bool { - textField.resignFirstResponder() - return true - } - - func textFieldDidEndEditing(textField: UITextField) { - if let text = textField.text, newValue = UIColor.colorWithHexString(text) { - viewData = .HexComponent(newValue.hexString) - delegate?.tweakColorCellDidChangeValue(self) - } else { - updateSubviews() - } - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakColorEditViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakColorEditViewController.swift deleted file mode 100644 index 4c226767..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakColorEditViewController.swift +++ /dev/null @@ -1,228 +0,0 @@ -// -// TweakColorEditViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/16/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal protocol TweakColorEditViewControllerDelegate { - func tweakColorEditViewControllerDidPressDismissButton(tweakColorEditViewController: TweakColorEditViewController) -} - -/// A fullscreen color editor with hex, RGBa, and HSBa controls -internal final class TweakColorEditViewController: UIViewController { - private let tweak: Tweak - private let tweakStore: TweakStore - private let delegate: TweakColorEditViewControllerDelegate - - private var viewData: ColorRepresentation { - didSet { - if oldValue.type != viewData.type { - segmentedControl.selectedSegmentIndex = viewData.type.rawValue - tableView.reloadData() - } - - tweakStore.setValue(.Color(value: viewData.color, defaultValue: tweak.defaultValue), forTweak: AnyTweak(tweak: tweak)) - - updateColorPreview() - } - } - - private var colorRepresentationType: ColorRepresentationType { - set { - viewData = ColorRepresentation(type: newValue, color: viewData.color) - } - get { - return viewData.type - } - } - - private let tableView: UITableView = { - let tableView = UITableView(frame: CGRectZero, style: .Plain) - tableView.allowsSelection = false - tableView.keyboardDismissMode = .OnDrag - return tableView - }() - - private let headerView: UIView = UIView() - private let colorPreviewView: UIView = { - let view = UIView() - view.layer.cornerRadius = 4 - view.clipsToBounds = true - return view - }() - private let colorPreviewSolidView = UIView() - private let colorPreviewAlphaView = UIView() - - private let segmentedControl: UISegmentedControl = { - let control = UISegmentedControl(items: ColorRepresentationType.titles) - return control - }() - - // MARK: Init - - init(anyTweak: AnyTweak, tweakStore: TweakStore, delegate: TweakColorEditViewControllerDelegate) { - assert(anyTweak.tweakViewDataType == .UIColor, "Can only edit colors in TweakColorEditViewController") - - self.tweak = anyTweak.tweak as! Tweak - self.tweakStore = tweakStore - self.viewData = ColorRepresentation(type: .Hex, color: tweakStore.currentValueForTweak(tweak)) - self.delegate = delegate - - super.init(nibName:nil, bundle: nil) - - title = tweak.tweakName - toolbarItems = [ - UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), - UIBarButtonItem(title: TweaksViewController.dismissButtonTitle, style: .Done, target: self, action: #selector(self.dismissButtonTapped)) - ] - - view.tintColor = AppTheme.Colors.controlGrayscale - - self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Reset", style: .Plain, target: self, action: #selector(TweakColorEditViewController.restoreDefaultColor)) - self.navigationItem.rightBarButtonItem?.tintColor = AppTheme.Colors.controlDestructive - - segmentedControl.addTarget(self, action: #selector(self.segmentedControlChanged(_:)), forControlEvents: .ValueChanged) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private static let headerHeight: CGFloat = 122 - private static let colorPreviewHeight: CGFloat = 64 - private static let headerHorizontalMargin: CGFloat = 10 - private static let headerVerticalMargin: CGFloat = 10 - - override func viewDidLoad() { - super.viewDidLoad() - - headerView.bounds = CGRect(origin: CGPointZero, size: CGSize(width: view.bounds.width, height: 122)) - - colorPreviewView.frame = CGRect( - x: TweakColorEditViewController.headerVerticalMargin, - y: TweakColorEditViewController.headerHorizontalMargin, - width: view.bounds.width - 2 * TweakColorEditViewController.headerHorizontalMargin, - height: TweakColorEditViewController.colorPreviewHeight - ) - var solidFrame = CGRect() - var remainder = CGRect() - CGRectDivide(colorPreviewView.bounds, &solidFrame, &remainder, colorPreviewView.bounds.width/2, CGRectEdge.MinXEdge) - colorPreviewSolidView.frame = CGRectIntegral(solidFrame) - colorPreviewAlphaView.frame = colorPreviewView.bounds - colorPreviewView.addSubview(colorPreviewAlphaView) - colorPreviewView.addSubview(colorPreviewSolidView) - headerView.addSubview(colorPreviewView) - - segmentedControl.sizeToFit() - segmentedControl.frame = CGRect( - origin: CGPoint(x: CGRectGetMinX(colorPreviewView.frame), y: CGRectGetMaxY(colorPreviewView.frame) + TweakColorEditViewController.headerVerticalMargin), - size: CGSize(width: headerView.bounds.width - 2 * TweakColorEditViewController.headerHorizontalMargin, height: segmentedControl.bounds.height) - ) - headerView.addSubview(segmentedControl) - tableView.tableHeaderView = headerView - - tableView.frame = view.bounds - tableView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] - tableView.dataSource = self - tableView.registerClass(TweakColorCell.self, forCellReuseIdentifier: TweakColorEditViewController.SliderCellIdentifier) - view.addSubview(tableView) - - updateColorPreview() - segmentedControl.selectedSegmentIndex = viewData.type.rawValue - } - - private static let SliderCellIdentifier = "SliderCellIdentifier" - - @objc private func segmentedControlChanged(sender: UISegmentedControl) { - assert(sender == segmentedControl, "Unknown sender in segmentedControlChanged:") - colorRepresentationType = ColorRepresentationType(rawValue: sender.selectedSegmentIndex)! - } - - @objc private func dismissButtonTapped() { - delegate.tweakColorEditViewControllerDidPressDismissButton(self) - } - - private func updateColorPreview() { - colorPreviewView.backgroundColor = .clearColor() - colorPreviewSolidView.backgroundColor = viewData.color.colorWithAlphaComponent(1.0) - colorPreviewAlphaView.backgroundColor = viewData.color - } - - @objc private func restoreDefaultColor() { - let confirmationAlert = UIAlertController(title: "Reset This Color to Default?", message: "Your other tweaks will be left alone.", preferredStyle: .ActionSheet) - confirmationAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)) - confirmationAlert.addAction(UIAlertAction(title: "Reset This Color", style: .Destructive, handler: { _ in - self.viewData = ColorRepresentation(type: .Hex, color: self.tweak.defaultValue) - })) - presentViewController(confirmationAlert, animated: true, completion: nil) - } -} - -extension TweakColorEditViewController: UITableViewDelegate { - func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - return TweakColorCell.cellHeight - } -} - -extension TweakColorEditViewController: UITableViewDataSource { - func numberOfSectionsInTableView(tableView: UITableView) -> Int { - return 1 - } - - func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return viewData.numberOfComponents ?? 0 - } - - func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCellWithIdentifier(TweakColorEditViewController.SliderCellIdentifier, forIndexPath: indexPath) as! TweakColorCell - cell.viewData = viewData[indexPath.row] - cell.delegate = self - return cell - } -} - -extension TweakColorEditViewController: TweakColorCellDelegate { - func tweakColorCellDidChangeValue(cell: TweakColorCell) { - let changedValue = cell.viewData! - - switch viewData { - case let .Hex(hex: oldHex, alpha: oldAlpha): - switch changedValue { - case let .HexComponent(newHex): - viewData = .Hex(hex: newHex, alpha: oldAlpha) - case let .NumericalComponent(newNumber): - viewData = .Hex(hex: oldHex, alpha: newNumber) - } - case let .RGBa(r: oldR, g: oldG, b: oldB, a: oldA): - switch changedValue.numericType! { - case .Red: - viewData = .RGBa(r: changedValue.numericValue!, g: oldG, b: oldB, a: oldA) - case .Green: - viewData = .RGBa(r: oldR, g: changedValue.numericValue!, b: oldB, a: oldA) - case .Blue: - viewData = .RGBa(r: oldR, g: oldG, b: changedValue.numericValue!, a: oldA) - case .Alpha: - viewData = .RGBa(r: oldR, g: oldG, b: oldB, a: changedValue.numericValue!) - case .Hue, .Saturation, .Brightness: - break - } - case let .HSBa(h: oldH, s: oldS, b: oldB, a: oldA): - switch changedValue.numericType! { - case .Hue: - viewData = .HSBa(h: changedValue.numericValue!, s: oldS, b: oldB, a: oldA) - case .Saturation: - viewData = .HSBa(h: oldH, s: changedValue.numericValue!, b: oldB, a: oldA) - case .Brightness: - viewData = .HSBa(h: oldH, s: oldS, b: changedValue.numericValue!, a: oldA) - case .Alpha: - viewData = .HSBa(h: oldH, s: oldS, b: oldB, a: changedValue.numericValue!) - case .Red, .Green, .Blue: - break - } - } - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakGroup.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakGroup.swift deleted file mode 100644 index cf2debd2..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakGroup.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// TweakGroup.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/10/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// A collection of Tweak -/// These are represented in the UI as a UITableView section, -/// and can be "floated" onscreen as a group. -internal struct TweakGroup { - let title: String - var tweaks: [String: AnyTweak] = [:] - - init(title: String) { - self.title = title - } -} - -extension TweakGroup { - internal var sortedTweaks: [AnyTweak] { - return tweaks - .sort { $0.0 < $1.0 } - .map { return $0.1 } - } -} - diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakGroupTemplateType.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakGroupTemplateType.swift deleted file mode 100644 index 4ab3b9e3..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakGroupTemplateType.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// TweakGroupTemplateType.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - -/// Use this protocol to create your own commonly-used TweakGroups. -/// For example, tweaks are often used for animations, so we've built out TweakGroupTemplateSpringAnimation to make it *really* easy to tweak spring animations! -public protocol TweakGroupTemplateType: TweakClusterType { - var collectionName: String { get } - var groupName: String { get } - var tweakCluster: [AnyTweak] { get } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakLibrary.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakLibrary.swift deleted file mode 100644 index daba3e0e..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakLibrary.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// TweakLibrary.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/6/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation - -/// Create a public struct in your application that conforms to this protocol to declare your own tweaks! -public protocol TweakLibraryType { - static var defaultStore: TweakStore { get } -} - -public extension TweakLibraryType { - /// Returns the current value for a tweak from the TweakLibrary's default store. - static func assign(tweak: Tweak) -> T { - return self.defaultStore.currentValueForTweak(tweak) - } - - /// Immediately binds the currentValue of a given tweak, and then continues to update whenever the tweak changes. - static func bind(tweak: Tweak, binding: (T) -> Void) { - self.defaultStore.bind(tweak, binding: binding) - } - - // Accepts a collection of Tweaks, and immediately calls the updateHandler. - /// The updateHandler is then re-called each time any of the collection's tweaks change. - /// Inside the updateHandler, you'll need to use `assign` to get the tweaks' current values. - static func bindMultiple(tweaks: [TweakType], binding: () -> Void) { - self.defaultStore.bindMultiple(tweaks, binding: binding) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakPersistency.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakPersistency.swift deleted file mode 100644 index 8cf7b955..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakPersistency.swift +++ /dev/null @@ -1,198 +0,0 @@ -// -// TweakPersistency.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/16/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -/// Identifies tweaks in TweakPersistency -internal protocol TweakIdentifiable { - var persistenceIdentifier: String { get } -} - -/// Caches Tweak values -internal typealias TweakCache = [String: TweakableType] - - -/// Persists state for tweaks in a TweakCache -internal final class TweakPersistency { - private let diskPersistency: TweakDiskPersistency - - private var tweakCache: TweakCache = [:] - - init(identifier: String) { - self.diskPersistency = TweakDiskPersistency(identifier: identifier) - self.tweakCache = self.diskPersistency.loadFromDisk() - } - - internal func currentValueForTweak(tweak: Tweak) -> T? { - return persistedValueForTweakIdentifiable(AnyTweak(tweak: tweak)) as? T - } - - internal func currentValueForTweak(tweak: Tweak) -> T? { - if let currentValue = persistedValueForTweakIdentifiable(AnyTweak(tweak: tweak)) as? T { - // If the tweak can be clipped, then we'll need to clip it - because - // the tweak might've been persisted without a min / max, but then you changed the tweak definition. - // example: you tweaked it to 11, then set a max of 10 - the persisted value is still 11! - return clip(currentValue, tweak.minimumValue, tweak.maximumValue) - } - - return nil - } - - internal func persistedValueForTweakIdentifiable(tweakID: TweakIdentifiable) -> TweakableType? { - return tweakCache[tweakID.persistenceIdentifier] - } - - internal func setValue(value: TweakableType?, forTweakIdentifiable tweakID: TweakIdentifiable) { - tweakCache[tweakID.persistenceIdentifier] = value - self.diskPersistency.saveToDisk(tweakCache) - } - - internal func clearAllData() { - tweakCache = [:] - self.diskPersistency.saveToDisk(tweakCache) - } -} - -/// Persists a TweakCache on disk using NSCoding -private final class TweakDiskPersistency { - private let fileURL: NSURL - - private static func fileURLForIdentifier(identifier: String) -> NSURL { - return try! NSFileManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true) - .URLByAppendingPathComponent("SwiftTweaks") - .URLByAppendingPathComponent("\(identifier)") - .URLByAppendingPathExtension("db") - } - - private let queue = dispatch_queue_create("org.khanacademy.swift_tweaks.disk_persistency", DISPATCH_QUEUE_SERIAL) - - init(identifier: String) { - self.fileURL = TweakDiskPersistency.fileURLForIdentifier(identifier) - self.ensureDirectoryExists() - } - - /// Creates a directory (if needed) for our persisted TweakCache on disk - private func ensureDirectoryExists() { - dispatch_async(self.queue) { - try! NSFileManager.defaultManager().createDirectoryAtURL(self.fileURL.URLByDeletingLastPathComponent!, withIntermediateDirectories: true, attributes: nil) - } - } - - func loadFromDisk() -> TweakCache { - var result: TweakCache! - - dispatch_sync(self.queue) { - result = NSData(contentsOfURL: self.fileURL) - .flatMap(NSKeyedUnarchiver.unarchiveObjectWithData) - .flatMap { $0 as? Data } - .map { $0.cache } - ?? [:] - } - - return result - } - - func saveToDisk(data: TweakCache) { - dispatch_async(self.queue) { - let nsData = NSKeyedArchiver.archivedDataWithRootObject(Data(cache: data)) - nsData.writeToURL(self.fileURL, atomically: true) - } - } - - /// Implements NSCoding for TweakCache. - /// TweakCache a flat dictionary: [String: TweakableType]. - /// However, because re-hydrating TweakableType from its underlying NSNumber gets Bool & Int mixed up, we have to persist a different structure on disk: [TweakViewDataType: [String: AnyObject]] - /// This ensures that if something was saved as a Bool, it's read back as a Bool. - @objc private final class Data: NSObject, NSCoding { - let cache: TweakCache - - init(cache: TweakCache) { - self.cache = cache - } - - @objc convenience init?(coder aDecoder: NSCoder) { - var cache: TweakCache = [:] - - // Read through each TweakViewDataType... - for dataType in TweakViewDataType.allTypes { - // If a sub-dictionary exists for that type, - if let dataTypeDictionary = aDecoder.decodeObjectForKey(dataType.nsCodingKey) as? Dictionary { - // Read through each entry and populate the cache - for (key, value) in dataTypeDictionary { - if let value = Data.tweakableTypeWithAnyObject(value, withType: dataType) { - cache[key] = value - } - } - } - } - - self.init(cache: cache) - } - - @objc private func encodeWithCoder(aCoder: NSCoder) { - - // Our "dictionary of dictionaries" that is persisted on disk - var diskPersistedDictionary: [TweakViewDataType : [String: AnyObject]] = [:] - - // For each thing in our TweakCache, - for (key, value) in cache { - let dataType = value.dynamicType.tweakViewDataType - - // ... create the "sub-dictionary" if it doesn't already exist for a particular TweakViewDataType - if diskPersistedDictionary[dataType] == nil { - diskPersistedDictionary[dataType] = [:] - } - - // ... and set the cached value inside the sub-dictionary. - diskPersistedDictionary[dataType]![key] = value.nsCoding - } - - // Now we persist the "dictionary of dictionaries" on disk! - for (key, value) in diskPersistedDictionary { - aCoder.encodeObject(value, forKey: key.nsCodingKey) - } - } - - // Reads from the cache, casting to the appropriate TweakViewDataType - private static func tweakableTypeWithAnyObject(anyObject: AnyObject, withType type: TweakViewDataType) -> TweakableType? { - switch type { - case .Integer: return anyObject as? Int - case .Boolean: return anyObject as? Bool - case .CGFloat: return anyObject as? CGFloat - case .Double: return anyObject as? Double - case .UIColor: return anyObject as? UIColor - } - } - } -} - -private extension TweakViewDataType { - /// Identifies our TweakViewDataType when in NSCoding. See implementation of TweakDiskPersistency.Data - var nsCodingKey: String { - switch self { - case .Boolean: return "boolean" - case .Integer: return "integer" - case .CGFloat: return "cgfloat" - case .Double: return "double" - case .UIColor: return "uicolor" - } - } -} - -private extension TweakableType { - /// Gets the underlying value from a Tweakable Type - var nsCoding: AnyObject { - switch self.dynamicType.tweakViewDataType { - case .Boolean: return self as! Bool - case .Integer: return self as! Int - case .CGFloat: return self as! CGFloat - case .Double: return self as! Double - case .UIColor: return self as! UIColor - } - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakStore+Sharing.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakStore+Sharing.swift deleted file mode 100644 index 5797eece..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakStore+Sharing.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// TweakStore+Sharing.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/19/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal extension TweakStore { - internal var textRepresentation: String { - // Let's sort our tweaks by collection/group/name, and then return the list! - let returnValue: String = sortedTweakCollections - .reduce([]) { $0 + $1.allTweaks } - .map { - let (stringValue, differs) = currentViewDataForTweak($0).stringRepresentation - let linePrefix = differs ? "* " : "" - return "\(linePrefix)\($0.tweakIdentifier) = \(stringValue)" - }.reduce("Here are your tweaks!\nA * indicates a tweaked value.") { $0 + "\n\n" + $1 } - return returnValue - } -} - -@objc internal class TweakStoreActivityItemSource: NSObject { - private let textRepresentation: String - - init(text: String) { - self.textRepresentation = text - } -} - -extension TweakStoreActivityItemSource: UIActivityItemSource { - @objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject { - return textRepresentation - } - - @objc func activityViewController(activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String { - return "SwiftTweaks Backup" - } - - @objc func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? { - return textRepresentation - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakStore.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakStore.swift deleted file mode 100644 index 64e838ab..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakStore.swift +++ /dev/null @@ -1,171 +0,0 @@ -// -// TweakStore.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/5/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -/// Looks up the persisted state for tweaks. -public final class TweakStore { - - /// The "tree structure" for our Tweaks UI. - private var tweakCollections: [String: TweakCollection] = [:] - - /// Useful when exporting or checking that a tweak exists in tweakCollections - private let allTweaks: Set - - /// We hold a reference to the storeName so we can have a better error message if a tweak doesn't exist in allTweaks. - private let storeName: String - - /// Caches "single" bindings - when a tweak is updated, we'll call each of the corresponding bindings. - private var tweakBindings: [String: [AnyTweakBinding]] = [:] - - /// Caches "multi" bindings - when any tweak in a Set is updated, we'll call each of the corresponding bindings. - private var tweakSetBindings: [Set: [() -> Void]] = [:] - - /// Persists tweaks' currentValues and maintains them on disk. - private let persistence: TweakPersistency - - /// Determines whether tweaks are enabled, and whether the tweaks UI is accessible - internal let enabled: Bool - - /// Creates a TweakStore, with information persisted on-disk. - /// If you want to have multiple TweakStores in your app, you can pass in a unique storeName to keep it separate from others on disk. - public init(tweaks: [TweakClusterType], storeName: String = "Tweaks", enabled: Bool) { - self.persistence = TweakPersistency(identifier: storeName) - self.storeName = storeName - self.enabled = enabled - self.allTweaks = Set(tweaks.reduce([]) { $0 + $1.tweakCluster }) - - self.allTweaks.forEach { tweak in - // Find or create its TweakCollection - var tweakCollection: TweakCollection - if let existingCollection = tweakCollections[tweak.collectionName] { - tweakCollection = existingCollection - } else { - tweakCollection = TweakCollection(title: tweak.collectionName) - tweakCollections[tweakCollection.title] = tweakCollection - } - - // Find or create its TweakGroup - var tweakGroup: TweakGroup - if let existingGroup = tweakCollection.tweakGroups[tweak.groupName] { - tweakGroup = existingGroup - } else { - tweakGroup = TweakGroup(title: tweak.groupName) - } - - // Add the tweak to the tree - tweakGroup.tweaks[tweak.tweakName] = tweak - tweakCollection.tweakGroups[tweakGroup.title] = tweakGroup - tweakCollections[tweakCollection.title] = tweakCollection - } - } - - /// Returns the current value for a given tweak - public func assign(tweak: Tweak) -> T { - return self.currentValueForTweak(tweak) - } - - public func bind(tweak: Tweak, binding: (T) -> Void) { - // Create the TweakBinding, and wrap it in our type-erasing AnyTweakBinding - let tweakBinding = TweakBinding(tweak: tweak, binding: binding) - let anyTweakBinding = AnyTweakBinding(tweakBinding: tweakBinding) - - // Cache the binding - let existingTweakBindings = tweakBindings[tweak.persistenceIdentifier] ?? [] - tweakBindings[tweak.persistenceIdentifier] = existingTweakBindings + [anyTweakBinding] - - // Then immediately apply the binding on whatever current value we have - binding(currentValueForTweak(tweak)) - } - - public func bindMultiple(tweaks: [TweakType], binding: () -> Void) { - // Convert the array (which makes it easier to call a `bindTweakSet`) into a set (which makes it possible to cache the tweakSet) - let tweakSet = Set(tweaks.map(AnyTweak.init)) - - // Cache the cluster binding - let existingTweakSetBindings = tweakSetBindings[tweakSet] ?? [] - tweakSetBindings[tweakSet] = existingTweakSetBindings + [binding] - - // Immediately call the binding - binding() - } - - // MARK: - Internal - - /// Resets all tweaks to their `defaultValue` - internal func reset() { - persistence.clearAllData() - - // Go through all tweaks in our library, and call any bindings they're attached to. - tweakCollections.values.reduce([]) { $0 + $1.sortedTweakGroups.reduce([]) { $0 + $1.sortedTweaks } } - .forEach { updateBindingsForTweak($0) - } - - } - - internal func currentValueForTweak(tweak: Tweak) -> T { - if allTweaks.contains(AnyTweak(tweak: tweak)) { - return enabled ? persistence.currentValueForTweak(tweak) ?? tweak.defaultValue : tweak.defaultValue - } else { - print("Error: the tweak \"\(tweak.tweakIdentifier)\" isn't included in the tweak store \"\(storeName)\". Returning the default value.") - return tweak.defaultValue - } - } - - internal func currentViewDataForTweak(tweak: AnyTweak) -> TweakViewData { - let cachedValue = persistence.persistedValueForTweakIdentifiable(tweak) - - switch tweak.tweakDefaultData { - case let .Boolean(defaultValue: defaultValue): - let currentValue = cachedValue as? Bool ?? defaultValue - return .Boolean(value: currentValue, defaultValue: defaultValue) - case let .Integer(defaultValue: defaultValue, min: min, max: max, stepSize: step): - let currentValue = cachedValue as? Int ?? defaultValue - return .Integer(value: currentValue, defaultValue: defaultValue, min: min, max: max, stepSize: step) - case let .Float(defaultValue: defaultValue, min: min, max: max, stepSize: step): - let currentValue = cachedValue as? CGFloat ?? defaultValue - return .Float(value: currentValue, defaultValue: defaultValue, min: min, max: max, stepSize: step) - case let .DoubleTweak(defaultValue: defaultValue, min: min, max: max, stepSize: step): - let currentValue = cachedValue as? Double ?? defaultValue - return .DoubleTweak(value: currentValue, defaultValue: defaultValue, min: min, max: max, stepSize: step) - case let .Color(defaultValue: defaultValue): - let currentValue = cachedValue as? UIColor ?? defaultValue - return .Color(value: currentValue, defaultValue: defaultValue) - } - } - - internal func setValue(viewData: TweakViewData, forTweak tweak: AnyTweak) { - persistence.setValue(viewData.value, forTweakIdentifiable: tweak) - updateBindingsForTweak(tweak) - } - - - // MARK - Private - - private func updateBindingsForTweak(tweak: AnyTweak) { - // Find any 1-to-1 bindings and update them - tweakBindings[tweak.persistenceIdentifier]?.forEach { - $0.applyBindingWithValue(currentViewDataForTweak(tweak).value) - } - - // Find any cluster bindings and update them - for (tweakSet, bindingsArray) in tweakSetBindings { - if tweakSet.contains(tweak) { - bindingsArray.forEach { $0() } - } - } - } -} - -extension TweakStore { - internal var sortedTweakCollections: [TweakCollection] { - return tweakCollections - .sort { $0.0 < $1.0 } - .map { return $0.1 } - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakTableCell.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakTableCell.swift deleted file mode 100644 index 190b25f9..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakTableCell.swift +++ /dev/null @@ -1,322 +0,0 @@ -// -// TweakTableCell.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/13/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit -import Foundation - -internal protocol TweakTableCellDelegate: class { - func tweakCellDidChangeCurrentValue(tweakCell: TweakTableCell) -} - -/// A UITableViewCell that represents a single Tweak in our UI. -internal final class TweakTableCell: UITableViewCell { - internal weak var delegate: TweakTableCellDelegate? - - internal var viewData: TweakViewData? { - didSet { - accessoryView = accessory - accessoryType = .None - detailTextLabel?.text = nil - selectionStyle = .None - - defer { - setNeedsLayout() - layoutIfNeeded() - } - - updateSubviews() - } - } - - internal var isInFloatingTweakGroupWindow = false - - private var accessory = UIView() - - private let switchControl: UISwitch = { - let switchControl = UISwitch() - switchControl.onTintColor = AppTheme.Colors.controlTinted - switchControl.tintColor = AppTheme.Colors.controlDisabled - return switchControl - }() - - private let stepperControl: UIStepper = { - let stepper = UIStepper() - stepper.tintColor = AppTheme.Colors.controlTinted - return stepper - }() - - private let colorChit: UIView = { - let view = UIView() - view.layer.cornerRadius = 4 - return view - }() - private let textField: UITextField = { - let textField = UITextField() - textField.textAlignment = .Right - textField.returnKeyType = .Done - return textField - }() - private let disclosureArrow: UIImageView = { - let disclosureArrowImage = UIImage(swiftTweaksImage: .DisclosureIndicator) - let imageView = UIImageView(image: disclosureArrowImage.imageWithRenderingMode(.AlwaysTemplate)) - imageView.contentMode = .Center - imageView.tintColor = AppTheme.Colors.controlSecondary - return imageView - }() - - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: .Value1, reuseIdentifier: reuseIdentifier) - - [switchControl, stepperControl, colorChit, textField, disclosureArrow].forEach { accessory.addSubview($0) } - - switchControl.addTarget(self, action: #selector(self.switchChanged(_:)), forControlEvents: .ValueChanged) - stepperControl.addTarget(self, action: #selector(self.stepperChanged(_:)), forControlEvents: .ValueChanged) - textField.delegate = self - - detailTextLabel!.textColor = AppTheme.Colors.textPrimary - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private static let numberTextWidthFraction: CGFloat = 0.25 // The fraction of the cell's width used for the text field - private static let colorTextWidthFraction: CGFloat = 0.30 - private static let horizontalPadding: CGFloat = 6 // Horiz. separation between stepper and text field - private static let colorChitSize = CGSize(width: 29, height: 29) - - override func layoutSubviews() { - - defer { - // After adjusting the accessoryView's frame, we need to call super.layoutSubviews() - super.layoutSubviews() - } - - // No need to proceed if we don't have view data - guard let viewData = viewData else { - return - } - - switch viewData { - case .Boolean: - switchControl.sizeToFit() - accessory.bounds = switchControl.bounds - case .Integer, .Float, .DoubleTweak: - stepperControl.sizeToFit() - - let textFrame = CGRect( - origin: CGPointZero, - size: CGSize( - width: bounds.width * TweakTableCell.numberTextWidthFraction, - height: bounds.height - ) - ) - - let stepperControlFrame = CGRect( - origin: CGPoint( - x: textFrame.width + TweakTableCell.horizontalPadding, - y: (textFrame.height - stepperControl.bounds.height) / 2 - ), - size: stepperControl.bounds.size - ) - - textField.frame = textFrame - stepperControl.frame = stepperControlFrame - - let accessoryFrame = CGRectUnion(textFrame, stepperControlFrame) - accessory.bounds = CGRectIntegral(accessoryFrame) - case .Color: - let textFrame = CGRect( - origin: CGPointZero, - size: CGSize( - width: bounds.width * TweakTableCell.colorTextWidthFraction, - height: bounds.height - ) - ) - - let colorControlFrame = CGRect( - origin: CGPoint( - x: textFrame.width + TweakTableCell.horizontalPadding, - y: (textFrame.height - stepperControl.bounds.height) / 2 - ), - size: TweakTableCell.colorChitSize - ) - - let disclosureArrowFrame = CGRect( - origin: CGPoint( - x: textFrame.width + colorControlFrame.width + 2 * TweakTableCell.horizontalPadding, - y: 0), - size: CGSize( - width: disclosureArrow.bounds.width, - height: bounds.height - ) - ) - - textField.frame = textFrame - colorChit.frame = colorControlFrame - disclosureArrow.frame = disclosureArrowFrame - - let accessoryFrame = CGRectUnion(CGRectUnion(colorControlFrame, textFrame), disclosureArrowFrame) - accessory.bounds = CGRectIntegral(accessoryFrame) - } - } - - private func updateSubviews() { - guard let viewData = viewData else { - switchControl.hidden = true - textField.hidden = true - stepperControl.hidden = true - colorChit.hidden = true - return - } - - // Show / hide views depending on viewData - switch viewData { - case .Boolean: - switchControl.hidden = false - textField.hidden = true - stepperControl.hidden = true - colorChit.hidden = true - disclosureArrow.hidden = true - case .Integer, .Float, .DoubleTweak: - switchControl.hidden = true - textField.hidden = false - stepperControl.hidden = false - colorChit.hidden = true - disclosureArrow.hidden = true - case .Color: - switchControl.hidden = true - textField.hidden = false - stepperControl.hidden = true - colorChit.hidden = false - disclosureArrow.hidden = false - } - - // Update accessory internals based on viewData - var textFieldEnabled: Bool - switch viewData { - case let .Boolean(value: value, _): - switchControl.on = value - textFieldEnabled = false - - case let .Integer(value: value, _, _, _, stepSize: step): - stepperControl.value = Double(value) - (stepperControl.minimumValue, stepperControl.maximumValue) = viewData.stepperLimits! - stepperControl.stepValue = Double(step ?? 1) - - textField.text = String(value) - textField.keyboardType = .NumberPad - textFieldEnabled = true - - case let .Float(value: value, _, _, _, stepSize: step): - stepperControl.value = Double(value) - (stepperControl.minimumValue, stepperControl.maximumValue) = viewData.stepperLimits! - stepperControl.stepValue = Double(step ?? (stepperControl.maximumValue - stepperControl.minimumValue)/100) - - textField.text = value.stringValueRoundedToNearest(.Thousandth) - textField.keyboardType = .DecimalPad - textFieldEnabled = true - - case let .DoubleTweak(value: value, _, _, _, stepSize: step): - stepperControl.value = value - (stepperControl.minimumValue, stepperControl.maximumValue) = viewData.stepperLimits! - stepperControl.stepValue = step ?? (stepperControl.maximumValue - stepperControl.minimumValue)/100 - - textField.text = value.stringValueRoundedToNearest(.Thousandth) - textField.keyboardType = .DecimalPad - textFieldEnabled = true - - case let .Color(value: value, _): - colorChit.backgroundColor = value - textField.text = value.hexString - textFieldEnabled = false - - } - - textFieldEnabled = textFieldEnabled && !self.isInFloatingTweakGroupWindow - - textField.userInteractionEnabled = textFieldEnabled - textField.textColor = textFieldEnabled ? AppTheme.Colors.textPrimary : AppTheme.Colors.controlSecondary - - } - - - // MARK: Events - - @objc private func switchChanged(sender: UISwitch) { - switch viewData! { - case let .Boolean(_, defaultValue: defaultValue): - viewData = .Boolean(value: switchControl.on, defaultValue: defaultValue) - delegate?.tweakCellDidChangeCurrentValue(self) - default: - assertionFailure("Shouldn't be able to toggle switch if view data isn't Boolean type") - } - } - - @objc private func stepperChanged(sender: UIStepper) { - switch viewData! { - case let .Integer(_, defaultValue: defaultValue, min: min, max: max, stepSize: step): - viewData = TweakViewData(type: .Integer, value: Int(stepperControl.value), defaultValue: defaultValue, minimum: min, maximum: max, stepSize: step) - delegate?.tweakCellDidChangeCurrentValue(self) - case let .Float(_, defaultValue: defaultValue, min: min, max: max, stepSize: step): - viewData = TweakViewData(type: .CGFloat, value: CGFloat(stepperControl.value), defaultValue: defaultValue, minimum: min, maximum: max, stepSize: step) - delegate?.tweakCellDidChangeCurrentValue(self) - case let .DoubleTweak(_, defaultValue: defaultValue, min: min, max: max, stepSize: step): - viewData = TweakViewData(type: .Double, value: stepperControl.value, defaultValue: defaultValue, minimum: min, maximum: max, stepSize: step) - delegate?.tweakCellDidChangeCurrentValue(self) - case .Color, .Boolean: - assertionFailure("Shouldn't be able to update text field with a Color or Boolean tweak.") - } - } -} - -extension TweakTableCell: UITextFieldDelegate { - func textFieldShouldBeginEditing(textField: UITextField) -> Bool { - return !isInFloatingTweakGroupWindow - } - - func textFieldShouldReturn(textField: UITextField) -> Bool { - textField.resignFirstResponder() - return true - } - - func textFieldDidEndEditing(textField: UITextField) { - switch viewData! { - case let .Integer(_, defaultValue: defaultValue, min: minimum, max: maximum, stepSize: step): - if let text = textField.text, newValue = Int(text) { - viewData = TweakViewData(type: .Integer, value: newValue, defaultValue: defaultValue, minimum: minimum, maximum: maximum, stepSize: step) - delegate?.tweakCellDidChangeCurrentValue(self) - } else { - updateSubviews() - } - case let .Float(_, defaultValue: defaultValue, min: minimum, max: maximum, stepSize: step): - if let text = textField.text, newValue = Float(text) { - viewData = TweakViewData(type: .CGFloat, value: CGFloat(newValue), defaultValue: defaultValue, minimum: minimum, maximum: maximum, stepSize: step) - delegate?.tweakCellDidChangeCurrentValue(self) - } else { - updateSubviews() - } - case let .DoubleTweak(_, defaultValue: defaultValue, min: minimum, max: maximum, stepSize: step): - if let text = textField.text, newValue = Double(text) { - viewData = TweakViewData(type: .Double, value: newValue, defaultValue: defaultValue, minimum: minimum, maximum: maximum, stepSize: step) - delegate?.tweakCellDidChangeCurrentValue(self) - } else { - updateSubviews() - } - case let .Color(_, defaultValue: defaultValue): - if let text = textField.text, newValue = UIColor.colorWithHexString(text) { - viewData = TweakViewData(type: .UIColor, value: newValue, defaultValue: defaultValue, minimum: nil, maximum: nil, stepSize: nil) - delegate?.tweakCellDidChangeCurrentValue(self) - } else { - updateSubviews() - } - case .Boolean: - assertionFailure("Shouldn't be able to update text field with a Boolean tweak.") - } - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakViewData.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakViewData.swift deleted file mode 100644 index b5a8babf..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakViewData.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// TweakViewData.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/19/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -/// View data used to populate our table cells -internal enum TweakViewData { - case Boolean(value: Bool, defaultValue: Bool) - case Integer(value: Int, defaultValue: Int, min: Int?, max: Int?, stepSize: Int?) - case Float(value: CGFloat, defaultValue: CGFloat, min: CGFloat?, max: CGFloat?, stepSize: CGFloat?) - case DoubleTweak(value: Double, defaultValue: Double, min: Double?, max: Double?, stepSize: Double?) - case Color(value: UIColor, defaultValue: UIColor) - - init(type: TweakViewDataType, value: T, defaultValue: T, minimum: T?, maximum: T?, stepSize: T?) { - switch type { - case .Boolean: - self = .Boolean(value: value as! Bool, defaultValue: defaultValue as! Bool) - case .UIColor: - self = .Color(value: value as! UIColor, defaultValue: defaultValue as! UIColor) - case .Integer: - let clippedValue = clip(value as! Int, minimum as? Int, maximum as? Int) - self = .Integer(value: clippedValue, defaultValue: defaultValue as! Int, min: minimum as? Int, max: maximum as? Int, stepSize: stepSize as? Int) - case .CGFloat: - let clippedValue = clip(value as! CGFloat, minimum as? CGFloat, maximum as? CGFloat) - self = .Float(value: clippedValue, defaultValue: defaultValue as! CGFloat, min: minimum as? CGFloat, max: maximum as? CGFloat, stepSize: stepSize as? CGFloat) - case .Double: - let clippedValue = clip(value as! Double, minimum as? Double, maximum as? Double) - self = .DoubleTweak(value: clippedValue, defaultValue: defaultValue as! Double, min: minimum as? Double, max: maximum as? Double, stepSize: stepSize as? Double) - } - } - - var value: TweakableType { - switch self { - case let .Boolean(value: boolValue, defaultValue: _): - return boolValue - case let .Integer(value: intValue, _, _, _, _): - return intValue - case let .Float(value: floatValue, _, _, _, _): - return floatValue - case let .DoubleTweak(value: doubleValue, _, _, _, _): - return doubleValue - case let .Color(value: colorValue, defaultValue: _): - return colorValue - } - } - - var stringRepresentation: (String, Bool) { - let string: String - let differsFromDefault: Bool - switch self { - case let .Boolean(value: value, defaultValue: defaultValue): - string = value ? "Bool(true)" : "Bool(false)" - differsFromDefault = (value != defaultValue) - case let .Integer(value: value, defaultValue: defaultValue, _, _, _): - string = "Int(\(value))" - differsFromDefault = (value != defaultValue) - case let .Float(value: value, defaultValue: defaultValue, _, _, _): - string = "Float(\(value))" - differsFromDefault = (value != defaultValue) - case let .DoubleTweak(value: value, defaultValue: defaultValue, _, _, _): - string = "Double(\(value))" - differsFromDefault = (value != defaultValue) - case let .Color(value: value, defaultValue: defaultValue): - string = "Color(\(value.hexString), alpha: \(value.alphaValue))" - differsFromDefault = (value != defaultValue) - } - return (string, differsFromDefault) - } - - private var isSignedNumberType: Bool { - switch self { - case .Integer, .Float, .DoubleTweak: - return true - case .Boolean, .Color: - return false - } - } - - // These are the defaults that UIKit has for the UIStepper min and max - internal static let stepperDefaultMinimum: Double = 0 - internal static let stepperDefaultMaximum: Double = 100 - - /// Used when no max is given and the default is > stepperDefaultMaximum - internal static let stepperBoundsMultiplier: Double = 2 - - /// UISteppers *require* a maximum value (ugh) and they default to 100 (ughhhh) - /// ...so let's set something sensible. - var stepperLimits: (stepperMin: Double, stepperMax: Double)? { - precondition(self.isSignedNumberType) - - let currentValue: Double - let defaultValue: Double - let minimum: Double? - let maximum: Double? - - switch self { - case .Boolean, .Color: - return nil - - case let .Integer(intValue, intDefaultValue, intMin, intMax, _): - currentValue = Double(intValue) - defaultValue = Double(intDefaultValue) - minimum = intMin.map(Double.init) - maximum = intMax.map(Double.init) - - case let .Float(floatValue, floatDefaultValue, floatMin, floatMax, _): - currentValue = Double(floatValue) - defaultValue = Double(floatDefaultValue) - minimum = floatMin.map(Double.init) - maximum = floatMax.map(Double.init) - - case let .DoubleTweak(doubleValue, doubleDefaultValue, doubleMin, doubleMax, _): - currentValue = doubleValue - defaultValue = doubleDefaultValue - minimum = doubleMin - maximum = doubleMax - - } - - // UIStepper defaults to 0 and 100, so we'll use those as a fallback. - var resultMin: Double = TweakViewData.stepperDefaultMinimum - var resultMax: Double = TweakViewData.stepperDefaultMaximum - - // If we have a currentValue or defaultValue that's outside the bounds, we'll want to give some space to 'em. - if (defaultValue < resultMin) || (currentValue < resultMin) { - let lowerValue = min(currentValue, defaultValue) - resultMin = (lowerValue < 0) ? - lowerValue * TweakViewData.stepperBoundsMultiplier : - lowerValue / TweakViewData.stepperBoundsMultiplier - } - - if (defaultValue > resultMax) || (currentValue > resultMax) { - let upperValue = max(currentValue, defaultValue) - resultMax = (upperValue < 0) ? - upperValue / TweakViewData.stepperBoundsMultiplier : - upperValue * TweakViewData.stepperBoundsMultiplier - } - - // Lastly, to override any above work: if an explicit minimum or maximum were given, - // we'd want to use that instead. - resultMin = minimum ?? resultMin - resultMax = maximum ?? resultMax - - return (resultMin, resultMax) - } - -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakWindow.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakWindow.swift deleted file mode 100644 index f61da1d9..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakWindow.swift +++ /dev/null @@ -1,209 +0,0 @@ -// -// TweakWindow.swift -// KATweak -// -// Created by Bryan Clark on 11/4/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -/// A UIWindow that handles the presentation and dismissal of a TweaksViewController automatically. -/// By default, the SwiftTweaks UI appears when you shake your device - but you can supply an alternate gesture, too! -/// If you'd prefer to not use this, you can also init and present a TweaksViewController yourself. -@objc public final class TweakWindow: UIWindow { - - public enum GestureType { - case Shake - case Gesture(UIGestureRecognizer) - } - - /// The amount of time you need to shake your device to bring up the Tweaks UI - private static let shakeWindowTimeInterval: Double = 0.4 - - /// The GestureType used to determine when to present the UI. - private let gestureType: GestureType - - /// By holding on to the TweaksViewController, we get easy state restoration! - private var tweaksViewController: TweaksViewController! // requires self for init - - /// Represents the "floating tweaks UI" - private var floatingTweakGroupUIWindow: HitTransparentWindow? - private let tweakStore: TweakStore - - /// We need to know if we're running in the simulator (because shake gestures don't have a time duration in the simulator) - private let runningInSimulator: Bool - - /// Whether or not the device is shaking. Used in determining when to present the Tweaks UI when the device is shaken. - private var shaking: Bool = false - - private var shouldPresentTweaks: Bool { - if tweakStore.enabled { - switch gestureType { - case .Shake: return shaking || runningInSimulator - case .Gesture: return true - } - } else { - return false - } - } - - // MARK: Init - - public init(frame: CGRect, gestureType: GestureType = .Shake, tweakStore: TweakStore) { - self.gestureType = gestureType - - self.tweakStore = tweakStore - - // Are we running on a Mac? If so, then we're in a simulator! - #if (arch(i386) || arch(x86_64)) - self.runningInSimulator = true - #else - self.runningInSimulator = false - #endif - - super.init(frame: frame) - - tintColor = AppTheme.Colors.controlTinted - - switch gestureType { - case .Gesture(let gestureRecognizer): - gestureRecognizer.addTarget(self, action: #selector(self.presentTweaks)) - case .Shake: - break - } - - tweaksViewController = TweaksViewController(tweakStore: tweakStore, delegate: self) - tweaksViewController.floatingTweaksWindowPresenter = self - } - - public required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // MARK: Shaking & Gestures - public override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) { - if motion == .MotionShake { - shaking = true - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(TweakWindow.shakeWindowTimeInterval * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { - if self.shouldPresentTweaks { - self.presentTweaks() - } - } - } - - super.motionBegan(motion, withEvent: event) - } - - public override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) { - if motion == .MotionShake { - shaking = false - } - - super.motionEnded(motion, withEvent: event) - } - - - // MARK: Presenting & Dismissing - - @objc private func presentTweaks() { - guard let rootViewController = rootViewController else { - return - } - - var visibleViewController = rootViewController - while (visibleViewController.presentedViewController != nil) { - visibleViewController = visibleViewController.presentedViewController! - } - - if !(visibleViewController is TweaksViewController) { - visibleViewController.presentViewController(tweaksViewController, animated: true, completion: nil) - } - - } - - private func dismissTweaks(completion: (() -> ())? = nil) { - tweaksViewController.dismissViewControllerAnimated(true, completion: completion) - } -} - -extension TweakWindow: TweaksViewControllerDelegate { - public func tweaksViewControllerRequestsDismiss(tweaksViewController: TweaksViewController, completion: (() -> ())? = nil) { - dismissTweaks(completion) - } -} - -extension TweakWindow: FloatingTweaksWindowPresenter { - - private static let presentationDuration: Double = 0.2 - private static let presentationDamping: CGFloat = 0.8 - private static let presentationVelocity: CGFloat = 5 - - private static let dismissalDuration: Double = 0.2 - - - /// Presents a floating TweakGroup over your app's UI, so you don't have to hop in and out of the full-modal Tweak UI. - internal func presentFloatingTweaksUIForTweakGroup(tweakGroup: TweakGroup) { - if (floatingTweakGroupUIWindow == nil) { - let window = HitTransparentWindow() - window.frame = UIScreen.mainScreen().bounds - window.backgroundColor = UIColor.clearColor() - - let floatingTweakGroupFrame = CGRect( - origin: CGPoint( - x: FloatingTweakGroupViewController.margins, - y: window.frame.size.height - FloatingTweakGroupViewController.height - FloatingTweakGroupViewController.margins - ), - size: CGSize( - width: window.frame.size.width - FloatingTweakGroupViewController.margins*2, - height: FloatingTweakGroupViewController.height - ) - ) - - let floatingTweaksVC = FloatingTweakGroupViewController(frame: floatingTweakGroupFrame, tweakStore: tweakStore, presenter: self) - floatingTweaksVC.tweakGroup = tweakGroup - window.rootViewController = floatingTweaksVC - window.addSubview(floatingTweaksVC.view) - - window.alpha = 0 - let initialWindowFrame = CGRectOffset(window.frame, 0, floatingTweaksVC.view.bounds.height) - let destinationWindowFrame = window.frame - window.makeKeyAndVisible() - floatingTweakGroupUIWindow = window - - window.frame = initialWindowFrame - UIView.animateWithDuration( - TweakWindow.presentationDuration, - delay: 0, - usingSpringWithDamping: TweakWindow.presentationDamping, - initialSpringVelocity: TweakWindow.presentationVelocity, - options: .BeginFromCurrentState, - animations: { - window.frame = destinationWindowFrame - window.alpha = 1 - }, - completion: nil - ) - } - } - - /// Dismisses the floating TweakGroup - func dismissFloatingTweaksUI() { - - guard let floatingTweakGroupUIWindow = floatingTweakGroupUIWindow else { return } - - UIView.animateWithDuration( - TweakWindow.dismissalDuration, - delay: 0, - options: .CurveEaseIn, - animations: { - floatingTweakGroupUIWindow.alpha = 0 - floatingTweakGroupUIWindow.frame = CGRectOffset(floatingTweakGroupUIWindow.frame, 0, floatingTweakGroupUIWindow.frame.height) - }, - completion: { _ in - floatingTweakGroupUIWindow.hidden = true - self.floatingTweakGroupUIWindow = nil - } - ) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakableType.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakableType.swift deleted file mode 100644 index 4005403c..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweakableType.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// TweakableType.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/5/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import Foundation -import CoreGraphics -import UIKit - -/// To add a new to our Tweak, make T conform to this protocol. -public protocol TweakableType { - static var tweakViewDataType: TweakViewDataType { get } -} - -/// The data types that are currently supported for SwiftTweaks. -/// While Tweak is generic, we have to build UI for editing each kind of - hence the need for a protocol to restrict what can be tweaked. -/// Of course, we can add new TweakViewDataTypes over time, too! -public enum TweakViewDataType { - case Boolean - case Integer - case CGFloat - case Double - case UIColor - - public static let allTypes: [TweakViewDataType] = [ - .Boolean, .Integer, .CGFloat, .Double, .UIColor - ] -} - -/// An enum for use inside Tweaks' editing UI. -/// Our public type-erasure (AnyTweak) means that this has to be public, unfortunately -/// ...but there's no need for you to directly use this enum. -public enum TweakDefaultData { - case Boolean(defaultValue: Bool) - case Integer(defaultValue: Int, min: Int?, max: Int?, stepSize: Int?) - case Float(defaultValue: CGFloat, min: CGFloat?, max: CGFloat?, stepSize: CGFloat?) - case DoubleTweak(defaultValue: Double, min: Double?, max: Double?, stepSize: Double?) - case Color(defaultValue: UIColor) -} - -// MARK: Types that conform to TweakableType - -extension Bool: TweakableType { - public static var tweakViewDataType: TweakViewDataType { - return .Boolean - } -} - -extension Int: TweakableType { - public static var tweakViewDataType: TweakViewDataType { - return .Integer - } -} - -extension CGFloat: TweakableType { - public static var tweakViewDataType: TweakViewDataType { - return .CGFloat - } -} - -extension Double: TweakableType { - public static var tweakViewDataType: TweakViewDataType { - return .Double - } -} - -extension UIColor: TweakableType { - public static var tweakViewDataType: TweakViewDataType { - return .UIColor - } -} - diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksBackupsListViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksBackupsListViewController.swift deleted file mode 100644 index 8bd557dd..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksBackupsListViewController.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// TweaksBackupsListViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/10/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal protocol TweaksBackupsListViewControllerDelegate { - func tweaksBackupsListDidPressDismiss(tweaksBackupsListViewController: TweaksBackupsListViewController) -} - -/// Lists out the TweakBackups in a given TweakStore. -internal final class TweaksBackupsListViewController: UIViewController { - private let tableView: UITableView - private let tweakStore: TweakStore - private let delegate: TweaksBackupsListViewControllerDelegate - - init(tweakStore: TweakStore, delegate: TweaksBackupsListViewControllerDelegate) { - self.tweakStore = tweakStore - self.delegate = delegate - - self.tableView = UITableView(frame: CGRectZero, style: .Plain) - - super.init(nibName: nil, bundle: nil) - - toolbarItems = [ - UIBarButtonItem(title: "New", style: .Plain, target: self, action: #selector(self.newButtonTapped)), - UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), - UIBarButtonItem(title: "Dismiss", style: .Done, target: self, action: #selector(self.dismissButtonTapped)) - ] - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.frame = view.bounds - view.addSubview(tableView) - } - - - // MARK: Events - - @objc private func newButtonTapped() { - - } - - @objc private func dismissButtonTapped() { - delegate.tweaksBackupsListDidPressDismiss(self) - } -} - - diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksCollectionsListViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksCollectionsListViewController.swift deleted file mode 100644 index f3d6f131..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksCollectionsListViewController.swift +++ /dev/null @@ -1,125 +0,0 @@ -// -// TweaksCollectionsListViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/9/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal protocol TweaksCollectionsListViewControllerDelegate { - func tweaksCollectionsListViewControllerDidTapDismissButton(tweaksCollectionsListViewController: TweaksCollectionsListViewController) - func tweaksCollectionsListViewController(tweaksCollectionsListViewController: TweaksCollectionsListViewController, didSelectTweakCollection: TweakCollection) - func tweaksCollectionsListViewControllerDidTapShareButton(tweaksCollectionsListViewController: TweaksCollectionsListViewController, shareButton: UIBarButtonItem) -} - -/// Displays a list of TweakCollections in a table. -internal final class TweaksCollectionsListViewController: UIViewController { - private let tableView: UITableView - - private let tweakStore: TweakStore - private let delegate: TweaksCollectionsListViewControllerDelegate - - - // MARK: Init - - internal init(tweakStore: TweakStore, delegate: TweaksCollectionsListViewControllerDelegate) { - self.tweakStore = tweakStore - self.delegate = delegate - - self.tableView = UITableView(frame: CGRectZero, style: .Plain) - - super.init(nibName: nil, bundle: nil) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - - // MARK: View Lifecycle - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.frame = view.bounds - tableView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] - tableView.registerClass(TweakCollectionCell.self, forCellReuseIdentifier: TweaksCollectionsListViewController.TweakCollectionCellIdentifier) - tableView.delegate = self - tableView.dataSource = self - view.addSubview(tableView) - - let resetButton = UIBarButtonItem(title: "Reset All", style: .Plain, target: self, action: #selector(self.resetStore)) - resetButton.tintColor = AppTheme.Colors.controlDestructive - navigationItem.rightBarButtonItem = resetButton - - toolbarItems = [ - UIBarButtonItem(barButtonSystemItem: .Action, target: self, action: #selector(self.actionButtonTapped)), - UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), - UIBarButtonItem(title: "Dismiss", style: .Done, target: self, action: #selector(self.dismissButtonTapped)) - ] - } - - override func viewWillAppear(animated: Bool) { - super.viewDidAppear(animated) - - if let selectedIndexPath = tableView.indexPathForSelectedRow { - tableView.deselectRowAtIndexPath(selectedIndexPath, animated: true) - } - } - - // MARK: Events - - @objc private func resetStore(sender: UIBarButtonItem) { - let confirmationAlert = UIAlertController(title: nil, message: "Reset all tweaks to their default values?", preferredStyle: .ActionSheet) - confirmationAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)) - confirmationAlert.addAction(UIAlertAction(title: "Reset All Tweaks", style: .Destructive, handler: { _ in self.tweakStore.reset() })) - confirmationAlert.popoverPresentationController?.barButtonItem = sender - presentViewController(confirmationAlert, animated: true, completion: nil) - } - - @objc private func dismissButtonTapped() { - delegate.tweaksCollectionsListViewControllerDidTapDismissButton(self) - } - - @objc private func actionButtonTapped(sender: UIBarButtonItem) { - delegate.tweaksCollectionsListViewControllerDidTapShareButton(self, shareButton: sender) - } - - private static let TweakCollectionCellIdentifier = "TweakCollectionCellIdentifier" - private class TweakCollectionCell: UITableViewCell { - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier) - accessoryType = .DisclosureIndicator - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - } -} - -extension TweaksCollectionsListViewController: UITableViewDataSource { - func numberOfSectionsInTableView(tableView: UITableView) -> Int { - return 1 - } - - func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return tweakStore.sortedTweakCollections.count - } - - func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCellWithIdentifier(TweaksCollectionsListViewController.TweakCollectionCellIdentifier, forIndexPath: indexPath) - let tweakCollection = tweakStore.sortedTweakCollections[indexPath.row] - cell.textLabel!.text = tweakCollection.title - cell.detailTextLabel!.text = "\(tweakCollection.numberOfTweaks)" - return cell - } -} - -extension TweaksCollectionsListViewController: UITableViewDelegate { - func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - delegate.tweaksCollectionsListViewController(self, didSelectTweakCollection: tweakStore.sortedTweakCollections[indexPath.row]) - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksRootViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksRootViewController.swift deleted file mode 100644 index 2a4a3c12..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksRootViewController.swift +++ /dev/null @@ -1,147 +0,0 @@ - -// -// TweaksRootViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/10/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -internal protocol TweaksRootViewControllerDelegate { - func tweaksRootViewControllerDidPressDismissButton(tweaksRootViewController: TweaksRootViewController) - func tweaksRootViewController(tweaksRootViewController: TweaksRootViewController, requestsFloatingUIForTweakGroup tweakGroup: TweakGroup) -} - -/// A "container" view controller with two states: listing out the TweakCollections, or displaying the TweakBackups -internal final class TweaksRootViewController: UIViewController { - - private let segmentedControl: UISegmentedControl - private let tweakStore: TweakStore - private let delegate: TweaksRootViewControllerDelegate - - private var content: Content? { - didSet { - if let newContent = content { - let newContentViewController = newContent.viewController - let newContentView = newContentViewController.view - - newContentView.frame = view.bounds - newContentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] - - view.addSubview(newContentView) - addChildViewController(newContentViewController) - newContentViewController.didMoveToParentViewController(self) - - toolbarItems = newContentViewController.toolbarItems - navigationItem.leftBarButtonItem = newContentViewController.navigationItem.leftBarButtonItem - navigationItem.rightBarButtonItem = newContentViewController.navigationItem.rightBarButtonItem - } - - if let oldContent = oldValue { - oldContent.viewController.view.removeFromSuperview() - oldContent.viewController.removeFromParentViewController() - } - } - } - - init(tweakStore: TweakStore, delegate: TweaksRootViewControllerDelegate) { - self.tweakStore = tweakStore - self.delegate = delegate - - self.segmentedControl = UISegmentedControl( - items: [ - NSLocalizedString("Tweaks", comment: "Segmented Control title for tweaks."), - NSLocalizedString("Backups", comment: "Segmented Control title for backups.") - ] - ) - - super.init(nibName: nil, bundle: nil) - - self.navigationItem.title = "Tweaks" -// self.navigationItem.titleView = segmentedControl - - segmentedControl.selectedSegmentIndex = 0 - segmentedControl.addTarget(self, action: #selector(self.segmentedControlValueChanged(_:)), forControlEvents: .ValueChanged) - } - - override func viewDidLoad() { - super.viewDidLoad() - self.content = Content.collectionsListWithTweakStore(tweakStore, delegate: self) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - @objc private func segmentedControlValueChanged(sender: UISegmentedControl) { - assert(sender == segmentedControl) - switch sender.selectedSegmentIndex { - case 0: - content = Content.collectionsListWithTweakStore(tweakStore, delegate: self) - case 1: - content = Content.backupsListWithTweaksStore(tweakStore, delegate: self) - default: - assertionFailure("Unexpected number of indeces in segmentedControl") - } - } - - - // MARK: Content - - private enum Content { - case CollectionsList(UIViewController) - case BackupsList(UIViewController) - - var viewController: UIViewController { - switch self { - case .CollectionsList(let viewController): - return viewController - case .BackupsList(let viewController): - return viewController - } - } - - private static func collectionsListWithTweakStore(tweakStore: TweakStore, delegate: TweaksCollectionsListViewControllerDelegate) -> Content { - return .CollectionsList(TweaksCollectionsListViewController(tweakStore: tweakStore, delegate: delegate)) - } - - private static func backupsListWithTweaksStore(tweakStore: TweakStore, delegate: TweaksBackupsListViewControllerDelegate) -> Content { - return .BackupsList(TweaksBackupsListViewController(tweakStore: tweakStore, delegate: delegate)) - } - } -} - -extension TweaksRootViewController: TweaksCollectionsListViewControllerDelegate { - func tweaksCollectionsListViewControllerDidTapDismissButton(tweaksCollectionsListViewController: TweaksCollectionsListViewController) { - delegate.tweaksRootViewControllerDidPressDismissButton(self) - } - - func tweaksCollectionsListViewController(tweaksCollectionsListViewController: TweaksCollectionsListViewController, didSelectTweakCollection tweakCollection: TweakCollection) { - let tweakCollectionViewController = TweakCollectionViewController(tweakCollection: tweakCollection, tweakStore: tweakStore, delegate: self) - self.navigationController?.pushViewController(tweakCollectionViewController, animated: true) - } - - func tweaksCollectionsListViewControllerDidTapShareButton(tweaksCollectionsListViewController: TweaksCollectionsListViewController, shareButton: UIBarButtonItem) { - let activityVC = UIActivityViewController(activityItems: [TweakStoreActivityItemSource(text: tweakStore.textRepresentation)], applicationActivities: nil) - activityVC.popoverPresentationController?.barButtonItem = shareButton - presentViewController(activityVC, animated: true, completion: nil) - } -} - -extension TweaksRootViewController: TweaksBackupsListViewControllerDelegate { - func tweaksBackupsListDidPressDismiss(tweaksBackupsListViewController: TweaksBackupsListViewController) { - delegate.tweaksRootViewControllerDidPressDismissButton(self) - } -} - -extension TweaksRootViewController: TweakCollectionViewControllerDelegate { - func tweakCollectionViewControllerDidPressDismissButton(tweakCollectionViewController: TweakCollectionViewController) { - delegate.tweaksRootViewControllerDidPressDismissButton(self) - } - - func tweakCollectionViewController(tweakCollectionViewController: TweakCollectionViewController, didTapFloatingTweakGroupButtonForTweakGroup tweakGroup: TweakGroup) { - delegate.tweaksRootViewController(self, requestsFloatingUIForTweakGroup: tweakGroup) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksViewController.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksViewController.swift deleted file mode 100644 index befc0c04..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/TweaksViewController.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// TweaksViewController.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/5/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -public protocol TweaksViewControllerDelegate: class { - func tweaksViewControllerRequestsDismiss(tweaksViewController: TweaksViewController, completion: (() -> ())?) -} - -/// The main UI for Tweaks. -/// You can init and present TweaksViewController yourself, if you'd prefer to not use TweakWindow. -public final class TweaksViewController: UIViewController { - - private let tweakStore: TweakStore - - private var navController: UINavigationController! // self required for init - - public unowned var delegate: TweaksViewControllerDelegate - internal var floatingTweaksWindowPresenter: FloatingTweaksWindowPresenter? - - internal static let dismissButtonTitle = NSLocalizedString("Dismiss", comment: "Button to dismiss TweaksViewController.") - - public init(tweakStore: TweakStore, delegate: TweaksViewControllerDelegate) { - self.tweakStore = tweakStore - self.delegate = delegate - - super.init(nibName: nil, bundle: nil) - - let tweakRootVC = TweaksRootViewController(tweakStore: tweakStore, delegate: self) - navController = UINavigationController(rootViewController: tweakRootVC) - navController.toolbarHidden = false - view.addSubview(navController.view) - } - - public required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} - -extension TweaksViewController: TweaksRootViewControllerDelegate { - internal func tweaksRootViewControllerDidPressDismissButton(tweaksRootViewController: TweaksRootViewController) { - delegate.tweaksViewControllerRequestsDismiss(self, completion: nil) - } - - internal func tweaksRootViewController(tweaksRootViewController: TweaksRootViewController, requestsFloatingUIForTweakGroup tweakGroup: TweakGroup) { - delegate.tweaksViewControllerRequestsDismiss(self) { - self.floatingTweaksWindowPresenter?.presentFloatingTweaksUIForTweakGroup(tweakGroup) - } - } -} diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIColor+Tweaks.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/UIColor+Tweaks.swift deleted file mode 100644 index 5e4cb6ce..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIColor+Tweaks.swift +++ /dev/null @@ -1,90 +0,0 @@ -// -// UIColor+Tweaks.swift -// SwiftTweaks -// -// Created by Bryan Clark on 11/16/15. -// Copyright © 2015 Khan Academy. All rights reserved. -// - -import UIKit - -// info via http://arstechnica.com/apple/2009/02/iphone-development-accessing-uicolor-components/ - -internal extension UIColor { - - /// Creates a UIColor with a given hex string (e.g. "#FF00FF") - // NOTE: Would use a failable init (e.g. `UIColor(hexString: _)` but have to wait until Swift 2.2.1 https://github.com/Khan/SwiftTweaks/issues/38 - internal static func colorWithHexString(hexString: String) -> UIColor? { - // Strip whitespace, "#", "0x", and make uppercase - let hexString = hexString - .stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) - .stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "#")) - .stringByReplacingOccurrencesOfString("0x", withString: "") - .uppercaseString - - // We should have 6 or 8 characters now. - let hexStringLength = hexString.characters.count - if (hexStringLength != 6) && (hexStringLength != 8) { - return nil - } - - // Break the string into its components - let hexStringContainsAlpha = (hexStringLength == 8) - let colorStrings: [String] = [ - hexString[hexString.startIndex...hexString.startIndex.advancedBy(1)], - hexString[hexString.startIndex.advancedBy(2)...hexString.startIndex.advancedBy(3)], - hexString[hexString.startIndex.advancedBy(4)...hexString.startIndex.advancedBy(5)], - hexStringContainsAlpha ? hexString[hexString.startIndex.advancedBy(6)...hexString.startIndex.advancedBy(7)] : "FF" - ] - - // Convert string components into their CGFloat (r,g,b,a) components - let colorFloats: [CGFloat] = colorStrings.map { - var componentInt: CUnsignedInt = 0 - NSScanner(string: $0).scanHexInt(&componentInt) - return CGFloat(componentInt) / CGFloat(255.0) - } - - return UIColor(red: colorFloats[0], green: colorFloats[1], blue: colorFloats[2], alpha: colorFloats[3]) - } - - internal convenience init(hex: UInt32, alpha: CGFloat = 1) { - self.init( - red: CGFloat((hex & 0xFF0000) >> 16) / 255.0, - green: CGFloat((hex & 0x00FF00) >> 8) / 255.0, - blue: CGFloat((hex & 0x0000FF)) / 255.0, - alpha: alpha - ) - } - - internal var alphaValue: CGFloat { - var white: CGFloat = 0 - var alpha: CGFloat = 0 - getWhite(&white, alpha: &alpha) - return alpha - } - - internal var hexString: String { - assert(canProvideRGBComponents, "Must be an RGB color to use UIColor.hexValue") - - var red: CGFloat = 0 - var green: CGFloat = 0 - var blue: CGFloat = 0 - var alpha: CGFloat = 0 - getRed(&red, green: &green, blue: &blue, alpha: &alpha) - - return String(format: "#%02x%02x%02x", arguments: [ - Int(red * 255.0), - Int(green * 255.0), - Int(blue * 255.0) - ]).uppercaseString - } - - private var canProvideRGBComponents: Bool { - switch CGColorSpaceGetModel(CGColorGetColorSpace(self.CGColor)) { - case .RGB, .Monochrome: - return true - default: - return false - } - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIEdgeInsets+EdgeInsetsTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/UIEdgeInsets+EdgeInsetsTweakTemplate.swift deleted file mode 100644 index 55088b5f..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIEdgeInsets+EdgeInsetsTweakTemplate.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// UIEdgeInsets+EdgeInsetsTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - -extension UIEdgeInsets { - init(edgeInsetsTweakTemplate: EdgeInsetsTweakTemplate, fromTweakStore tweakStore: TweakStore) { - self.init( - top: tweakStore.assign(edgeInsetsTweakTemplate.top), - left: tweakStore.assign(edgeInsetsTweakTemplate.left), - bottom: tweakStore.assign(edgeInsetsTweakTemplate.bottom), - right: tweakStore.assign(edgeInsetsTweakTemplate.right) - ) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIImage+SwiftTweaks.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/UIImage+SwiftTweaks.swift deleted file mode 100644 index 7fd535b2..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIImage+SwiftTweaks.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// UIImage+SwiftTweaks.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/6/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - -internal extension UIImage { - - enum SwiftTweaksImage: String { - case DisclosureIndicator = "disclosure-indicator" - case FloatingPlusButton = "floating-plus-button" - case FloatingCloseButton = "floating-ui-close" - case FloatingMinimizedArrow = "floating-ui-minimized-arrow" - } - - convenience init(swiftTweaksImage: SwiftTweaksImage) { - self.init(inThisBundleNamed: swiftTweaksImage.rawValue)! - } - - // NOTE (bryan): if we just used UIImage(named:_), we get crashes when running in other apps! - // (Why? Because by default, iOS searches in your app's bundle, but we need to redirect that to the bundle associated with SwiftTweaks - private convenience init?(inThisBundleNamed imageName: String) { - self.init(named: imageName, inBundle: NSBundle(forClass: TweakTableCell.self), compatibleWithTraitCollection: nil) // NOTE (bryan): Could've used any class in SwiftTweaks here. - } - - /// Returns the image, tinted to the given color. - internal func imageTintedWithColor(color: UIColor) -> UIImage { - let imageRect = CGRect(origin: CGPoint.zero, size: self.size) - - UIGraphicsBeginImageContextWithOptions(imageRect.size, false, 0.0) // Retina aware. - - drawInRect(imageRect) - color.set() - UIRectFillUsingBlendMode(imageRect, .SourceIn) - - let image = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - - return image - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIView+BasicAnimationTweakTemplate.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/UIView+BasicAnimationTweakTemplate.swift deleted file mode 100644 index 1534474a..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIView+BasicAnimationTweakTemplate.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// UIView+BasicAnimationTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import Foundation - -public extension UIView { - - /// A convenience wrapper for iOS-style spring animations. - /// Under the hood, it gets the current value for each tweak in the group, and uses that in an animation. - public static func animateWithBasicAnimationTweakTemplate( - basicAnimationTweakTemplate: BasicAnimationTweakTemplate, - tweakStore: TweakStore, - options: UIViewAnimationOptions, - animations: () -> Void, - completion: ((Bool) -> Void)? - ) { - UIView.animateWithDuration( - tweakStore.assign(basicAnimationTweakTemplate.duration), - delay: tweakStore.assign(basicAnimationTweakTemplate.delay), - options: options, - animations: animations, - completion: completion - ) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIView+TweakGroupTemplateSpringAnimation.swift b/iOS/Pods/SwiftTweaks/SwiftTweaks/UIView+TweakGroupTemplateSpringAnimation.swift deleted file mode 100644 index 6e463ae7..00000000 --- a/iOS/Pods/SwiftTweaks/SwiftTweaks/UIView+TweakGroupTemplateSpringAnimation.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// UIView+SpringAnimationTweakTemplate.swift -// SwiftTweaks -// -// Created by Bryan Clark on 4/8/16. -// Copyright © 2016 Khan Academy. All rights reserved. -// - -import UIKit - -public extension UIView { - - /// A convenience wrapper for iOS-style spring animations. - /// Under the hood, it gets the current value for each tweak in the group, and uses that in an animation. - public static func animateWithSpringAnimationTweakTemplate( - springAnimationTweakTemplate: SpringAnimationTweakTemplate, - tweakStore: TweakStore, - options: UIViewAnimationOptions, - animations: () -> Void, - completion: ((Bool) -> Void)? - ) { - UIView.animateWithDuration( - tweakStore.assign(springAnimationTweakTemplate.duration), - delay: tweakStore.assign(springAnimationTweakTemplate.delay), - usingSpringWithDamping: tweakStore.assign(springAnimationTweakTemplate.damping), - initialSpringVelocity: tweakStore.assign(springAnimationTweakTemplate.initialSpringVelocity), - options: options, - animations: animations, - completion: completion - ) - } -} \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/LICENSE b/iOS/Pods/SwiftyBeaver/LICENSE similarity index 96% rename from iOS/Pods/SwiftTweaks/LICENSE rename to iOS/Pods/SwiftyBeaver/LICENSE index 6c2cae30..5c4c4ad7 100644 --- a/iOS/Pods/SwiftTweaks/LICENSE +++ b/iOS/Pods/SwiftyBeaver/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Khan Academy +Copyright (c) 2015 Sebastian Kreutzberger Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/iOS/Pods/SwiftyBeaver/README.md b/iOS/Pods/SwiftyBeaver/README.md new file mode 100644 index 00000000..b1179c83 --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/README.md @@ -0,0 +1,159 @@ +

SwiftyBeaver
Colorful, extensible, lightweight logging for Swift 2 & 3.
Great for development & release with support for Console, File & cloud platforms.
NEW: Log during release to the conveniently built-in SwiftyBeaver Platform and Mac App!

+ +Docs | +Website | +Slack | +Twitter | +License +
+

+ +

+[![Language Swift 2 & 3](https://img.shields.io/badge/Language-Swift%202%20&%203-orange.svg)](https://developer.apple.com/swift) [![Travis Build Status](https://travis-ci.org/SwiftyBeaver/SwiftyBeaver.svg?branch=master)](https://travis-ci.org/SwiftyBeaver/SwiftyBeaver) [![Slack Status](https://slack.swiftybeaver.com/badge.svg)](https://slack.swiftybeaver.com) +
+

+---- + +
+ +### During Development: Colored Logging to Xcode Console + + + +[Learn more](http://docs.swiftybeaver.com/article/9-log-to-xcode-console) about colored logging to Xcode Console. + +
+ +### During Development: Colored Logging to File + + + +[Learn more](http://docs.swiftybeaver.com/article/10-log-to-file) about logging to file. + +
+ + +### On Release: Encrypted Logging to SwiftyBeaver Platform + + + +[Learn more](http://docs.swiftybeaver.com/article/11-log-to-swiftybeaver-platform) about logging to the SwiftyBeaver Platform during release. + +
+ + +### Browse, Search & Filter via Mac App + +![swiftybeaver-demo1](https://cloud.githubusercontent.com/assets/564725/14846071/218c0646-0c62-11e6-92cb-e6e963b68724.gif) + +[Signup to private beta](https://swiftybeaver.com) to get your development & release logs into the free Mac App. + +
+ + +## Installation + +You can use [Carthage](https://github.com/Carthage/Carthage) to install SwiftyBeaver by adding that to your Cartfile: + +``` +github "SwiftyBeaver/SwiftyBeaver" +``` + +#### via CocoaPods + +To use [CocoaPods](https://cocoapods.org) just add this to your Podfile: + +``` Ruby +pod 'SwiftyBeaver' +``` + +#### via Swift Package Manager (Swift 2.2) + +To use SwiftyBeaver as a [Swift Package Manager](https://swift.org/package-manager/) package just add the following in your Package.swift file. + +``` Swift +import PackageDescription + +let package = Package( + name: "HelloWorld", + dependencies: [ + .Package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", majorVersion: 0) + ] +) +``` + +
+ + +## Usage + +Add that near the top of your `AppDelegate.swift` to be able to use SwiftyBeaver in your whole project. + +``` Swift +import SwiftyBeaver + +let log = SwiftyBeaver.self + +``` + +At the the beginning of your `AppDelegate:didFinishLaunchingWithOptions()` add the SwiftyBeaver log destinations (console, file, etc.) and then you can already do the following log level calls globally (**colors included**): + +``` Swift +// add log destinations. at least one is needed! +let console = ConsoleDestination() // log to Xcode Console +let file = FileDestination() // log to default swiftybeaver.log file +let cloud = SBPlatformDestination(appID: "foo", appSecret: "bar", encryptionKey: "123") // to cloud +log.addDestination(console) +log.addDestination(file) +log.addDestination(cloud) + +// Now let’s log! +log.verbose("not so important") // prio 1, VERBOSE in silver +log.debug("something to debug") // prio 2, DEBUG in green +log.info("a nice information") // prio 3, INFO in blue +log.warning("oh no, that won’t be good") // prio 4, WARNING in yellow +log.error("ouch, an error did occur!") // prio 5, ERROR in red + +// log anything! +log.verbose(123) +log.info(-123.45678) +log.warning(NSDate()) +log.error(["I", "like", "logs!"]) +log.error(["name": "Mr Beaver", "address": "7 Beaver Lodge"]) +``` + +
+ +---- + +## Documentation + +**Getting Started:** + +- [Features](http://docs.swiftybeaver.com/article/7-introduction) +- [Installation](http://docs.swiftybeaver.com/article/5-installation) +- [Basic Setup](http://docs.swiftybeaver.com/article/6-basic-setup) +​ + +**Logging Destinations:** + +- [Colored Logging to Xcode Console](http://docs.swiftybeaver.com/article/9-log-to-xcode-console) +- [Colored Logging to File](http://docs.swiftybeaver.com/article/10-log-to-file) +- [Encrypted Logging & Analytics to SwiftyBeaver Platform](http://docs.swiftybeaver.com/article/11-log-to-swiftybeaver-platform) + + + +**Stay Informed:** + +- [Official Website](https://swiftybeaver.com) +- [Medium Blog](https://medium.com/swiftybeaver-blog) +- [On Twitter](https://twitter.com/SwiftyBeaver) + + +More destination & system documentation is coming soon!
Get support via Github Issues, email and public Slack channel. + + +
+## License + +SwiftyBeaver Framework is released under the [MIT License](https://github.com/SwiftyBeaver/SwiftyBeaver/blob/master/LICENSE). diff --git a/iOS/Pods/SwiftyBeaver/sources/AES256CBC.swift b/iOS/Pods/SwiftyBeaver/sources/AES256CBC.swift new file mode 100644 index 00000000..9d7449b9 --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/AES256CBC.swift @@ -0,0 +1,1199 @@ +// +// AES256CBC.swift +// AES256CBC https://github.com/SwiftyBeaver/AES256CBC +// Embedded version without public method scope +// +// Created by Sebastian Kreutzberger on 2/9/16. +// Copyright © 2016 SwiftyBeaver. All rights reserved. +// + +// ================================================================================================= +// ATTENTION: +// Please read the copyright statement of the source code by Marcin Krzyżanowski further down below +// ================================================================================================= + +import Foundation + +final class AES256CBC { + + /// returns optional encrypted string via AES-256CBC + /// automatically generates and puts a random IV at first 16 chars + /// the password must be exactly 32 chars long for AES-256 + class func encryptString(str: String, password: String) -> String? { + if !str.isEmpty && password.characters.count == 32 { + let iv = randomText(16) + let key = password + + do { + let encryptedString = try aesEncrypt(str, key: key, iv: iv) + let ret = iv + encryptedString + return ret + } catch let err as NSError { + NSLog(err.localizedDescription) + } + } + return nil + } + + /// returns optional decrypted string via AES-256CBC + /// IV need to be at first 16 chars, password must be 32 chars long + class func decryptString(str: String, password: String) -> String? { + if str.characters.count > 16 && password.characters.count == 32 { + // get AES initialization vector from first 16 chars + let ivRange = str.startIndex.. String { + let keyData = key.dataUsingEncoding(NSUTF8StringEncoding)! + let ivData = iv.dataUsingEncoding(NSUTF8StringEncoding)! + let data = str.dataUsingEncoding(NSUTF8StringEncoding)! + + let enc = try NSData.withBytes(AESCipher(key: keyData.arrayOfBytes(), + iv: ivData.arrayOfBytes()).encrypt(data.arrayOfBytes())) + let base64String: String = enc.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) + let result = String(base64String) + return result + } + + /// returns decrypted string, IV must be 16 chars long + private class func aesDecrypt(str: String, key: String, iv: String) throws -> String { + let keyData = key.dataUsingEncoding(NSUTF8StringEncoding)! + let ivData = iv.dataUsingEncoding(NSUTF8StringEncoding)! + let data = NSData(base64EncodedString: str, options: NSDataBase64DecodingOptions(rawValue: 0))! + let dec = try NSData.withBytes(AESCipher(key: keyData.arrayOfBytes(), + iv: ivData.arrayOfBytes()).decrypt(data.arrayOfBytes())) + let result = NSString(data: dec, encoding: NSUTF8StringEncoding) + return String(result!) + } + + /// returns random string (uppercase & lowercase, no spaces) of 32 characters length + /// which can be used as SHA-256 compatbile password + class func generatePassword() -> String { + return randomText(32) + } + + /// returns random text of a defined length. + /// Optional bool parameter justLowerCase to just generate random lowercase text and + /// whitespace to exclude the whitespace character + class func randomText(length: Int, justLowerCase: Bool = false, whitespace: Bool = false) -> String { + var text = "" + for _ in 1...length { + var decValue = 0 // ascii decimal value of a character + var charType = 3 // default is lowercase + if justLowerCase == false { + // randomize the character type + charType = Int(arc4random_uniform(4)) + } + switch charType { + case 1: // digit: random Int between 48 and 57 + decValue = Int(arc4random_uniform(10)) + 48 + case 2: // uppercase letter + decValue = Int(arc4random_uniform(26)) + 65 + case 3: // lowercase letter + decValue = Int(arc4random_uniform(26)) + 97 + default: // space character + if whitespace { + decValue = 32 + } else { + // upper case letter + decValue = Int(arc4random_uniform(26)) + 65 + } + } + // get ASCII character from random decimal value + let char = String(UnicodeScalar(decValue)) + text = text + char + // remove double spaces if existing + text = text.stringByReplacingOccurrencesOfString(" ", withString: " ") + } + return text + } + +} + + +// ======================================================================================== +// The following is an altered source version that only includes AES-CBC. The original software can be found at: +// https://github.com/krzyzanowskim/CryptoSwift +// +// This is the original copyright notice: +// +// Copyright (C) 2014 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, +// and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// MARK: - AESCipher + +final private class AESCipher { + + enum Error: ErrorType { + case BlockSizeExceeded + case InvalidKeyOrInitializationVector + case InvalidInitializationVector + } + + enum AESVariant: Int { + case AES128 = 1, AES192, AES256 + + var Nk: Int { // Nk words + return [4, 6, 8][self.rawValue - 1] + } + + var Nb: Int { // Nb words + return 4 + } + + var Nr: Int { // Nr + return Nk + 6 + } + } + + static let blockSize: Int = 16 // 128 /8 + + var variant: AESVariant { + switch self.key.count * 8 { + case 128: + return .AES128 + case 192: + return .AES192 + case 256: + return .AES256 + default: + preconditionFailure("Unknown AES variant for given key.") + } + } + private let key: [UInt8] + private let iv: [UInt8]? + private let blockMode = CBCBlockMode() + private lazy var expandedKey: [[UInt32]] = self.expandKey(self.key, variant: self.variant) + private lazy var expandedKeyInv: [[UInt32]] = self.expandKeyInv(self.key, variant: self.variant) + + private lazy var sBoxes:(sBox: [UInt32], invSBox: [UInt32]) = self.calculateSBox() + private lazy var sBox: [UInt32] = self.sBoxes.sBox + private lazy var sBoxInv: [UInt32] = self.sBoxes.invSBox + + // Parameters for Linear Congruence Generators + private let Rcon: [UInt8] = [ + 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, + 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, + 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, + 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, + 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, + 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, + 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, + 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, + 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, + 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, + 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, + 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, + 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, + 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d] + + private let T0: [UInt32] = [0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0xdf2f2ff, 0xbd6b6bd6, + 0xb16f6fde, 0x54c5c591, 0x50303060, 0x3010102, 0xa96767ce, 0x7d2b2b56, 0x19fefee7, 0x62d7d7b5, + 0xe6abab4d, 0x9a7676ec, 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, + 0xc947478e, 0xbf0f0fb, 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, + 0x967272e4, 0x5bc0c09b, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x5a36366c, 0x413f3f7e, + 0x2f7f7f5, 0x4fcccc83, 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x8f1f1f9, 0x937171e2, 0x73d8d8ab, + 0x53313162, 0x3f15152a, 0xc040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, + 0xf05050a, 0xb59a9a2f, 0x907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x26ebebcd, 0x6927274e, + 0xcdb2b27f, 0x9f7575ea, 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, + 0xee5a5ab4, 0xfba0a05b, 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, + 0x712f2f5e, 0x97848413, 0xf55353a6, 0x68d1d1b9, 0x0, 0x2cededc1, 0x60202040, 0x1ffcfce3, + 0xc8b1b179, 0xed5b5bb6, 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, + 0xe85858b0, 0x4acfcf85, 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, + 0x55333366, 0x94858511, 0xcf45458a, 0x10f9f9e9, 0x6020204, 0x817f7ffe, 0xf05050a0, 0x443c3c78, + 0xba9f9f25, 0xe3a8a84b, 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, + 0x48383870, 0x4f5f5f1, 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, + 0xef3f3fd, 0x6dd2d2bf, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0xe15f5fbe, 0xa2979735, + 0xcc444488, 0x3917172e, 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, + 0x2b191932, 0x957373e6, 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, + 0xab90903b, 0x8388880b, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x79dedea7, 0xe25e5ebc, + 0x1d0b0b16, 0x76dbdbad, 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0xa06060c, + 0x6c242448, 0xe45c5cb8, 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, + 0x37e4e4d3, 0x8b7979f2, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0x8c8d8d01, 0x64d5d5b1, + 0xd24e4e9c, 0xe0a9a949, 0xb46c6cd8, 0xfa5656ac, 0x7f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, + 0xe9aeae47, 0x18080810, 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, + 0xc7b4b473, 0x51c6c697, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0xdd4b4b96, 0xdcbdbd61, + 0x868b8b0d, 0x858a8a0f, 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x5030306, + 0x1f6f6f7, 0x120e0e1c, 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, + 0x271d1d3a, 0xb99e9e27, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xbb6969d2, 0x70d9d9a9, + 0x898e8e07, 0xa7949433, 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, + 0x78282850, 0x7adfdfa5, 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, + 0xc6424284, 0xb86868d0, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xcbb0b07b, 0xfc5454a8, + 0xd6bbbb6d, 0x3a16162c] + + private let T0_INV: [UInt32] = [0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, 0xcb6bab3b, 0xf1459d1f, + 0xab58faac, 0x9303e34b, 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, 0xfcd7e54f, 0xd7cb2ac5, + 0x80443526, 0x8fa362b5, 0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d, 0x2752fc3, 0x12f04c81, + 0xa397468d, 0xc6f9d36b, 0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295, 0x2d83bed4, 0xd3217458, + 0x2969e049, 0x44c8c98e, 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927, 0xb64fe1be, 0x17ad88f0, + 0x66ac20c9, 0xb43ace7d, 0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362, 0xe07764b1, 0x84ae6bbb, + 0x1ca081fe, 0x942b08f9, 0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52, 0x23d373ab, 0xe2024b72, + 0x578f1fe3, 0x2aab5566, 0x728ebb2, 0x3c2b52f, 0x9a7bc586, 0xa50837d3, 0xf2872830, 0xb2a5bf23, + 0xba6a0302, 0x5c8216ed, 0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e, 0xcdf4da65, 0xd5be0506, + 0x1f6234d1, 0x8afea6c4, 0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4, 0x39ec830b, 0xaaef6040, + 0x69f715e, 0x51106ebd, 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d, 0xb58d5491, 0x55dc471, + 0x6fd40604, 0xff155060, 0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967, 0xbd42e8b0, 0x888b8907, + 0x385b19e7, 0xdbeec879, 0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x0, 0x83868009, 0x48ed2b32, + 0xac70111e, 0x4e725a6c, 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36, 0x64d90f0a, 0x21a65c68, + 0xd1545b9b, 0x3a2e3624, 0xb1670a0c, 0xfe75793, 0xd296eeb4, 0x9e919b1b, 0x4fc5c080, 0xa220dc61, + 0x694b775a, 0x161a121c, 0xaba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12, 0xb0d090e, 0xadc78bf2, + 0xb9a8b62d, 0xc8a91e14, 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3, 0x9f2601f7, 0xbcf5725c, + 0xc53b6644, 0x347efb5b, 0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8, 0xcadc31d7, 0x10856342, + 0x40229713, 0x2011c684, 0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7, 0x4b2f9e1d, 0xf330b2dc, + 0xec52860d, 0xd0e3c177, 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947, 0xc48cfca8, 0x1a3ff0a0, + 0xd82c7d56, 0xef903322, 0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498, 0xcf81f5a6, 0x28de7aa5, + 0x268eb7da, 0xa4bfad3f, 0xe49d3a2c, 0xd927850, 0x9bcc5f6a, 0x62467e54, 0xc2138df6, 0xe8b8d890, + 0x5ef7392e, 0xf5afc382, 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf, 0x3b99acc8, 0xa77d1810, + 0x6e639ce8, 0x7bbb3bdb, 0x97826cd, 0xf418596e, 0x1b79aec, 0xa89a4f83, 0x656e95e6, 0x7ee6ffaa, + 0x8cfbc21, 0xe6e815ef, 0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029, 0xafb2a431, 0x31233f2a, + 0x3094a5c6, 0xc066a235, 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733, 0x4a9804f1, 0xf7daec41, + 0xe50cd7f, 0x2ff69117, 0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4, 0xe3b5d19e, 0x1b886a4c, + 0xb81f2cc1, 0x7f516546, 0x4ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb, 0x5a1d67b3, 0x52d2db92, + 0x335610e9, 0x1347d66d, 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb, 0xee27a9ce, 0x35c961b7, + 0xede51ce1, 0x3cb1477a, 0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773, 0xeacdf753, 0x5baafd5f, + 0x146f3ddf, 0x86db4478, 0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2, 0x72c31d16, 0xc25e2bc, + 0x8b493c28, 0x41950dff, 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664, 0x6184cb7b, 0x70b632d5, + 0x745c6c48, 0x4257b8d0] + + private let T1: [UInt32] = [0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd, + 0x6f6fdeb1, 0xc5c59154, 0x30306050, 0x1010203, 0x6767cea9, 0x2b2b567d, 0xfefee719, 0xd7d7b562, + 0xabab4de6, 0x7676ec9a, 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, + 0x47478ec9, 0xf0f0fb0b, 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7, + 0x7272e496, 0xc0c09b5b, 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, 0x36366c5a, 0x3f3f7e41, + 0xf7f7f502, 0xcccc834f, 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, + 0x31316253, 0x15152a3f, 0x404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1, + 0x5050a0f, 0x9a9a2fb5, 0x7070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, 0xebebcd26, 0x27274e69, + 0xb2b27fcd, 0x7575ea9f, 0x909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, + 0x5a5ab4ee, 0xa0a05bfb, 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e, + 0x2f2f5e71, 0x84841397, 0x5353a6f5, 0xd1d1b968, 0x0, 0xededc12c, 0x20204060, 0xfcfce31f, + 0xb1b179c8, 0x5b5bb6ed, 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, + 0x5858b0e8, 0xcfcf854a, 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7, + 0x33336655, 0x85851194, 0x45458acf, 0xf9f9e910, 0x2020406, 0x7f7ffe81, 0x5050a0f0, 0x3c3c7844, + 0x9f9f25ba, 0xa8a84be3, 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, + 0x38387048, 0xf5f5f104, 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a, + 0xf3f3fd0e, 0xd2d2bf6d, 0xcdcd814c, 0xc0c1814, 0x13132635, 0xececc32f, 0x5f5fbee1, 0x979735a2, + 0x444488cc, 0x17172e39, 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, + 0x1919322b, 0x7373e695, 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e, + 0x90903bab, 0x88880b83, 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, 0xdedea779, 0x5e5ebce2, + 0xb0b161d, 0xdbdbad76, 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0xa0a141e, 0x494992db, 0x6060c0a, + 0x2424486c, 0x5c5cb8e4, 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4, + 0xe4e4d337, 0x7979f28b, 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, 0x8d8d018c, 0xd5d5b164, + 0x4e4e9cd2, 0xa9a949e0, 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, + 0xaeae47e9, 0x8081018, 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1, + 0xb4b473c7, 0xc6c69751, 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, 0x4b4b96dd, 0xbdbd61dc, + 0x8b8b0d86, 0x8a8a0f85, 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x3030605, + 0xf6f6f701, 0xe0e1c12, 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958, + 0x1d1d3a27, 0x9e9e27b9, 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, 0x6969d2bb, 0xd9d9a970, + 0x8e8e0789, 0x949433a7, 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, + 0x28285078, 0xdfdfa57a, 0x8c8c038f, 0xa1a159f8, 0x89890980, 0xd0d1a17, 0xbfbf65da, 0xe6e6d731, + 0x424284c6, 0x6868d0b8, 0x414182c3, 0x999929b0, 0x2d2d5a77, 0xf0f1e11, 0xb0b07bcb, 0x5454a8fc, + 0xbbbb6dd6, 0x16162c3a] + + private let T1_INV: [UInt32] = [0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96, 0x6bab3bcb, + 0x459d1ff1, 0x58faacab, 0x3e34b93, 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525, 0xd7e54ffc, + 0xcb2ac5d7, 0x44352680, 0xa362b58f, 0x5ab1de49, 0x1bba2567, 0xeea4598, 0xc0fe5de1, 0x752fc302, + 0xf04c8112, 0x97468da3, 0xf9d36bc6, 0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da, 0x83bed42d, + 0x217458d3, 0x69e04929, 0xc8c98e44, 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd, 0x4fe1beb6, + 0xad88f017, 0xac20c966, 0x3ace7db4, 0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245, 0x7764b1e0, + 0xae6bbb84, 0xa081fe1c, 0x2b08f994, 0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7, 0xd373ab23, + 0x24b72e2, 0x8f1fe357, 0xab55662a, 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x837d3a5, 0x872830f2, + 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c, 0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1, 0xf4da65cd, + 0xbe0506d5, 0x6234d11f, 0xfea6c48a, 0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475, 0xec830b39, + 0xef6040aa, 0x9f715e06, 0x106ebd51, 0x8a213ef9, 0x6dd963d, 0x53eddae, 0xbde64d46, 0x8d5491b5, + 0x5dc47105, 0xd406046f, 0x155060ff, 0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777, 0x42e8b0bd, + 0x8b890788, 0x5b19e738, 0xeec879db, 0xa7ca147, 0xf427ce9, 0x1e84f8c9, 0x0, 0x86800983, 0xed2b3248, + 0x70111eac, 0x725a6c4e, 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627, 0xd90f0a64, 0xa65c6821, + 0x545b9bd1, 0x2e36243a, 0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e, 0xc5c0804f, 0x20dc61a2, + 0x4b775a69, 0x1a121c16, 0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d, 0xd090e0b, 0xc78bf2ad, + 0xa8b62db9, 0xa91e14c8, 0x19f15785, 0x775af4c, 0xdd99eebb, 0x607fa3fd, 0x2601f79f, 0xf5725cbc, + 0x3b6644c5, 0x7efb5b34, 0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863, 0xdc31d7ca, 0x85634210, + 0x22971340, 0x11c68420, 0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d, 0x2f9e1d4b, 0x30b2dcf3, + 0x52860dec, 0xe3c177d0, 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722, 0x8cfca8c4, 0x3ff0a01a, + 0x2c7d56d8, 0x903322ef, 0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0xbd49836, 0x81f5a6cf, 0xde7aa528, + 0x8eb7da26, 0xbfad3fa4, 0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462, 0x138df6c2, 0xb8d890e8, + 0xf7392e5e, 0xafc382f5, 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3, 0x99acc83b, 0x7d1810a7, + 0x639ce86e, 0xbb3bdb7b, 0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8, 0x6e95e665, 0xe6ffaa7e, + 0xcfbc2108, 0xe815efe6, 0x9be7bad9, 0x366f4ace, 0x99fead4, 0x7cb029d6, 0xb2a431af, 0x233f2a31, + 0x94a5c630, 0x66a235c0, 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315, 0x9804f14a, 0xdaec41f7, + 0x50cd7f0e, 0xf691172f, 0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x496e4df, 0xb5d19ee3, 0x886a4c1b, + 0x1f2cc1b8, 0x5165467f, 0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e, 0x1d67b35a, 0xd2db9252, + 0x5610e933, 0x47d66d13, 0x61d79a8c, 0xca1377a, 0x14f8598e, 0x3c13eb89, 0x27a9ceee, 0xc961b735, + 0xe51ce1ed, 0xb1477a3c, 0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf, 0xcdf753ea, 0xaafd5f5b, + 0x6f3ddf14, 0xdb447886, 0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f, 0xc31d1672, 0x25e2bc0c, + 0x493c288b, 0x950dff41, 0x1a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490, 0x84cb7b61, 0xb632d570, + 0x5c6c4874, 0x57b8d042] + + private let T2: [UInt32] = [0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b, + 0x6fdeb16f, 0xc59154c5, 0x30605030, 0x1020301, 0x67cea967, 0x2b567d2b, 0xfee719fe, 0xd7b562d7, + 0xab4de6ab, 0x76ec9a76, 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, + 0x478ec947, 0xf0fb0bf0, 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4, + 0x72e49672, 0xc09b5bc0, 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, 0x366c5a36, 0x3f7e413f, + 0xf7f502f7, 0xcc834fcc, 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, + 0x31625331, 0x152a3f15, 0x4080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196, + 0x50a0f05, 0x9a2fb59a, 0x70e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, 0xebcd26eb, 0x274e6927, + 0xb27fcdb2, 0x75ea9f75, 0x9121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, + 0x5ab4ee5a, 0xa05bfba0, 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3, + 0x2f5e712f, 0x84139784, 0x53a6f553, 0xd1b968d1, 0x0, 0xedc12ced, 0x20406020, 0xfce31ffc, + 0xb179c8b1, 0x5bb6ed5b, 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, + 0x58b0e858, 0xcf854acf, 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d, + 0x33665533, 0x85119485, 0x458acf45, 0xf9e910f9, 0x2040602, 0x7ffe817f, 0x50a0f050, 0x3c78443c, + 0x9f25ba9f, 0xa84be3a8, 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, + 0x38704838, 0xf5f104f5, 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff, + 0xf3fd0ef3, 0xd2bf6dd2, 0xcd814ccd, 0xc18140c, 0x13263513, 0xecc32fec, 0x5fbee15f, 0x9735a297, + 0x4488cc44, 0x172e3917, 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, + 0x19322b19, 0x73e69573, 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a, + 0x903bab90, 0x880b8388, 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, 0xdea779de, 0x5ebce25e, + 0xb161d0b, 0xdbad76db, 0xe0db3be0, 0x32645632, 0x3a744e3a, 0xa141e0a, 0x4992db49, 0x60c0a06, + 0x24486c24, 0x5cb8e45c, 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495, + 0xe4d337e4, 0x79f28b79, 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, 0x8d018c8d, 0xd5b164d5, + 0x4e9cd24e, 0xa949e0a9, 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, + 0xae47e9ae, 0x8101808, 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6, + 0xb473c7b4, 0xc69751c6, 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, 0x4b96dd4b, 0xbd61dcbd, + 0x8b0d868b, 0x8a0f858a, 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x3060503, + 0xf6f701f6, 0xe1c120e, 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1, + 0x1d3a271d, 0x9e27b99e, 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, 0x69d2bb69, 0xd9a970d9, + 0x8e07898e, 0x9433a794, 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, + 0x28507828, 0xdfa57adf, 0x8c038f8c, 0xa159f8a1, 0x89098089, 0xd1a170d, 0xbf65dabf, 0xe6d731e6, + 0x4284c642, 0x68d0b868, 0x4182c341, 0x9929b099, 0x2d5a772d, 0xf1e110f, 0xb07bcbb0, 0x54a8fc54, + 0xbb6dd6bb, 0x162c3a16] + + private let T2_INV: [UInt32] = [0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, 0xab3bcb6b, 0x9d1ff145, + 0xfaacab58, 0xe34b9303, 0x302055fa, 0x76adf66d, 0xcc889176, 0x2f5254c, 0xe54ffcd7, 0x2ac5d7cb, + 0x35268044, 0x62b58fa3, 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0, 0x2fc30275, 0x4c8112f0, + 0x468da397, 0xd36bc6f9, 0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59, 0xbed42d83, 0x7458d321, + 0xe0492969, 0xc98e44c8, 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71, 0xe1beb64f, 0x88f017ad, + 0x20c966ac, 0xce7db43a, 0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f, 0x64b1e077, 0x6bbb84ae, + 0x81fe1ca0, 0x8f9942b, 0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8, 0x73ab23d3, 0x4b72e202, + 0x1fe3578f, 0x55662aab, 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508, 0x2830f287, 0xbf23b2a5, + 0x302ba6a, 0x16ed5c82, 0xcf8a2b1c, 0x79a792b4, 0x7f3f0f2, 0x694ea1e2, 0xda65cdf4, 0x506d5be, + 0x34d11f62, 0xa6c48afe, 0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb, 0x830b39ec, 0x6040aaef, + 0x715e069f, 0x6ebd5110, 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, 0x5491b58d, 0xc471055d, + 0x6046fd4, 0x5060ff15, 0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e, 0xe8b0bd42, 0x8907888b, + 0x19e7385b, 0xc879dbee, 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x0, 0x80098386, 0x2b3248ed, + 0x111eac70, 0x5a6c4e72, 0xefdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739, 0xf0a64d9, 0x5c6821a6, + 0x5b9bd154, 0x36243a2e, 0xa0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91, 0xc0804fc5, 0xdc61a220, + 0x775a694b, 0x121c161a, 0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, 0x90e0b0d, 0x8bf2adc7, + 0xb62db9a8, 0x1e14c8a9, 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60, 0x1f79f26, 0x725cbcf5, + 0x6644c53b, 0xfb5b347e, 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1, 0x31d7cadc, 0x63421085, + 0x97134022, 0xc6842011, 0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1, 0x9e1d4b2f, 0xb2dcf330, + 0x860dec52, 0xc177d0e3, 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264, 0xfca8c48c, 0xf0a01a3f, + 0x7d56d82c, 0x3322ef90, 0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b, 0xf5a6cf81, 0x7aa528de, + 0xb7da268e, 0xad3fa4bf, 0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246, 0x8df6c213, 0xd890e8b8, + 0x392e5ef7, 0xc382f5af, 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312, 0xacc83b99, 0x1810a77d, + 0x9ce86e63, 0x3bdb7bbb, 0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a, 0x95e6656e, 0xffaa7ee6, + 0xbc2108cf, 0x15efe6e8, 0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c, 0xa431afb2, 0x3f2a3123, + 0xa5c63094, 0xa235c066, 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, 0x4f14a98, 0xec41f7da, + 0xcd7f0e50, 0x91172ff6, 0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04, 0xd19ee3b5, 0x6a4c1b88, + 0x2cc1b81f, 0x65467f51, 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0xbfb2e41, 0x67b35a1d, 0xdb9252d2, + 0x10e93356, 0xd66d1347, 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c, 0xa9ceee27, 0x61b735c9, + 0x1ce1ede5, 0x477a3cb1, 0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37, 0xf753eacd, 0xfd5f5baa, + 0x3ddf146f, 0x447886db, 0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, 0x1d1672c3, 0xe2bc0c25, + 0x3c288b49, 0xdff4195, 0xa8397101, 0xc08deb3, 0xb4d89ce4, 0x566490c1, 0xcb7b6184, 0x32d570b6, + 0x6c48745c, 0xb8d04257] + + private let T3: [UInt32] = [0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b, + 0xdeb16f6f, 0x9154c5c5, 0x60503030, 0x2030101, 0xcea96767, 0x567d2b2b, 0xe719fefe, 0xb562d7d7, + 0x4de6abab, 0xec9a7676, 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, + 0x8ec94747, 0xfb0bf0f0, 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4, + 0xe4967272, 0x9b5bc0c0, 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, 0x6c5a3636, 0x7e413f3f, + 0xf502f7f7, 0x834fcccc, 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, + 0x62533131, 0x2a3f1515, 0x80c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696, + 0xa0f0505, 0x2fb59a9a, 0xe090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, 0xcd26ebeb, 0x4e692727, + 0x7fcdb2b2, 0xea9f7575, 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, + 0xb4ee5a5a, 0x5bfba0a0, 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3, + 0x5e712f2f, 0x13978484, 0xa6f55353, 0xb968d1d1, 0x0, 0xc12ceded, 0x40602020, 0xe31ffcfc, 0x79c8b1b1, + 0xb6ed5b5b, 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, + 0x854acfcf, 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d, 0x66553333, + 0x11948585, 0x8acf4545, 0xe910f9f9, 0x4060202, 0xfe817f7f, 0xa0f05050, 0x78443c3c, 0x25ba9f9f, + 0x4be3a8a8, 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x58a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, + 0xf104f5f5, 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff, 0xfd0ef3f3, + 0xbf6dd2d2, 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, 0xbee15f5f, 0x35a29797, 0x88cc4444, + 0x2e391717, 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, + 0xe6957373, 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a, 0x3bab9090, + 0xb838888, 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, 0xa779dede, 0xbce25e5e, 0x161d0b0b, + 0xad76dbdb, 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, 0x92db4949, 0xc0a0606, 0x486c2424, + 0xb8e45c5c, 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595, 0xd337e4e4, + 0xf28b7979, 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, 0x18c8d8d, 0xb164d5d5, 0x9cd24e4e, + 0x49e0a9a9, 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, + 0x10180808, 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, + 0x9751c6c6, 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, 0x96dd4b4b, 0x61dcbdbd, 0xd868b8b, + 0xf858a8a, 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x6050303, 0xf701f6f6, + 0x1c120e0e, 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1, 0x3a271d1d, + 0x27b99e9e, 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, 0xd2bb6969, 0xa970d9d9, 0x7898e8e, + 0x33a79494, 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, + 0xa57adfdf, 0x38f8c8c, 0x59f8a1a1, 0x9808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6, 0x84c64242, + 0xd0b86868, 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, 0x7bcbb0b0, 0xa8fc5454, + 0x6dd6bbbb, 0x2c3a1616] + + private let T3_INV: [UInt32] = [0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, 0x3bcb6bab, 0x1ff1459d, + 0xacab58fa, 0x4b9303e3, 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02, 0x4ffcd7e5, 0xc5d7cb2a, + 0x26804435, 0xb58fa362, 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe, 0xc302752f, 0x8112f04c, + 0x8da39746, 0x6bc6f9d3, 0x3e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952, 0xd42d83be, 0x58d32174, + 0x492969e0, 0x8e44c8c9, 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9, 0xbeb64fe1, 0xf017ad88, + 0xc966ac20, 0x7db43ace, 0x63184adf, 0xe582311a, 0x97603351, 0x62457f53, 0xb1e07764, 0xbb84ae6b, + 0xfe1ca081, 0xf9942b08, 0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b, 0xab23d373, 0x72e2024b, + 0xe3578f1f, 0x662aab55, 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837, 0x30f28728, 0x23b2a5bf, + 0x2ba6a03, 0xed5c8216, 0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269, 0x65cdf4da, 0x6d5be05, + 0xd11f6234, 0xc48afea6, 0x349d532e, 0xa2a055f3, 0x532e18a, 0xa475ebf6, 0xb39ec83, 0x40aaef60, + 0x5e069f71, 0xbd51106e, 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, 0x91b58d54, 0x71055dc4, + 0x46fd406, 0x60ff1550, 0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9, 0xb0bd42e8, 0x7888b89, + 0xe7385b19, 0x79dbeec8, 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x0, 0x9838680, 0x3248ed2b, 0x1eac7011, + 0x6c4e725a, 0xfdfbff0e, 0xf563885, 0x3d1ed5ae, 0x3627392d, 0xa64d90f, 0x6821a65c, 0x9bd1545b, + 0x243a2e36, 0xcb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b, 0x804fc5c0, 0x61a220dc, 0x5a694b77, + 0x1c161a12, 0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, 0xe0b0d09, 0xf2adc78b, 0x2db9a8b6, + 0x14c8a91e, 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f, 0xf79f2601, 0x5cbcf572, 0x44c53b66, + 0x5b347efb, 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4, 0xd7cadc31, 0x42108563, 0x13402297, + 0x842011c6, 0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129, 0x1d4b2f9e, 0xdcf330b2, 0xdec5286, + 0x77d0e3c1, 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9, 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, + 0x22ef9033, 0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4, 0xa6cf81f5, 0xa528de7a, 0xda268eb7, + 0x3fa4bfad, 0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e, 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, + 0x82f5afc3, 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225, 0xc83b99ac, 0x10a77d18, 0xe86e639c, + 0xdb7bbb3b, 0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f, 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, + 0xefe6e815, 0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0, 0x31afb2a4, 0x2a31233f, 0xc63094a5, + 0x35c066a2, 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, 0xf14a9804, 0x41f7daec, 0x7f0e50cd, + 0x172ff691, 0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496, 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, + 0x467f5165, 0x9d04ea5e, 0x15d358c, 0xfa737487, 0xfb2e410b, 0xb35a1d67, 0x9252d2db, 0xe9335610, + 0x6d1347d6, 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13, 0xceee27a9, 0xb735c961, 0xe1ede51c, + 0x7a3cb147, 0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7, 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, + 0x7886db44, 0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, 0x1672c31d, 0xbc0c25e2, 0x288b493c, + 0xff41950d, 0x397101a8, 0x8deb30c, 0xd89ce4b4, 0x6490c156, 0x7b6184cb, 0xd570b632, + 0x48745c6c, 0xd04257b8] + + private var U1: [UInt32] = [0x0, 0xb0d090e, 0x161a121c, 0x1d171b12, 0x2c342438, 0x27392d36, 0x3a2e3624, + 0x31233f2a, 0x58684870, 0x5365417e, 0x4e725a6c, 0x457f5362, 0x745c6c48, 0x7f516546, 0x62467e54, + 0x694b775a, 0xb0d090e0, 0xbbdd99ee, 0xa6ca82fc, 0xadc78bf2, 0x9ce4b4d8, 0x97e9bdd6, 0x8afea6c4, + 0x81f3afca, 0xe8b8d890, 0xe3b5d19e, 0xfea2ca8c, 0xf5afc382, 0xc48cfca8, 0xcf81f5a6, 0xd296eeb4, + 0xd99be7ba, 0x7bbb3bdb, 0x70b632d5, 0x6da129c7, 0x66ac20c9, 0x578f1fe3, 0x5c8216ed, 0x41950dff, + 0x4a9804f1, 0x23d373ab, 0x28de7aa5, 0x35c961b7, 0x3ec468b9, 0xfe75793, 0x4ea5e9d, 0x19fd458f, + 0x12f04c81, 0xcb6bab3b, 0xc066a235, 0xdd71b927, 0xd67cb029, 0xe75f8f03, 0xec52860d, 0xf1459d1f, + 0xfa489411, 0x9303e34b, 0x980eea45, 0x8519f157, 0x8e14f859, 0xbf37c773, 0xb43ace7d, 0xa92dd56f, + 0xa220dc61, 0xf66d76ad, 0xfd607fa3, 0xe07764b1, 0xeb7a6dbf, 0xda595295, 0xd1545b9b, 0xcc434089, + 0xc74e4987, 0xae053edd, 0xa50837d3, 0xb81f2cc1, 0xb31225cf, 0x82311ae5, 0x893c13eb, 0x942b08f9, + 0x9f2601f7, 0x46bde64d, 0x4db0ef43, 0x50a7f451, 0x5baafd5f, 0x6a89c275, 0x6184cb7b, 0x7c93d069, + 0x779ed967, 0x1ed5ae3d, 0x15d8a733, 0x8cfbc21, 0x3c2b52f, 0x32e18a05, 0x39ec830b, 0x24fb9819, + 0x2ff69117, 0x8dd64d76, 0x86db4478, 0x9bcc5f6a, 0x90c15664, 0xa1e2694e, 0xaaef6040, 0xb7f87b52, + 0xbcf5725c, 0xd5be0506, 0xdeb30c08, 0xc3a4171a, 0xc8a91e14, 0xf98a213e, 0xf2872830, 0xef903322, + 0xe49d3a2c, 0x3d06dd96, 0x360bd498, 0x2b1ccf8a, 0x2011c684, 0x1132f9ae, 0x1a3ff0a0, 0x728ebb2, + 0xc25e2bc, 0x656e95e6, 0x6e639ce8, 0x737487fa, 0x78798ef4, 0x495ab1de, 0x4257b8d0, 0x5f40a3c2, + 0x544daacc, 0xf7daec41, 0xfcd7e54f, 0xe1c0fe5d, 0xeacdf753, 0xdbeec879, 0xd0e3c177, 0xcdf4da65, + 0xc6f9d36b, 0xafb2a431, 0xa4bfad3f, 0xb9a8b62d, 0xb2a5bf23, 0x83868009, 0x888b8907, 0x959c9215, + 0x9e919b1b, 0x470a7ca1, 0x4c0775af, 0x51106ebd, 0x5a1d67b3, 0x6b3e5899, 0x60335197, 0x7d244a85, + 0x7629438b, 0x1f6234d1, 0x146f3ddf, 0x97826cd, 0x2752fc3, 0x335610e9, 0x385b19e7, 0x254c02f5, + 0x2e410bfb, 0x8c61d79a, 0x876cde94, 0x9a7bc586, 0x9176cc88, 0xa055f3a2, 0xab58faac, 0xb64fe1be, + 0xbd42e8b0, 0xd4099fea, 0xdf0496e4, 0xc2138df6, 0xc91e84f8, 0xf83dbbd2, 0xf330b2dc, 0xee27a9ce, + 0xe52aa0c0, 0x3cb1477a, 0x37bc4e74, 0x2aab5566, 0x21a65c68, 0x10856342, 0x1b886a4c, 0x69f715e, + 0xd927850, 0x64d90f0a, 0x6fd40604, 0x72c31d16, 0x79ce1418, 0x48ed2b32, 0x43e0223c, 0x5ef7392e, + 0x55fa3020, 0x1b79aec, 0xaba93e2, 0x17ad88f0, 0x1ca081fe, 0x2d83bed4, 0x268eb7da, 0x3b99acc8, + 0x3094a5c6, 0x59dfd29c, 0x52d2db92, 0x4fc5c080, 0x44c8c98e, 0x75ebf6a4, 0x7ee6ffaa, 0x63f1e4b8, + 0x68fcedb6, 0xb1670a0c, 0xba6a0302, 0xa77d1810, 0xac70111e, 0x9d532e34, 0x965e273a, 0x8b493c28, + 0x80443526, 0xe90f427c, 0xe2024b72, 0xff155060, 0xf418596e, 0xc53b6644, 0xce366f4a, 0xd3217458, + 0xd82c7d56, 0x7a0ca137, 0x7101a839, 0x6c16b32b, 0x671bba25, 0x5638850f, 0x5d358c01, 0x40229713, + 0x4b2f9e1d, 0x2264e947, 0x2969e049, 0x347efb5b, 0x3f73f255, 0xe50cd7f, 0x55dc471, 0x184adf63, + 0x1347d66d, 0xcadc31d7, 0xc1d138d9, 0xdcc623cb, 0xd7cb2ac5, 0xe6e815ef, 0xede51ce1, 0xf0f207f3, + 0xfbff0efd, 0x92b479a7, 0x99b970a9, 0x84ae6bbb, 0x8fa362b5, 0xbe805d9f, 0xb58d5491, + 0xa89a4f83, 0xa397468d] + + private var U2: [UInt32] = [0x0, 0xd090e0b, 0x1a121c16, 0x171b121d, 0x3424382c, 0x392d3627, + 0x2e36243a, 0x233f2a31, 0x68487058, 0x65417e53, 0x725a6c4e, 0x7f536245, 0x5c6c4874, 0x5165467f, + 0x467e5462, 0x4b775a69, 0xd090e0b0, 0xdd99eebb, 0xca82fca6, 0xc78bf2ad, 0xe4b4d89c, 0xe9bdd697, + 0xfea6c48a, 0xf3afca81, 0xb8d890e8, 0xb5d19ee3, 0xa2ca8cfe, 0xafc382f5, 0x8cfca8c4, 0x81f5a6cf, + 0x96eeb4d2, 0x9be7bad9, 0xbb3bdb7b, 0xb632d570, 0xa129c76d, 0xac20c966, 0x8f1fe357, 0x8216ed5c, + 0x950dff41, 0x9804f14a, 0xd373ab23, 0xde7aa528, 0xc961b735, 0xc468b93e, 0xe757930f, 0xea5e9d04, + 0xfd458f19, 0xf04c8112, 0x6bab3bcb, 0x66a235c0, 0x71b927dd, 0x7cb029d6, 0x5f8f03e7, 0x52860dec, + 0x459d1ff1, 0x489411fa, 0x3e34b93, 0xeea4598, 0x19f15785, 0x14f8598e, 0x37c773bf, 0x3ace7db4, + 0x2dd56fa9, 0x20dc61a2, 0x6d76adf6, 0x607fa3fd, 0x7764b1e0, 0x7a6dbfeb, 0x595295da, 0x545b9bd1, + 0x434089cc, 0x4e4987c7, 0x53eddae, 0x837d3a5, 0x1f2cc1b8, 0x1225cfb3, 0x311ae582, 0x3c13eb89, + 0x2b08f994, 0x2601f79f, 0xbde64d46, 0xb0ef434d, 0xa7f45150, 0xaafd5f5b, 0x89c2756a, 0x84cb7b61, + 0x93d0697c, 0x9ed96777, 0xd5ae3d1e, 0xd8a73315, 0xcfbc2108, 0xc2b52f03, 0xe18a0532, 0xec830b39, + 0xfb981924, 0xf691172f, 0xd64d768d, 0xdb447886, 0xcc5f6a9b, 0xc1566490, 0xe2694ea1, 0xef6040aa, + 0xf87b52b7, 0xf5725cbc, 0xbe0506d5, 0xb30c08de, 0xa4171ac3, 0xa91e14c8, 0x8a213ef9, 0x872830f2, + 0x903322ef, 0x9d3a2ce4, 0x6dd963d, 0xbd49836, 0x1ccf8a2b, 0x11c68420, 0x32f9ae11, 0x3ff0a01a, + 0x28ebb207, 0x25e2bc0c, 0x6e95e665, 0x639ce86e, 0x7487fa73, 0x798ef478, 0x5ab1de49, 0x57b8d042, + 0x40a3c25f, 0x4daacc54, 0xdaec41f7, 0xd7e54ffc, 0xc0fe5de1, 0xcdf753ea, 0xeec879db, 0xe3c177d0, + 0xf4da65cd, 0xf9d36bc6, 0xb2a431af, 0xbfad3fa4, 0xa8b62db9, 0xa5bf23b2, 0x86800983, 0x8b890788, + 0x9c921595, 0x919b1b9e, 0xa7ca147, 0x775af4c, 0x106ebd51, 0x1d67b35a, 0x3e58996b, 0x33519760, + 0x244a857d, 0x29438b76, 0x6234d11f, 0x6f3ddf14, 0x7826cd09, 0x752fc302, 0x5610e933, 0x5b19e738, + 0x4c02f525, 0x410bfb2e, 0x61d79a8c, 0x6cde9487, 0x7bc5869a, 0x76cc8891, 0x55f3a2a0, 0x58faacab, + 0x4fe1beb6, 0x42e8b0bd, 0x99fead4, 0x496e4df, 0x138df6c2, 0x1e84f8c9, 0x3dbbd2f8, 0x30b2dcf3, + 0x27a9ceee, 0x2aa0c0e5, 0xb1477a3c, 0xbc4e7437, 0xab55662a, 0xa65c6821, 0x85634210, 0x886a4c1b, + 0x9f715e06, 0x9278500d, 0xd90f0a64, 0xd406046f, 0xc31d1672, 0xce141879, 0xed2b3248, 0xe0223c43, + 0xf7392e5e, 0xfa302055, 0xb79aec01, 0xba93e20a, 0xad88f017, 0xa081fe1c, 0x83bed42d, 0x8eb7da26, + 0x99acc83b, 0x94a5c630, 0xdfd29c59, 0xd2db9252, 0xc5c0804f, 0xc8c98e44, 0xebf6a475, 0xe6ffaa7e, + 0xf1e4b863, 0xfcedb668, 0x670a0cb1, 0x6a0302ba, 0x7d1810a7, 0x70111eac, 0x532e349d, 0x5e273a96, + 0x493c288b, 0x44352680, 0xf427ce9, 0x24b72e2, 0x155060ff, 0x18596ef4, 0x3b6644c5, 0x366f4ace, + 0x217458d3, 0x2c7d56d8, 0xca1377a, 0x1a83971, 0x16b32b6c, 0x1bba2567, 0x38850f56, 0x358c015d, + 0x22971340, 0x2f9e1d4b, 0x64e94722, 0x69e04929, 0x7efb5b34, 0x73f2553f, 0x50cd7f0e, 0x5dc47105, + 0x4adf6318, 0x47d66d13, 0xdc31d7ca, 0xd138d9c1, 0xc623cbdc, 0xcb2ac5d7, 0xe815efe6, 0xe51ce1ed, + 0xf207f3f0, 0xff0efdfb, 0xb479a792, 0xb970a999, 0xae6bbb84, 0xa362b58f, 0x805d9fbe, 0x8d5491b5, + 0x9a4f83a8, 0x97468da3] + + private var U3: [UInt32] = [0x0, 0x90e0b0d, 0x121c161a, 0x1b121d17, 0x24382c34, 0x2d362739, + 0x36243a2e, 0x3f2a3123, 0x48705868, 0x417e5365, 0x5a6c4e72, 0x5362457f, 0x6c48745c, 0x65467f51, + 0x7e546246, 0x775a694b, 0x90e0b0d0, 0x99eebbdd, 0x82fca6ca, 0x8bf2adc7, 0xb4d89ce4, 0xbdd697e9, + 0xa6c48afe, 0xafca81f3, 0xd890e8b8, 0xd19ee3b5, 0xca8cfea2, 0xc382f5af, 0xfca8c48c, 0xf5a6cf81, + 0xeeb4d296, 0xe7bad99b, 0x3bdb7bbb, 0x32d570b6, 0x29c76da1, 0x20c966ac, 0x1fe3578f, 0x16ed5c82, + 0xdff4195, 0x4f14a98, 0x73ab23d3, 0x7aa528de, 0x61b735c9, 0x68b93ec4, 0x57930fe7, 0x5e9d04ea, + 0x458f19fd, 0x4c8112f0, 0xab3bcb6b, 0xa235c066, 0xb927dd71, 0xb029d67c, 0x8f03e75f, 0x860dec52, + 0x9d1ff145, 0x9411fa48, 0xe34b9303, 0xea45980e, 0xf1578519, 0xf8598e14, 0xc773bf37, 0xce7db43a, + 0xd56fa92d, 0xdc61a220, 0x76adf66d, 0x7fa3fd60, 0x64b1e077, 0x6dbfeb7a, 0x5295da59, 0x5b9bd154, + 0x4089cc43, 0x4987c74e, 0x3eddae05, 0x37d3a508, 0x2cc1b81f, 0x25cfb312, 0x1ae58231, 0x13eb893c, + 0x8f9942b, 0x1f79f26, 0xe64d46bd, 0xef434db0, 0xf45150a7, 0xfd5f5baa, 0xc2756a89, 0xcb7b6184, + 0xd0697c93, 0xd967779e, 0xae3d1ed5, 0xa73315d8, 0xbc2108cf, 0xb52f03c2, 0x8a0532e1, 0x830b39ec, + 0x981924fb, 0x91172ff6, 0x4d768dd6, 0x447886db, 0x5f6a9bcc, 0x566490c1, 0x694ea1e2, 0x6040aaef, + 0x7b52b7f8, 0x725cbcf5, 0x506d5be, 0xc08deb3, 0x171ac3a4, 0x1e14c8a9, 0x213ef98a, 0x2830f287, + 0x3322ef90, 0x3a2ce49d, 0xdd963d06, 0xd498360b, 0xcf8a2b1c, 0xc6842011, 0xf9ae1132, 0xf0a01a3f, + 0xebb20728, 0xe2bc0c25, 0x95e6656e, 0x9ce86e63, 0x87fa7374, 0x8ef47879, 0xb1de495a, 0xb8d04257, + 0xa3c25f40, 0xaacc544d, 0xec41f7da, 0xe54ffcd7, 0xfe5de1c0, 0xf753eacd, 0xc879dbee, 0xc177d0e3, + 0xda65cdf4, 0xd36bc6f9, 0xa431afb2, 0xad3fa4bf, 0xb62db9a8, 0xbf23b2a5, 0x80098386, 0x8907888b, + 0x9215959c, 0x9b1b9e91, 0x7ca1470a, 0x75af4c07, 0x6ebd5110, 0x67b35a1d, 0x58996b3e, 0x51976033, + 0x4a857d24, 0x438b7629, 0x34d11f62, 0x3ddf146f, 0x26cd0978, 0x2fc30275, 0x10e93356, 0x19e7385b, + 0x2f5254c, 0xbfb2e41, 0xd79a8c61, 0xde94876c, 0xc5869a7b, 0xcc889176, 0xf3a2a055, 0xfaacab58, + 0xe1beb64f, 0xe8b0bd42, 0x9fead409, 0x96e4df04, 0x8df6c213, 0x84f8c91e, 0xbbd2f83d, 0xb2dcf330, + 0xa9ceee27, 0xa0c0e52a, 0x477a3cb1, 0x4e7437bc, 0x55662aab, 0x5c6821a6, 0x63421085, 0x6a4c1b88, + 0x715e069f, 0x78500d92, 0xf0a64d9, 0x6046fd4, 0x1d1672c3, 0x141879ce, 0x2b3248ed, 0x223c43e0, + 0x392e5ef7, 0x302055fa, 0x9aec01b7, 0x93e20aba, 0x88f017ad, 0x81fe1ca0, 0xbed42d83, 0xb7da268e, + 0xacc83b99, 0xa5c63094, 0xd29c59df, 0xdb9252d2, 0xc0804fc5, 0xc98e44c8, 0xf6a475eb, 0xffaa7ee6, + 0xe4b863f1, 0xedb668fc, 0xa0cb167, 0x302ba6a, 0x1810a77d, 0x111eac70, 0x2e349d53, 0x273a965e, + 0x3c288b49, 0x35268044, 0x427ce90f, 0x4b72e202, 0x5060ff15, 0x596ef418, 0x6644c53b, 0x6f4ace36, + 0x7458d321, 0x7d56d82c, 0xa1377a0c, 0xa8397101, 0xb32b6c16, 0xba25671b, 0x850f5638, 0x8c015d35, + 0x97134022, 0x9e1d4b2f, 0xe9472264, 0xe0492969, 0xfb5b347e, 0xf2553f73, 0xcd7f0e50, 0xc471055d, + 0xdf63184a, 0xd66d1347, 0x31d7cadc, 0x38d9c1d1, 0x23cbdcc6, 0x2ac5d7cb, 0x15efe6e8, 0x1ce1ede5, + 0x7f3f0f2, 0xefdfbff, 0x79a792b4, 0x70a999b9, 0x6bbb84ae, 0x62b58fa3, 0x5d9fbe80, 0x5491b58d, + 0x4f83a89a, 0x468da397] + + private var U4: [UInt32] = [0x0, 0xe0b0d09, 0x1c161a12, 0x121d171b, 0x382c3424, 0x3627392d, + 0x243a2e36, 0x2a31233f, 0x70586848, 0x7e536541, 0x6c4e725a, 0x62457f53, 0x48745c6c, 0x467f5165, + 0x5462467e, 0x5a694b77, 0xe0b0d090, 0xeebbdd99, 0xfca6ca82, 0xf2adc78b, 0xd89ce4b4, 0xd697e9bd, + 0xc48afea6, 0xca81f3af, 0x90e8b8d8, 0x9ee3b5d1, 0x8cfea2ca, 0x82f5afc3, 0xa8c48cfc, 0xa6cf81f5, + 0xb4d296ee, 0xbad99be7, 0xdb7bbb3b, 0xd570b632, 0xc76da129, 0xc966ac20, 0xe3578f1f, 0xed5c8216, + 0xff41950d, 0xf14a9804, 0xab23d373, 0xa528de7a, 0xb735c961, 0xb93ec468, 0x930fe757, 0x9d04ea5e, + 0x8f19fd45, 0x8112f04c, 0x3bcb6bab, 0x35c066a2, 0x27dd71b9, 0x29d67cb0, 0x3e75f8f, 0xdec5286, + 0x1ff1459d, 0x11fa4894, 0x4b9303e3, 0x45980eea, 0x578519f1, 0x598e14f8, 0x73bf37c7, 0x7db43ace, + 0x6fa92dd5, 0x61a220dc, 0xadf66d76, 0xa3fd607f, 0xb1e07764, 0xbfeb7a6d, 0x95da5952, 0x9bd1545b, + 0x89cc4340, 0x87c74e49, 0xddae053e, 0xd3a50837, 0xc1b81f2c, 0xcfb31225, 0xe582311a, 0xeb893c13, + 0xf9942b08, 0xf79f2601, 0x4d46bde6, 0x434db0ef, 0x5150a7f4, 0x5f5baafd, 0x756a89c2, 0x7b6184cb, + 0x697c93d0, 0x67779ed9, 0x3d1ed5ae, 0x3315d8a7, 0x2108cfbc, 0x2f03c2b5, 0x532e18a, 0xb39ec83, + 0x1924fb98, 0x172ff691, 0x768dd64d, 0x7886db44, 0x6a9bcc5f, 0x6490c156, 0x4ea1e269, 0x40aaef60, + 0x52b7f87b, 0x5cbcf572, 0x6d5be05, 0x8deb30c, 0x1ac3a417, 0x14c8a91e, 0x3ef98a21, 0x30f28728, + 0x22ef9033, 0x2ce49d3a, 0x963d06dd, 0x98360bd4, 0x8a2b1ccf, 0x842011c6, 0xae1132f9, 0xa01a3ff0, + 0xb20728eb, 0xbc0c25e2, 0xe6656e95, 0xe86e639c, 0xfa737487, 0xf478798e, 0xde495ab1, 0xd04257b8, + 0xc25f40a3, 0xcc544daa, 0x41f7daec, 0x4ffcd7e5, 0x5de1c0fe, 0x53eacdf7, 0x79dbeec8, 0x77d0e3c1, + 0x65cdf4da, 0x6bc6f9d3, 0x31afb2a4, 0x3fa4bfad, 0x2db9a8b6, 0x23b2a5bf, 0x9838680, 0x7888b89, + 0x15959c92, 0x1b9e919b, 0xa1470a7c, 0xaf4c0775, 0xbd51106e, 0xb35a1d67, 0x996b3e58, 0x97603351, + 0x857d244a, 0x8b762943, 0xd11f6234, 0xdf146f3d, 0xcd097826, 0xc302752f, 0xe9335610, 0xe7385b19, + 0xf5254c02, 0xfb2e410b, 0x9a8c61d7, 0x94876cde, 0x869a7bc5, 0x889176cc, 0xa2a055f3, 0xacab58fa, + 0xbeb64fe1, 0xb0bd42e8, 0xead4099f, 0xe4df0496, 0xf6c2138d, 0xf8c91e84, 0xd2f83dbb, 0xdcf330b2, + 0xceee27a9, 0xc0e52aa0, 0x7a3cb147, 0x7437bc4e, 0x662aab55, 0x6821a65c, 0x42108563, 0x4c1b886a, + 0x5e069f71, 0x500d9278, 0xa64d90f, 0x46fd406, 0x1672c31d, 0x1879ce14, 0x3248ed2b, 0x3c43e022, + 0x2e5ef739, 0x2055fa30, 0xec01b79a, 0xe20aba93, 0xf017ad88, 0xfe1ca081, 0xd42d83be, 0xda268eb7, + 0xc83b99ac, 0xc63094a5, 0x9c59dfd2, 0x9252d2db, 0x804fc5c0, 0x8e44c8c9, 0xa475ebf6, 0xaa7ee6ff, + 0xb863f1e4, 0xb668fced, 0xcb1670a, 0x2ba6a03, 0x10a77d18, 0x1eac7011, 0x349d532e, 0x3a965e27, + 0x288b493c, 0x26804435, 0x7ce90f42, 0x72e2024b, 0x60ff1550, 0x6ef41859, 0x44c53b66, 0x4ace366f, + 0x58d32174, 0x56d82c7d, 0x377a0ca1, 0x397101a8, 0x2b6c16b3, 0x25671bba, 0xf563885, 0x15d358c, + 0x13402297, 0x1d4b2f9e, 0x472264e9, 0x492969e0, 0x5b347efb, 0x553f73f2, 0x7f0e50cd, 0x71055dc4, + 0x63184adf, 0x6d1347d6, 0xd7cadc31, 0xd9c1d138, 0xcbdcc623, 0xc5d7cb2a, 0xefe6e815, 0xe1ede51c, + 0xf3f0f207, 0xfdfbff0e, 0xa792b479, 0xa999b970, 0xbb84ae6b, 0xb58fa362, 0x9fbe805d, 0x91b58d54, + 0x83a89a4f, 0x8da39746] + + init(key: [UInt8], iv: [UInt8]) throws { + self.key = key + self.iv = iv + } + + convenience init(key: [UInt8]) throws { + // default IV is all 0x00... + let defaultIV = [UInt8](count: AESCipher.blockSize, repeatedValue: 0) + try self.init(key: key, iv: defaultIV) + } + + /** + Encrypt message. If padding is necessary, then PKCS7 padding is added and needs to be removed after decryption. + + - parameter message: Plaintext data + - parameter padding: Optional padding + + - returns: Encrypted data + */ + + func encrypt(bytes: [UInt8]) throws -> [UInt8] { + let finalBytes = PKCS7().add(bytes, blockSize: AESCipher.blockSize) + let blocks = finalBytes.chunks(AESCipher.blockSize) + return try blockMode.encryptBlocks(blocks, iv: self.iv, cipherOperation: encryptBlock) + } + + private func encryptBlock(block: [UInt8]) -> [UInt8]? { + let rounds = self.variant.Nr + let rk = self.expandedKey + var b = toUInt32Array(block[block.startIndex..> 8) & 0xFF)] + let lb02 = T2[Int((t[2] >> 16) & 0xFF)] + let lb03 = T3[Int(t[3] >> 24)] + b[0] = lb00 ^ lb01 ^ lb02 ^ lb03 + + let lb10 = T0[Int(t[1] & 0xFF)] + let lb11 = T1[Int((t[2] >> 8) & 0xFF)] + let lb12 = T2[Int((t[3] >> 16) & 0xFF)] + let lb13 = T3[Int(t[0] >> 24)] + b[1] = lb10 ^ lb11 ^ lb12 ^ lb13 + + let lb20 = T0[Int(t[2] & 0xFF)] + let lb21 = T1[Int((t[3] >> 8) & 0xFF)] + let lb22 = T2[Int((t[0] >> 16) & 0xFF)] + let lb23 = T3[Int(t[1] >> 24)] + b[2] = lb20 ^ lb21 ^ lb22 ^ lb23 + + let lb30 = T0[Int(t[3] & 0xFF)] + let lb31 = T1[Int((t[0] >> 8) & 0xFF)] + let lb32 = T2[Int((t[1] >> 16) & 0xFF)] + let lb33 = T3[Int(t[2] >> 24)] + b[3] = lb30 ^ lb31 ^ lb32 ^ lb33 + } + + // last round + let r = rounds - 1 + + t[0] = b[0] ^ rk[r][0] + t[1] = b[1] ^ rk[r][1] + t[2] = b[2] ^ rk[r][2] + t[3] = b[3] ^ rk[r][3] + + // rounds + b[0] = F1(t[0], t[1], t[2], t[3]) ^ rk[rounds][0] + b[1] = F1(t[1], t[2], t[3], t[0]) ^ rk[rounds][1] + b[2] = F1(t[2], t[3], t[0], t[1]) ^ rk[rounds][2] + b[3] = F1(t[3], t[0], t[1], t[2]) ^ rk[rounds][3] + + var out = [UInt8]() + out.reserveCapacity(b.count * 4) + for num in b { + out.append(UInt8(num & 0xFF)) + out.append(UInt8((num >> 8) & 0xFF)) + out.append(UInt8((num >> 16) & 0xFF)) + out.append(UInt8((num >> 24) & 0xFF)) + } + + return out + } + + func decrypt(bytes: [UInt8]) throws -> [UInt8] { + if bytes.count % AESCipher.blockSize != 0 { + throw Error.BlockSizeExceeded + } + + let blocks = bytes.chunks(AESCipher.blockSize) + return try PKCS7().remove(blockMode.decryptBlocks(blocks, + iv: self.iv, cipherOperation: decryptBlock), blockSize: AESCipher.blockSize) + } + + private func decryptBlock(block: [UInt8]) -> [UInt8]? { + let rounds = self.variant.Nr + let rk = expandedKeyInv + var b = toUInt32Array(block[block.startIndex..> 8) & 0xFF)] + let b02 = T2_INV[Int((t[2] >> 16) & 0xFF)] + let b03 = T3_INV[Int(t[1] >> 24)] + b[0] = b00 ^ b01 ^ b02 ^ b03 + + let b10 = T0_INV[Int(t[1] & 0xFF)] + let b11 = T1_INV[Int((t[0] >> 8) & 0xFF)] + let b12 = T2_INV[Int((t[3] >> 16) & 0xFF)] + let b13 = T3_INV[Int(t[2] >> 24)] + b[1] = b10 ^ b11 ^ b12 ^ b13 + + let b20 = T0_INV[Int(t[2] & 0xFF)] + let b21 = T1_INV[Int((t[1] >> 8) & 0xFF)] + let b22 = T2_INV[Int((t[0] >> 16) & 0xFF)] + let b23 = T3_INV[Int(t[3] >> 24)] + b[2] = b20 ^ b21 ^ b22 ^ b23 + + let b30 = T0_INV[Int(t[3] & 0xFF)] + let b31 = T1_INV[Int((t[2] >> 8) & 0xFF)] + let b32 = T2_INV[Int((t[1] >> 16) & 0xFF)] + let b33 = T3_INV[Int(t[0] >> 24)] + b[3] = b30 ^ b31 ^ b32 ^ b33 + } + + // last round + t[0] = b[0] ^ rk[1][0] + t[1] = b[1] ^ rk[1][1] + t[2] = b[2] ^ rk[1][2] + t[3] = b[3] ^ rk[1][3] + + // rounds + + let lb00 = sBoxInv[Int(B0(t[0]))] + let lb01 = (sBoxInv[Int(B1(t[3]))] << 8) + let lb02 = (sBoxInv[Int(B2(t[2]))] << 16) + let lb03 = (sBoxInv[Int(B3(t[1]))] << 24) + b[0] = lb00 | lb01 | lb02 | lb03 ^ rk[0][0] + + let lb10 = sBoxInv[Int(B0(t[1]))] + let lb11 = (sBoxInv[Int(B1(t[0]))] << 8) + let lb12 = (sBoxInv[Int(B2(t[3]))] << 16) + let lb13 = (sBoxInv[Int(B3(t[2]))] << 24) + b[1] = lb10 | lb11 | lb12 | lb13 ^ rk[0][1] + + let lb20 = sBoxInv[Int(B0(t[2]))] + let lb21 = (sBoxInv[Int(B1(t[1]))] << 8) + let lb22 = (sBoxInv[Int(B2(t[0]))] << 16) + let lb23 = (sBoxInv[Int(B3(t[3]))] << 24) + b[2] = lb20 | lb21 | lb22 | lb23 ^ rk[0][2] + + let lb30 = sBoxInv[Int(B0(t[3]))] + let lb31 = (sBoxInv[Int(B1(t[2]))] << 8) + let lb32 = (sBoxInv[Int(B2(t[1]))] << 16) + let lb33 = (sBoxInv[Int(B3(t[0]))] << 24) + b[3] = lb30 | lb31 | lb32 | lb33 ^ rk[0][3] + + var out = [UInt8]() + out.reserveCapacity(b.count * 4) + for num in b { + out.append(UInt8(num & 0xFF)) + out.append(UInt8((num >> 8) & 0xFF)) + out.append(UInt8((num >> 16) & 0xFF)) + out.append(UInt8((num >> 24) & 0xFF)) + } + + return out + } + + private func expandKeyInv(key: [UInt8], variant: AESVariant) -> [[UInt32]] { + let rounds = variant.Nr + var rk2: [[UInt32]] = expandKey(key, variant: variant) + + for r in 1.. [[UInt32]] { + + func convertExpandedKey(expanded: [UInt8]) -> [[UInt32]] { + var arr = [UInt32]() + for idx in expanded.startIndex.stride(to: expanded.endIndex, by: 4) { + let four = Array(expanded[idx.. [UInt8] { + var result = word + for i in 0..<4 { + result[i] = UInt8(sBox[Int(word[i])]) + } + return result + } + + var w = [UInt8](count: variant.Nb * (variant.Nr + 1) * 4, repeatedValue: 0) + for i in 0.. 6 && (i % variant.Nk) == 4 { + tmp = subWord(tmp) + } + + // xor array of bytes + for wordIdx in 0..<4 { + w[4*i+wordIdx] = w[4*(i-variant.Nk)+wordIdx]^tmp[wordIdx] + } + } + return convertExpandedKey(w) + } +} + +private extension AESCipher { + + private func B0(x: UInt32) -> UInt32 { + return x & 0xFF + } + + private func B1(x: UInt32) -> UInt32 { + return (x >> 8) & 0xFF + } + + private func B2(x: UInt32) -> UInt32 { + return (x >> 16) & 0xFF + } + + private func B3(x: UInt32) -> UInt32 { + return (x >> 24) & 0xFF + } + + private func F1(x0: UInt32, _ x1: UInt32, _ x2: UInt32, _ x3: UInt32) -> UInt32 { + var result: UInt32 = 0 + result |= UInt32(B1(T0[Int(x0 & 255)])) + result |= UInt32(B1(T0[Int((x1 >> 8) & 255)])) << 8 + result |= UInt32(B1(T0[Int((x2 >> 16) & 255)])) << 16 + result |= UInt32(B1(T0[Int(x3 >> 24)])) << 24 + return result + } + + private func calculateSBox() -> (sBox: [UInt32], invSBox: [UInt32]) { + var sbox = [UInt32](count: 256, repeatedValue: 0) + var invsbox = sbox + sbox[0] = 0x63 + + var p: UInt8 = 1, q: UInt8 = 1 + + repeat { + p = p ^ (UInt8(truncatingBitPattern: Int(p) << 1) ^ ((p & 0x80) == 0x80 ? 0x1B : 0)) + q ^= q << 1 + q ^= q << 2 + q ^= q << 4 + q ^= (q & 0x80) == 0x80 ? 0x09 : 0 + + let s = 0x63 ^ q ^ rotateLeft(q, 1) ^ rotateLeft(q, 2) ^ rotateLeft(q, 3) ^ rotateLeft(q, 4) + + sbox[Int(p)] = UInt32(s) + invsbox[Int(s)] = UInt32(p) + } while (p != 1) + + return (sBox: sbox, invSBox: invsbox) + } +} + +// MARK: Foundation + +private extension AESCipher { + convenience init(key: String, iv: String) throws { + guard let kkey = key.dataUsingEncoding(NSUTF8StringEncoding, + allowLossyConversion: false)?.arrayOfBytes(), + let iiv = iv.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)?.arrayOfBytes() else { + throw Error.InvalidKeyOrInitializationVector + } + + try self.init(key: kkey, iv: iiv) + } +} + +// MARK: - CBC + +// I have no better name for that +private typealias CipherOperationOnBlock = (block: [UInt8]) -> [UInt8]? + +private struct CBCBlockMode { + enum BlockError: ErrorType { + case MissingInitializationVector + } + + private func encryptBlocks(blocks: [[UInt8]], iv: [UInt8]?, + cipherOperation: CipherOperationOnBlock) throws -> [UInt8] { + precondition(!blocks.isEmpty) + guard let iv = iv else { + throw BlockError.MissingInitializationVector + } + + var out: [UInt8] = [UInt8]() + out.reserveCapacity(blocks.count * blocks[blocks.startIndex].count) + var prevCiphertext = iv // for the first time prevCiphertext = iv + for plaintext in blocks { + if let encrypted = cipherOperation(block: xor(prevCiphertext, plaintext)) { + out.appendContentsOf(encrypted) + prevCiphertext = encrypted + } + } + return out + } + + private func decryptBlocks(blocks: [[UInt8]], iv: [UInt8]?, + cipherOperation: CipherOperationOnBlock) throws -> [UInt8] { + precondition(!blocks.isEmpty) + guard let iv = iv else { + throw BlockError.MissingInitializationVector + } + + var out: [UInt8] = [UInt8]() + out.reserveCapacity(blocks.count * blocks[blocks.startIndex].count) + var prevCiphertext = iv // for the first time prevCiphertext = iv + for ciphertext in blocks { + if let decrypted = cipherOperation(block: ciphertext) { // decrypt + out.appendContentsOf(xor(prevCiphertext, decrypted)) + } + prevCiphertext = ciphertext + } + + return out + } +} + +// MARK: - Padding + +private struct PKCS7 { + + enum Error: ErrorType { + case InvalidPaddingValue + } + + init() { + + } + + func add(bytes: [UInt8], blockSize: Int) -> [UInt8] { + let padding = UInt8(blockSize - (bytes.count % blockSize)) + var withPadding = bytes + if padding == 0 { + // If the original data is a multiple of N bytes, then an extra block of bytes with value N is added. + for _ in 0.. [UInt8] { + let lastByte = bytes.last! + let padding = Int(lastByte) // last byte + let finalLength = bytes.count - padding + + if finalLength < 0 { + return bytes + } + + if padding >= 1 { + return Array(bytes[0.. [UInt8] { + var xored = [UInt8](count: min(a.count, b.count), repeatedValue: 0) + for i in 0.. UInt8 { + return ((v << n) & 0xFF) | (v >> (8 - n)) +} + +private func rotateLeft(v: UInt32, _ n: UInt32) -> UInt32 { + return ((v << n) & 0xFFFFFFFF) | (v >> (32 - n)) +} + +private protocol BitshiftOperationsType { + func << (lhs: Self, rhs: Self) -> Self + func >> (lhs: Self, rhs: Self) -> Self + func <<= (inout lhs: Self, rhs: Self) + func >>= (inout lhs: Self, rhs: Self) +} + +private protocol ByteConvertible { + init(_ value: UInt8) + init(truncatingBitPattern: UInt64) +} + +extension Int : BitshiftOperationsType, ByteConvertible { } +extension Int8 : BitshiftOperationsType, ByteConvertible { } +extension Int16 : BitshiftOperationsType, ByteConvertible { } +extension Int32 : BitshiftOperationsType, ByteConvertible { } +extension Int64 : BitshiftOperationsType, ByteConvertible { + private init(truncatingBitPattern value: UInt64) { + self = Int64(bitPattern: value) + } +} +extension UInt : BitshiftOperationsType, ByteConvertible { } +extension UInt8 : BitshiftOperationsType, ByteConvertible { } +extension UInt16 : BitshiftOperationsType, ByteConvertible { } +extension UInt32 : BitshiftOperationsType, ByteConvertible { } +extension UInt64 : BitshiftOperationsType, ByteConvertible { + private init(truncatingBitPattern value: UInt64) { + self = value + } +} + +private func integerWithBytes(bytes: [UInt8]) -> T { + var bytes = bytes.reverse() as Array + if bytes.count < sizeof(T) { + let paddingCount = sizeof(T) - bytes.count + if paddingCount > 0 { + bytes += [UInt8](count: paddingCount, repeatedValue: 0) + } + } + + if sizeof(T) == 1 { + return T(truncatingBitPattern: UInt64(bytes.first!)) + } + + var result: T = 0 + for byte in bytes.reverse() { + result = result << 8 | T(byte) + } + return result +} + +private extension UInt32 { + + private func bytes(totalBytes: Int = sizeof(UInt32)) -> [UInt8] { + return arrayOfBytes(self, length: totalBytes) + } + + /** Int with array bytes (little-endian) */ + private static func withBytes(bytes: [UInt8]) -> UInt32 { + return integerWithBytes(bytes) + } +} + +private func toUInt32Array(slice: ArraySlice) -> Array { + var result = Array() + result.reserveCapacity(16) + + for idx in slice.startIndex.stride(to: slice.endIndex, by: sizeof(UInt32)) { + let val1: UInt32 = (UInt32(slice[idx.advancedBy(3)]) << 24) + let val2: UInt32 = (UInt32(slice[idx.advancedBy(2)]) << 16) + let val3: UInt32 = (UInt32(slice[idx.advancedBy(1)]) << 8) + let val4: UInt32 = UInt32(slice[idx]) + let val: UInt32 = val1 | val2 | val3 | val4 + result.append(val) + } + return result +} + +/// Array of bytes, little-endian representation. Don't use if not necessary. +/// I found this method slow +private func arrayOfBytes(value: T, length: Int? = nil) -> [UInt8] { + let totalBytes = length ?? sizeof(T) + + let valuePointer = UnsafeMutablePointer.alloc(1) + valuePointer.memory = value + + let bytesPointer = UnsafeMutablePointer(valuePointer) + var bytes = [UInt8](count: totalBytes, repeatedValue: 0) + for j in 0.. [Array] { + var words = [[Element]]() + words.reserveCapacity(self.count / chunksize) + var idx = chunksize + while idx <= self.count { + let word = Array(self[idx - chunksize.. NSData { + return NSData(bytes: bytes, length: bytes.count) + } + + private func arrayOfBytes() -> [UInt8] { + let count = self.length / sizeof(UInt8) + var bytesArray = [UInt8](count: count, repeatedValue: 0) + self.getBytes(&bytesArray, length:count * sizeof(UInt8)) + return bytesArray + } +} diff --git a/iOS/Pods/SwiftyBeaver/sources/BaseDestination.swift b/iOS/Pods/SwiftyBeaver/sources/BaseDestination.swift new file mode 100644 index 00000000..fe13f32a --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/BaseDestination.swift @@ -0,0 +1,350 @@ +// +// BaseDestination.swift +// SwiftyBeaver +// +// Created by Sebastian Kreutzberger (Twitter @skreutzb) on 05.12.15. +// Copyright © 2015 Sebastian Kreutzberger +// Some rights reserved: http://opensource.org/licenses/MIT +// + +import Foundation + +// store operating system / platform +#if os(iOS) +let OS = "iOS" +#elseif os(OSX) // elseif os(macOS) // <- available very soon, see https://git.io/vobEG +let OS = "OSX" +#elseif os(watchOS) +let OS = "watchOS" +#elseif os(tvOS) +let OS = "tvOS" +#elseif os(Linux) +let OS = "Linux" +#else +let OS = "Unknown" +#endif + +/// destination which all others inherit from. do not directly use +public class BaseDestination: Hashable, Equatable { + + /// if true additionally logs file, function & line + public var detailOutput = true + /// adds colored log levels where possible + public var colored = true + /// colors entire log + public var coloredLines = false + /// runs in own serial background thread for better performance + public var asynchronously = true + /// do not log any message which has a lower level than this one + public var minLevel = SwiftyBeaver.Level.Verbose + /// standard log format; set to "" to not log date at all + public var dateFormat = "yyyy-MM-dd HH:mm:ss.SSS" + /// set custom log level words for each level + public var levelString = LevelString() + /// set custom log level colors for each level + public var levelColor = LevelColor() + + public struct LevelString { + public var Verbose = "VERBOSE" + public var Debug = "DEBUG" + public var Info = "INFO" + public var Warning = "WARNING" + public var Error = "ERROR" + } + + // For a colored log level word in a logged line + // XCode RGB colors + public struct LevelColor { + public var Verbose = "fg150,178,193;" // silver + public var Debug = "fg32,155,124;" // green + public var Info = "fg70,204,221;" // blue + public var Warning = "fg253,202,78;" // yellow + public var Error = "fg243,36,73;" // red + } + + var filters = [FilterType]() + let formatter = NSDateFormatter() + + var reset = "\u{001b}[;" + var escape = "\u{001b}[" + + // each destination class must have an own hashValue Int + lazy public var hashValue: Int = self.defaultHashValue + public var defaultHashValue: Int {return 0} + + // each destination instance must have an own serial queue to ensure serial output + // GCD gives it a prioritization between User Initiated and Utility + var queue: dispatch_queue_t? + + var debugPrint = false // set to true to debug the internal logic of the class + + public init() { + let uuid = NSUUID().UUIDString + let queueLabel = "swiftybeaver-queue-" + uuid + queue = dispatch_queue_create(queueLabel, DISPATCH_QUEUE_SERIAL) + } + + /// Add a filter that determines whether or not a particular message will be logged to this destination + public func addFilter(filter: FilterType) { + filters.append(filter) + } + + /// Remove a filter from the list of filters + public func removeFilter(filter: FilterType) { + let index = filters.indexOf { + return ObjectIdentifier($0) == ObjectIdentifier(filter) + } + + guard let filterIndex = index else { + return + } + + filters.removeAtIndex(filterIndex) + } + + /// send / store the formatted log message to the destination + /// returns the formatted log message for processing by inheriting method + /// and for unit tests (nil if error) + public func send(level: SwiftyBeaver.Level, msg: String, thread: String, + path: String, function: String, line: Int) -> String? { + var dateStr = "" + var str = "" + let levelStr = formattedLevel(level) + let formattedMsg = coloredMessage(msg, forLevel: level) + + dateStr = formattedDate(dateFormat) + str = formattedMessage(dateStr, levelString: levelStr, msg: formattedMsg, thread: thread, path: path, + function: function, line: line, detailOutput: detailOutput) + return str + } + + /// returns a formatted date string + func formattedDate(dateFormat: String) -> String { + //formatter.timeZone = NSTimeZone(abbreviation: "UTC") + formatter.dateFormat = dateFormat + let dateStr = formatter.stringFromDate(NSDate()) + return dateStr + } + + /// returns the log message entirely colored + func coloredMessage(msg: String, forLevel level: SwiftyBeaver.Level) -> String { + if !(colored && coloredLines) { + return msg + } + + let color = colorForLevel(level) + let coloredMsg = escape + color + msg + reset + return coloredMsg + } + + /// returns color string for level + func colorForLevel(level: SwiftyBeaver.Level) -> String { + var color = "" + + switch level { + case SwiftyBeaver.Level.Debug: + color = levelColor.Debug + + case SwiftyBeaver.Level.Info: + color = levelColor.Info + + case SwiftyBeaver.Level.Warning: + color = levelColor.Warning + + case SwiftyBeaver.Level.Error: + color = levelColor.Error + + default: + color = levelColor.Verbose + } + + return color + } + + /// returns an optionally colored level noun (like INFO, etc.) + func formattedLevel(level: SwiftyBeaver.Level) -> String { + // optionally wrap the level string in color + let color = colorForLevel(level) + var levelStr = "" + + switch level { + case SwiftyBeaver.Level.Debug: + levelStr = levelString.Debug + + case SwiftyBeaver.Level.Info: + levelStr = levelString.Info + + case SwiftyBeaver.Level.Warning: + levelStr = levelString.Warning + + case SwiftyBeaver.Level.Error: + levelStr = levelString.Error + + default: + // Verbose is default + levelStr = levelString.Verbose + } + + if colored { + levelStr = escape + color + levelStr + reset + } + return levelStr + } + + /// returns the formatted log message + func formattedMessage(dateString: String, levelString: String, msg: String, + thread: String, path: String, function: String, line: Int, detailOutput: Bool) -> String { + var str = "" + if dateString != "" { + str += "[\(dateString)] " + } + if detailOutput { + if thread != "main" && thread != "" { + str += "|\(thread)| " + } + + // just use the file name of the path and remove suffix + let file = path.componentsSeparatedByString("/").last!.componentsSeparatedByString(".").first! + str += "\(file).\(function):\(String(line)) \(levelString): \(msg)" + } else { + str += "\(levelString): \(msg)" + } + return str + } + + /// Answer whether the destination has any message filters + /// returns boolean and is used to decide whether to resolve the message before invoking shouldLevelBeLogged + func hasMessageFilters() -> Bool { + return !getFiltersTargeting(Filter.TargetType.Message(.Equals([], true)), fromFilters: self.filters).isEmpty + } + + /// checks if level is at least minLevel or if a minLevel filter for that path does exist + /// returns boolean and can be used to decide if a message should be logged or not + func shouldLevelBeLogged(level: SwiftyBeaver.Level, path: String, function: String, message: String? = nil) -> Bool { + + if filters.isEmpty { + if level.rawValue >= minLevel.rawValue { + if debugPrint { + print("filters is empty and level >= minLevel") + } + return true + } else { + if debugPrint { + print("filters is empty and level < minLevel") + } + return false + } + } else { + if level.rawValue >= minLevel.rawValue { + if debugPrint { + print("filters is not empty and level >= minLevel") + } + return true + } + } + + let (matchedRequired, allRequired) = passedRequiredFilters(level, path: path, + function: function, message: message) + let (matchedNonRequired, allNonRequired) = passedNonRequiredFilters(level, path: path, + function: function, message: message) + if allRequired > 0 { + if matchedRequired == allRequired { + return true + } + } else { + // no required filters are existing so at least 1 optional needs to match + if allNonRequired > 0 { + if matchedNonRequired > 0 { + return true + } + } else { + // no optional is existing, so all is good + return true + } + } + return false + } + + func getFiltersTargeting(target: Filter.TargetType, fromFilters: [FilterType]) -> [FilterType] { + return fromFilters.filter { + filter in + return filter.getTarget() == target + } + } + + /// returns a tuple of matched and all filters + func passedRequiredFilters(level: SwiftyBeaver.Level, path: String, + function: String, message: String?) -> (Int, Int) { + let requiredFilters = self.filters.filter { + filter in + return filter.isRequired() + } + + let matchingFilters = applyFilters(requiredFilters, level: level, path: path, + function: function, message: message) + if debugPrint { + print("matched \(matchingFilters) of \(requiredFilters.count) required filters") + } + + return (matchingFilters, requiredFilters.count) + } + + /// returns a tuple of matched and all filters + func passedNonRequiredFilters(level: SwiftyBeaver.Level, + path: String, function: String, message: String?) -> (Int, Int) { + let nonRequiredFilters = self.filters.filter { + filter in + return !filter.isRequired() + } + + let matchingFilters = applyFilters(nonRequiredFilters, level: level, + path: path, function: function, message: message) + if debugPrint { + print("matched \(matchingFilters) of \(nonRequiredFilters.count) non-required filters") + } + return (matchingFilters, nonRequiredFilters.count) + } + + func applyFilters(targetFilters: [FilterType], level: SwiftyBeaver.Level, + path: String, function: String, message: String?) -> Int { + return targetFilters.filter { + filter in + + let passes: Bool + + if !filter.reachedMinLevel(level) { + return false + } + + switch filter.getTarget() { + case .Path(_): + passes = filter.apply(path) + + case .Function(_): + passes = filter.apply(function) + + case .Message(_): + guard let message = message else { + return false + } + + passes = filter.apply(message) + } + + return passes + }.count + } + + /** + Triggered by main flush() method on each destination. Runs in background thread. + Use for destinations that buffer log items, implement this function to flush those + buffers to their final destination (web server...) + */ + func flush() { + // no implementation in base destination needed + } +} + +public func == (lhs: BaseDestination, rhs: BaseDestination) -> Bool { + return ObjectIdentifier(lhs) == ObjectIdentifier(rhs) +} diff --git a/iOS/Pods/SwiftyBeaver/sources/ConsoleDestination.swift b/iOS/Pods/SwiftyBeaver/sources/ConsoleDestination.swift new file mode 100644 index 00000000..c685d39f --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/ConsoleDestination.swift @@ -0,0 +1,36 @@ +// +// ConsoleDestination.swift +// SwiftyBeaver +// +// Created by Sebastian Kreutzberger on 05.12.15. +// Copyright © 2015 Sebastian Kreutzberger +// Some rights reserved: http://opensource.org/licenses/MIT +// + +import Foundation + +public class ConsoleDestination: BaseDestination { + + public var useNSLog = false + + override public var defaultHashValue: Int {return 1} + + public override init() { + super.init() + } + + // print to Xcode Console. uses full base class functionality + override public func send(level: SwiftyBeaver.Level, msg: String, thread: String, + path: String, function: String, line: Int) -> String? { + let formattedString = super.send(level, msg: msg, thread: thread, path: path, function: function, line: line) + + if let str = formattedString { + if useNSLog { + NSLog("%@", str) + } else { + print(str) + } + } + return formattedString + } +} diff --git a/iOS/Pods/SwiftyBeaver/sources/FileDestination.swift b/iOS/Pods/SwiftyBeaver/sources/FileDestination.swift new file mode 100644 index 00000000..86b680c7 --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/FileDestination.swift @@ -0,0 +1,110 @@ +// +// FileDestination.swift +// SwiftyBeaver +// +// Created by Sebastian Kreutzberger on 05.12.15. +// Copyright © 2015 Sebastian Kreutzberger +// Some rights reserved: http://opensource.org/licenses/MIT +// + +import Foundation + +public class FileDestination: BaseDestination { + + public var logFileURL: NSURL? + + override public var defaultHashValue: Int {return 2} + let fileManager = NSFileManager.defaultManager() + var fileHandle: NSFileHandle? = nil + + public override init() { + // platform-dependent logfile directory default + var baseURL: NSURL? + + if OS == "OSX" { + if let url = fileManager.URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask).first { + baseURL = url + // try to use ~/Library/Caches/APP NAME instead of ~/Library/Caches + if let appName = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleExecutable") as? String { + do { + if let appURL = baseURL?.URLByAppendingPathComponent(appName, isDirectory: true) { + try fileManager.createDirectoryAtURL(appURL, + withIntermediateDirectories: true, attributes: nil) + baseURL = appURL + } + } catch let error as NSError { + print("Warning! Could not create folder /Library/Caches/\(appName). \(error)") + } + } + } + } else { + // iOS, watchOS, etc. are using the caches directory + if let url = fileManager.URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask).first { + baseURL = url + } + } + + if let baseURL = baseURL { + logFileURL = baseURL.URLByAppendingPathComponent("swiftybeaver.log", isDirectory: false) + } + super.init() + + // bash font color, first value is intensity, second is color + // see http://bit.ly/1Otu3Zr & for syntax http://bit.ly/1Tp6Fw9 + // uses the 256-color table from http://bit.ly/1W1qJuH + reset = "\u{001b}[0m" + escape = "\u{001b}[38;5;" + levelColor.Verbose = "251m" + levelColor.Debug = "35m" + levelColor.Info = "38m" + levelColor.Warning = "178m" + levelColor.Error = "197m" + } + + // append to file. uses full base class functionality + override public func send(level: SwiftyBeaver.Level, msg: String, thread: String, + path: String, function: String, line: Int) -> String? { + let formattedString = super.send(level, msg: msg, thread: thread, path: path, function: function, line: line) + + if let str = formattedString { + saveToFile(str) + } + return formattedString + } + + deinit { + // close file handle if set + if let fileHandle = fileHandle { + fileHandle.closeFile() + } + } + + /// appends a string as line to a file. + /// returns boolean about success + func saveToFile(str: String) -> Bool { + guard let url = logFileURL else { return false } + do { + if fileManager.fileExistsAtPath(url.path!) == false { + // create file if not existing + let line = str + "\n" + try line.writeToURL(url, atomically: true, encoding: NSUTF8StringEncoding) + } else { + // append to end of file + if fileHandle == nil { + // initial setting of file handle + fileHandle = try NSFileHandle(forWritingToURL: url) + } + if let fileHandle = fileHandle { + fileHandle.seekToEndOfFile() + let line = str + "\n" + let data = line.dataUsingEncoding(NSUTF8StringEncoding)! + fileHandle.writeData(data) + } + } + return true + } catch let error { + print("SwiftyBeaver File Destination could not write to file \(url). \(error)") + return false + } + } +} diff --git a/iOS/Pods/SwiftyBeaver/sources/Filter.swift b/iOS/Pods/SwiftyBeaver/sources/Filter.swift new file mode 100644 index 00000000..14f21393 --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/Filter.swift @@ -0,0 +1,244 @@ +// +// Filter.swift +// SwiftyBeaver +// +// Created by Jeff Roberts on 5/31/16. +// Copyright © 2015 Sebastian Kreutzberger +// Some rights reserved: http://opensource.org/licenses/MIT +// + +import Foundation + +/// FilterType is a protocol that describes something that determines +/// whether or not a message gets logged. A filter answers a Bool when it +/// is applied to a value. If the filter passes, it shall return true, +/// false otherwise. +/// +/// A filter must contain a target, which identifies what it filters against +/// A filter can be required meaning that all required filters against a specific +/// target must pass in order for the message to be logged. At least one non-required +/// filter must pass in order for the message to be logged +public protocol FilterType : class { + func apply(value: AnyObject) -> Bool + func getTarget() -> Filter.TargetType + func isRequired() -> Bool + func reachedMinLevel(level: SwiftyBeaver.Level) -> Bool +} + +/// Filters is syntactic sugar used to easily construct filters +public class Filters { + public static let Path = PathFilterFactory.self + public static let Function = FunctionFilterFactory.self + public static let Message = MessageFilterFactory.self +} + +/// Filter is an abstract base class for other filters +public class Filter { + public enum TargetType { + case Path(Filter.ComparisonType) + case Function(Filter.ComparisonType) + case Message(Filter.ComparisonType) + } + + public enum ComparisonType { + case StartsWith([String], Bool) + case Contains([String], Bool) + case EndsWith([String], Bool) + case Equals([String], Bool) + } + + let targetType: Filter.TargetType + let required: Bool + let minLevel: SwiftyBeaver.Level + + public init(target: Filter.TargetType, required: Bool, minLevel: SwiftyBeaver.Level) { + self.targetType = target + self.required = required + self.minLevel = minLevel + } + + public func getTarget() -> Filter.TargetType { + return self.targetType + } + + public func isRequired() -> Bool { + return self.required + } + + /// returns true of set minLevel is >= as given level + public func reachedMinLevel(level: SwiftyBeaver.Level) -> Bool { + //print("checking if given level \(level) >= \(minLevel)") + return level.rawValue >= minLevel.rawValue + } +} + +/// CompareFilter is a FilterType that can filter based upon whether a target +/// starts with, contains or ends with a specific string. CompareFilters can be +/// case sensitive. +public class CompareFilter: Filter, FilterType { + override public init(target: Filter.TargetType, required: Bool, minLevel: SwiftyBeaver.Level) { + super.init(target: target, required: required, minLevel: minLevel) + } + + public func apply(value: AnyObject) -> Bool { + guard let value = value as? String else { + return false + } + + let comparisonType: Filter.ComparisonType? + switch self.getTarget() { + case let .Function(comparison): + comparisonType = comparison + + case let .Path(comparison): + comparisonType = comparison + + case let .Message(comparison): + comparisonType = comparison + + /*default: + comparisonType = nil*/ + } + + guard let filterComparisonType = comparisonType else { + return false + } + + let matches: Bool + switch filterComparisonType { + case let .Contains(strings, caseSensitive): + matches = !strings.filter { + string in + return caseSensitive ? value.containsString(string) : + value.lowercaseString.containsString(string.lowercaseString) + }.isEmpty + + + case let .StartsWith(strings, caseSensitive): + matches = !strings.filter { + string in + return caseSensitive ? value.hasPrefix(string) : + value.lowercaseString.hasPrefix(string.lowercaseString) + }.isEmpty + + case let .EndsWith(strings, caseSensitive): + matches = !strings.filter { + string in + return caseSensitive ? value.hasSuffix(string) : + value.lowercaseString.hasSuffix(string.lowercaseString) + }.isEmpty + + case let .Equals(strings, caseSensitive): + matches = !strings.filter { + string in + return caseSensitive ? value == string : + value.lowercaseString == string.lowercaseString + }.isEmpty + } + + return matches + } +} + +// Syntactic sugar for creating a function comparison filter +public class FunctionFilterFactory { + public static func startsWith(prefixes: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Function(.StartsWith(prefixes, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func contains(strings: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Function(.Contains(strings, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func endsWith(suffixes: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Function(.EndsWith(suffixes, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func equals(strings: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Function(.Equals(strings, caseSensitive)), + required: required, minLevel: minLevel) + } +} + +// Syntactic sugar for creating a message comparison filter +public class MessageFilterFactory { + public static func startsWith(prefixes: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Message(.StartsWith(prefixes, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func contains(strings: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Message(.Contains(strings, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func endsWith(suffixes: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Message(.EndsWith(suffixes, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func equals(strings: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Message(.Equals(strings, caseSensitive)), + required: required, minLevel: minLevel) + } +} + +// Syntactic sugar for creating a path comparison filter +public class PathFilterFactory { + public static func startsWith(prefixes: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Path(.StartsWith(prefixes, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func contains(strings: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Path(.Contains(strings, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func endsWith(suffixes: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Path(.EndsWith(suffixes, caseSensitive)), + required: required, minLevel: minLevel) + } + + public static func equals(strings: String..., caseSensitive: Bool = false, + required: Bool = false, minLevel: SwiftyBeaver.Level = .Verbose) -> FilterType { + return CompareFilter(target: .Path(.Equals(strings, caseSensitive)), + required: required, minLevel: minLevel) + } +} + +extension Filter.TargetType : Equatable { +} + +// The == does not compare associated values for each enum. Instead == evaluates to true +// if both enums are the same "types", ignoring the associated values of each enum +public func == (lhs: Filter.TargetType, rhs: Filter.TargetType) -> Bool { + switch (lhs, rhs) { + + case (.Path(_), .Path(_)): + return true + + case (.Function(_), .Function(_)): + return true + + case (.Message(_), .Message(_)): + return true + + default: + return false + } +} diff --git a/iOS/Pods/SwiftyBeaver/sources/SBPlatformDestination.swift b/iOS/Pods/SwiftyBeaver/sources/SBPlatformDestination.swift new file mode 100644 index 00000000..fac921bf --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/SBPlatformDestination.swift @@ -0,0 +1,597 @@ +// +// SBPlatformDestination +// SwiftyBeaver +// +// Created by Sebastian Kreutzberger on 22.01.16. +// Copyright © 2016 Sebastian Kreutzberger +// Some rights reserved: http://opensource.org/licenses/MIT +// + +import Foundation + +// platform-dependent import frameworks to get device details +// valid values for os(): OSX, iOS, watchOS, tvOS, Linux +#if os(iOS) || os(tvOS) || os(watchOS) + import UIKit + var DEVICE_MODEL: String { + get { + var systemInfo = utsname() + uname(&systemInfo) + let machineMirror = Mirror(reflecting: systemInfo.machine) + let identifier = machineMirror.children.reduce("") { identifier, element in + guard let value = element.value as? Int8 where value != 0 else { return identifier } + return identifier + String(UnicodeScalar(UInt8(value))) + } + return identifier + } + } +#else + let DEVICE_MODEL = "" +#endif + +#if os(iOS) || os(tvOS) + var DEVICE_NAME = UIDevice.currentDevice().name +#else + // under watchOS UIDevice is not existing, http://apple.co/26ch5J1 + let DEVICE_NAME = "" +#endif + + +public class SBPlatformDestination: BaseDestination { + + public var appID = "" + public var appSecret = "" + public var encryptionKey = "" + public var analyticsUserName = "" // user email, ID, name, etc. + public var analyticsUUID: String { + get { + return uuid + } + } + + // when to send to server + public struct SendingPoints { + public var Verbose = 0 + public var Debug = 1 + public var Info = 5 + public var Warning = 8 + public var Error = 10 + public var Threshold = 10 // send to server if points reach that value + } + public var sendingPoints = SendingPoints() + public var showNSLog = false // executes toNSLog statements to debug the class + var points = 0 + + public var serverURL = NSURL(string: "https://api.swiftybeaver.com/api/entries/")! + private let maxAllowedThreshold = 1000 // over-rules SendingPoints.Threshold + private var sendingInProgress = false + private var initialSending = true + + var entriesFileURL = NSURL() + var sendingFileURL = NSURL() + var analyticsFileURL = NSURL() + + // analytics + var uuid = "" + + // destination + override public var defaultHashValue: Int {return 3} + let fileManager = NSFileManager.defaultManager() + let isoDateFormatter = NSDateFormatter() + + + public init(appID: String, appSecret: String, encryptionKey: String) { + super.init() + self.appID = appID + self.appSecret = appSecret + self.encryptionKey = encryptionKey + + // setup where to write the json files + var baseURL: NSURL? + + if OS == "OSX" { + if let url = fileManager.URLsForDirectory(.ApplicationSupportDirectory, inDomains: .UserDomainMask).first { + baseURL = url + // try to use ~/Library/Application Support/APP NAME instead of ~/Library/Application Support + if let appName = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleExecutable") as? String { + do { + if let appURL = baseURL?.URLByAppendingPathComponent(appName, isDirectory: true) { + try fileManager.createDirectoryAtURL(appURL, + withIntermediateDirectories: true, attributes: nil) + baseURL = appURL + } + } catch let error as NSError { + // it is too early in the class lifetime to be able to use toNSLog() + print("Warning! Could not create folder ~/Library/Application Support/\(appName). \(error)") + } + } + } + } else { + // iOS, watchOS, etc. are using the document directory of the app + if let url = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first { + baseURL = url + } + } + + if let baseURL = baseURL { + #if swift(>=2.3) + entriesFileURL = baseURL.URLByAppendingPathComponent("sbplatform_entries.json", isDirectory: false)! + sendingFileURL = baseURL.URLByAppendingPathComponent("sbplatform_entries_sending.json", isDirectory: false)! + analyticsFileURL = baseURL.URLByAppendingPathComponent("sbplatform_analytics.json", isDirectory: false)! + #else + entriesFileURL = baseURL.URLByAppendingPathComponent("sbplatform_entries.json", isDirectory: false) + sendingFileURL = baseURL.URLByAppendingPathComponent("sbplatform_entries_sending.json", isDirectory: false) + analyticsFileURL = baseURL.URLByAppendingPathComponent("sbplatform_analytics.json", isDirectory: false) + #endif + + // get, update loaded and save analytics data to file on start + let dict = analytics(analyticsFileURL, update: true) + saveDictToFile(dict, url: analyticsFileURL) + } + } + + + // append to file, each line is a JSON dict + override public func send(level: SwiftyBeaver.Level, msg: String, thread: String, + path: String, function: String, line: Int) -> String? { + + var jsonString: String? + let dict: [String: AnyObject] = [ + "timestamp": NSDate().timeIntervalSince1970, + "level": level.rawValue, + "message": msg, + "thread": thread, + "fileName": path.componentsSeparatedByString("/").last!, + "function": function, + "line":line] + + jsonString = jsonStringFromDict(dict) + + if let str = jsonString { + toNSLog("saving '\(msg)' to file") + saveToFile(str, url: entriesFileURL) + //toNSLog(entriesFileURL.path!) + + // now decide if the stored log entries should be sent to the server + // add level points to current points amount and send to server if threshold is hit + let newPoints = sendingPointsForLevel(level) + points += newPoints + toNSLog("current sending points: \(points)") + + if points >= sendingPoints.Threshold || points > maxAllowedThreshold { + toNSLog("\(points) points is >= threshold") + // above threshold, send to server + sendNow() + + } else if initialSending { + initialSending = false + // first logging at this session + // send if json file still contains old log entries + if let logEntries = logsFromFile(entriesFileURL) { + let lines = logEntries.count + if lines > 1 { + var msg = "initialSending: \(points) points is below threshold " + msg += "but json file already has \(lines) lines." + toNSLog(msg) + sendNow() + } + } + } + } + return jsonString + } + + + // MARK: Send-to-Server Logic + + /// does a (manual) sending attempt of all unsent log entries to SwiftyBeaver Platform + public func sendNow() { + + if sendFileExists() { + toNSLog("reset points to 0") + points = 0 + } else { + if !renameJsonToSendFile() { + return + } + } + + if !sendingInProgress { + sendingInProgress = true + //let (jsonString, lines) = logsFromFile(sendingFileURL) + var lines = 0 + guard let logEntries = logsFromFile(sendingFileURL) else { + sendingInProgress = false + return + } + lines = logEntries.count + + if lines > 0 { + var payload = [String:AnyObject]() + // merge device and analytics dictionaries + let deviceDetailsDict = deviceDetails() + var analyticsDict = analytics(analyticsFileURL) + + for key in deviceDetailsDict.keys { + analyticsDict[key] = deviceDetailsDict[key] + } + payload["device"] = analyticsDict + payload["entries"] = logEntries + + if let str = jsonStringFromDict(payload) { + //toNSLog(str) // uncomment to see full payload + toNSLog("Encrypting \(lines) log entries ...") + if let encryptedStr = encrypt(str) { + var msg = "Sending \(lines) encrypted log entries " + msg += "(\(encryptedStr.characters.count) chars) to server ..." + toNSLog(msg) + //toNSLog("Sending \(encryptedStr) ...") + + sendToServerAsync(encryptedStr) { + ok, status in + + self.toNSLog("Sent \(lines) encrypted log entries to server, received ok: \(ok)") + if ok { + self.deleteFile(self.sendingFileURL) + } + self.sendingInProgress = false + self.points = 0 + } + } + } + } else { + sendingInProgress = false + } + } + } + + /// sends a string to the SwiftyBeaver Platform server, returns ok if status 200 and HTTP status + func sendToServerAsync(str: String?, complete: (ok: Bool, status: Int) -> ()) { + + if let payload = str, let queue = self.queue { + + // create operation queue which uses current serial queue of destination + let operationQueue = NSOperationQueue() + operationQueue.underlyingQueue = queue + + let session = NSURLSession(configuration: + NSURLSessionConfiguration.defaultSessionConfiguration(), + delegate: nil, delegateQueue: operationQueue) + + // assemble request + let request = NSMutableURLRequest(URL: serverURL) + request.HTTPMethod = "POST" + request.addValue("application/json", forHTTPHeaderField: "Content-Type") + request.addValue("application/json", forHTTPHeaderField: "Accept") + + // basic auth header + let credentials = "\(appID):\(appSecret)".dataUsingEncoding(NSUTF8StringEncoding)! + let base64Credentials = credentials.base64EncodedStringWithOptions([]) + request.setValue("Basic \(base64Credentials)", forHTTPHeaderField: "Authorization") + + // POST parameters + let params = ["payload": payload] + do { + request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(params, options: []) + } catch let error as NSError { + toNSLog("Error! Could not create JSON for server payload. \(error)") + } + //toNSLog("sending params: \(params)") + //toNSLog("\n\nbefore sendToServer on thread '\(threadName())'") + + sendingInProgress = true + // send request async to server on destination queue + let task = session.dataTaskWithRequest(request) { + _, response, error in + var ok = false + var status = 0 + //toNSLog("callback of sendToServer on thread '\(self.threadName())'") + + if let error = error { + // an error did occur + self.toNSLog("Error! Could not send entries to server. \(error)") + } else { + if let response = response as? NSHTTPURLResponse { + status = response.statusCode + if status == 200 { + // all went well, entries were uploaded to server + ok = true + } else { + // status code was not 200 + var msg = "Error! Sending entries to server failed " + msg += "with status code \(status)" + self.toNSLog(msg) + } + } + } + return complete(ok: ok, status: status) + } + task.resume() + } + } + + /// returns sending points based on level + func sendingPointsForLevel(level: SwiftyBeaver.Level) -> Int { + + switch level { + case SwiftyBeaver.Level.Debug: + return sendingPoints.Debug + case SwiftyBeaver.Level.Info: + return sendingPoints.Info + case SwiftyBeaver.Level.Warning: + return sendingPoints.Warning + case SwiftyBeaver.Level.Error: + return sendingPoints.Error + default: + return sendingPoints.Verbose + } + } + + + // MARK: File Handling + + /// appends a string as line to a file. + /// returns boolean about success + func saveToFile(str: String, url: NSURL, overwrite: Bool = false) -> Bool { + do { + if fileManager.fileExistsAtPath(url.path!) == false || overwrite { + // create file if not existing + let line = str + "\n" + try line.writeToURL(url, atomically: true, encoding: NSUTF8StringEncoding) + } else { + // append to end of file + let fileHandle = try NSFileHandle(forWritingToURL: url) + fileHandle.seekToEndOfFile() + let line = str + "\n" + let data = line.dataUsingEncoding(NSUTF8StringEncoding)! + fileHandle.writeData(data) + fileHandle.closeFile() + } + return true + } catch let error { + toNSLog("Error! Could not write to file \(url). \(error)") + return false + } + } + + func sendFileExists() -> Bool { + return fileManager.fileExistsAtPath(sendingFileURL.path!) + } + + func renameJsonToSendFile() -> Bool { + do { + try fileManager.moveItemAtURL(entriesFileURL, toURL: sendingFileURL) + return true + } catch let error as NSError { + toNSLog("SwiftyBeaver Platform Destination could not rename json file. \(error)") + return false + } + } + + /// returns optional array of log dicts from a file which has 1 json string per line + func logsFromFile(url: NSURL) -> [[String:AnyObject]]? { + var lines = 0 + do { + // try to read file, decode every JSON line and put dict from each line in array + let fileContent = try NSString(contentsOfFile: url.path!, encoding: NSUTF8StringEncoding) + let linesArray = fileContent.componentsSeparatedByString("\n") + var dicts = [[String: AnyObject]()] // array of dictionaries + for lineJSON in linesArray { + lines += 1 + if lineJSON.characters.first == "{" && lineJSON.characters.last == "}" { + // try to parse json string into dict + if let data = lineJSON.dataUsingEncoding(NSUTF8StringEncoding) { + do { + if let dict = try NSJSONSerialization.JSONObjectWithData(data, + options: .MutableContainers) as? [String:AnyObject] { + if !dict.isEmpty { + dicts.append(dict) + } + } + } catch let error { + var msg = "Error! Could not parse " + msg += "line \(lines) in file \(url). \(error)" + toNSLog(msg) + } + } + } + } + dicts.removeFirst() + return dicts + } catch let error { + toNSLog("Error! Could not read file \(url). \(error)") + } + return nil + } + + /// returns AES-256 CBC encrypted optional string + func encrypt(str: String) -> String? { + return AES256CBC.encryptString(str, password: encryptionKey) + } + + /// Delete file to get started again + func deleteFile(url: NSURL) -> Bool { + do { + try NSFileManager.defaultManager().removeItemAtURL(url) + return true + } catch let error { + toNSLog("Warning! Could not delete file \(url). \(error)") + } + return false + } + + + // MARK: Device & Analytics + + // returns dict with device details. Amount depends on platform + func deviceDetails() -> [String: String] { + var details = [String: String]() + + details["os"] = OS + let osVersion = NSProcessInfo.processInfo().operatingSystemVersion + // becomes for example 10.11.2 for El Capitan + var osVersionStr = String(osVersion.majorVersion) + osVersionStr += "." + String(osVersion.minorVersion) + osVersionStr += "." + String(osVersion.patchVersion) + details["osVersion"] = osVersionStr + details["hostName"] = NSProcessInfo.processInfo().hostName + details["deviceName"] = "" + details["deviceModel"] = "" + + if DEVICE_NAME != "" { + details["deviceName"] = DEVICE_NAME + } + if DEVICE_MODEL != "" { + details["deviceModel"] = DEVICE_MODEL + } + return details + } + + /// returns (updated) analytics dict, optionally loaded from file. + func analytics(url: NSURL, update: Bool = false) -> [String:AnyObject] { + + var dict = [String:AnyObject]() + let now = NSDate().timeIntervalSince1970 + + uuid = NSUUID().UUIDString + dict["uuid"] = uuid + dict["firstStart"] = now + dict["lastStart"] = now + dict["starts"] = 1 + dict["userName"] = analyticsUserName + dict["firstAppVersion"] = appVersion() + dict["appVersion"] = appVersion() + dict["firstAppBuild"] = appBuild() + dict["appBuild"] = appBuild() + + if let loadedDict = dictFromFile(analyticsFileURL) { + if let val = loadedDict["firstStart"] as? Double { + dict["firstStart"] = val + } + if let val = loadedDict["lastStart"] as? Double { + if update { + dict["lastStart"] = now + } else { + dict["lastStart"] = val + } + } + if let val = loadedDict["starts"] as? Int { + if update { + dict["starts"] = val + 1 + } else { + dict["starts"] = val + } + } + if let val = loadedDict["uuid"] as? String { + dict["uuid"] = val + uuid = val + } + if let val = loadedDict["userName"] as? String { + if update && !analyticsUserName.isEmpty { + dict["userName"] = analyticsUserName + } else { + if !val.isEmpty { + dict["userName"] = val + } + } + } + if let val = loadedDict["firstAppVersion"] as? String { + dict["firstAppVersion"] = val + } + if let val = loadedDict["firstAppBuild"] as? Int { + dict["firstAppBuild"] = val + } + } + return dict + } + + /// Returns the current app version string (like 1.2.5) or empty string on error + func appVersion() -> String { + if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as? String { + return version + } + return "" + } + + /// Returns the current app build as integer (like 563, always incrementing) or 0 on error + func appBuild() -> Int { + if let version = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String { + if let intVersion = Int(version) { + return intVersion + } + } + return 0 + } + + // turns dict into JSON-encoded string + func jsonStringFromDict(dict: [String: AnyObject]) -> String? { + var jsonString: String? + // try to create JSON string + do { + let jsonData = try NSJSONSerialization.dataWithJSONObject(dict, options: []) + if let str = NSString(data: jsonData, encoding: NSUTF8StringEncoding) as? String { + jsonString = str + } + } catch let error as NSError { + toNSLog("SwiftyBeaver Platform Destination could not create JSON from dict. \(error)") + } + return jsonString + } + + /// returns optional dict from a json encoded file + func dictFromFile(url: NSURL) -> [String:AnyObject]? { + do { + // try to read file, decode every JSON line and put dict from each line in array + let fileContent = try NSString(contentsOfFile: url.path!, encoding: NSUTF8StringEncoding) + // try to parse json string into dict + if let data = fileContent.dataUsingEncoding(NSUTF8StringEncoding) { + do { + return try NSJSONSerialization.JSONObjectWithData(data, + options: .MutableContainers) as? [String:AnyObject] + } catch let error { + toNSLog("SwiftyBeaver Platform Destination could not parse file \(url). \(error)") + } + } + } catch let error { + toNSLog("SwiftyBeaver Platform Destination could not read file \(url). \(error)") + } + return nil + } + + // turns dict into JSON and saves it to file + func saveDictToFile(dict: [String: AnyObject], url: NSURL) -> Bool { + let jsonString = jsonStringFromDict(dict) + + if let str = jsonString { + toNSLog("saving '\(str)' to \(url)") + return saveToFile(str, url: url, overwrite: true) + } + return false + } + + + // MARK: Debug Helpers + + /// log String to toNSLog. Used to debug the class logic + func toNSLog(str: String) { + if showNSLog { + NSLog("SBPlatform: \(str)") + } + } + + /// helper function for thread logging during development + func threadName() -> String { + if NSThread.isMainThread() { + return "main" + } else { + if let threadName = NSThread.currentThread().name where !threadName.isEmpty { + return threadName + } else if let queueName = String(UTF8String: + dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)) where !queueName.isEmpty { + return queueName + } else { + return String(format: "%p", NSThread.currentThread()) + } + } + } +} diff --git a/iOS/Pods/SwiftyBeaver/sources/SwiftyBeaver.swift b/iOS/Pods/SwiftyBeaver/sources/SwiftyBeaver.swift new file mode 100644 index 00000000..63b1b231 --- /dev/null +++ b/iOS/Pods/SwiftyBeaver/sources/SwiftyBeaver.swift @@ -0,0 +1,167 @@ +// +// SwiftyBeaver.swift +// SwiftyBeaver +// +// Created by Sebastian Kreutzberger (Twitter @skreutzb) on 28.11.15. +// Copyright © 2015 Sebastian Kreutzberger +// Some rights reserved: http://opensource.org/licenses/MIT +// + +import Foundation + +public class SwiftyBeaver { + + /// version string of framework + public static let version = "0.6.3" // UPDATE ON RELEASE! + /// build number of framework + public static let build = 630 // version 0.7.1 -> 710, UPDATE ON RELEASE! + + public enum Level: Int { + case Verbose = 0 + case Debug = 1 + case Info = 2 + case Warning = 3 + case Error = 4 + } + + // a set of active destinations + public private(set) static var destinations = Set() + + // MARK: Destination Handling + + /// returns boolean about success + public class func addDestination(destination: BaseDestination) -> Bool { + if destinations.contains(destination) { + return false + } + destinations.insert(destination) + return true + } + + /// returns boolean about success + public class func removeDestination(destination: BaseDestination) -> Bool { + if destinations.contains(destination) == false { + return false + } + destinations.remove(destination) + return true + } + + /// if you need to start fresh + public class func removeAllDestinations() { + destinations.removeAll() + } + + /// returns the amount of destinations + public class func countDestinations() -> Int { + return destinations.count + } + + /// returns the current thread name + class func threadName() -> String { + if NSThread.isMainThread() { + return "" + } else { + if let threadName = NSThread.currentThread().name where !threadName.isEmpty { + return threadName + } else if let queueName = String(UTF8String: + dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)) where !queueName.isEmpty { + return queueName + } else { + return String(format: "%p", NSThread.currentThread()) + } + } + } + + // MARK: Levels + + /// log something generally unimportant (lowest priority) + public class func verbose(@autoclosure message: () -> Any, _ + path: String = #file, _ function: String = #function, line: Int = #line) { + dispatch_send(Level.Verbose, message: message, thread: threadName(), path: path, function: function, line: line) + } + + /// log something which help during debugging (low priority) + public class func debug(@autoclosure message: () -> Any, _ + path: String = #file, _ function: String = #function, line: Int = #line) { + dispatch_send(Level.Debug, message: message, thread: threadName(), path: path, function: function, line: line) + } + + /// log something which you are really interested but which is not an issue or error (normal priority) + public class func info(@autoclosure message: () -> Any, _ + path: String = #file, _ function: String = #function, line: Int = #line) { + dispatch_send(Level.Info, message: message, thread: threadName(), path: path, function: function, line: line) + } + + /// log something which may cause big trouble soon (high priority) + public class func warning(@autoclosure message: () -> Any, _ + path: String = #file, _ function: String = #function, line: Int = #line) { + dispatch_send(Level.Warning, message: message, thread: threadName(), path: path, function: function, line: line) + } + + /// log something which will keep you awake at night (highest priority) + public class func error(@autoclosure message: () -> Any, _ + path: String = #file, _ function: String = #function, line: Int = #line) { + dispatch_send(Level.Error, message: message, thread: threadName(), path: path, function: function, line: line) + } + + /// internal helper which dispatches send to dedicated queue if minLevel is ok + class func dispatch_send(level: SwiftyBeaver.Level, @autoclosure message: () -> Any, + thread: String, path: String, function: String, line: Int) { + var resolvedMessage: String? + for dest in destinations { + + guard let queue = dest.queue else { + continue + } + + resolvedMessage = resolvedMessage == nil && dest.hasMessageFilters() ? "\(message())" : nil + if dest.shouldLevelBeLogged(level, path: path, function: function, message: resolvedMessage) { + // try to convert msg object to String and put it on queue + let msgStr = resolvedMessage == nil ? "\(message())" : resolvedMessage! + let f = stripParams(function) + + if dest.asynchronously { + dispatch_async(queue) { + dest.send(level, msg: msgStr, thread: thread, path: path, function: f, line: line) + } + } else { + dispatch_sync(queue) { + dest.send(level, msg: msgStr, thread: thread, path: path, function: f, line: line) + } + } + } + } + } + + /** + Flush all destinations to make sure all logging messages have been written out + Returns after all messages flushed or timeout seconds + + - returns: true if all messages flushed, false if timeout occurred + */ + public class func flush(secondTimeout: Int64) -> Bool { + let grp = dispatch_group_create() + for dest in destinations { + if let queue = dest.queue { + dispatch_group_enter(grp) + dispatch_async(queue, { + dest.flush() + dispatch_group_leave(grp) + }) + } + } + let waitUntil = dispatch_time(DISPATCH_TIME_NOW, secondTimeout * 1000000000) + return dispatch_group_wait(grp, waitUntil) == 0 + } + + /// removes the parameters from a function because it looks weird with a single param + class func stripParams(function: String) -> String { + var f = function + if let indexOfBrace = f.characters.indexOf("(") { + f = f.substringToIndex(indexOfBrace) + } + f = f + "()" + return f + } +} diff --git a/iOS/Pods/SwiftyJSON/README.md b/iOS/Pods/SwiftyJSON/README.md index 75d51850..5c983cc5 100644 --- a/iOS/Pods/SwiftyJSON/README.md +++ b/iOS/Pods/SwiftyJSON/README.md @@ -1,5 +1,5 @@ -#SwiftyJSON [中文介绍](http://tangplin.github.io/swiftyjson/) - +#SwiftyJSON + [![Travis CI](https://travis-ci.org/SwiftyJSON/SwiftyJSON.svg?branch=master)](https://travis-ci.org/SwiftyJSON/SwiftyJSON) SwiftyJSON makes it easy to deal with JSON data in Swift. @@ -19,6 +19,11 @@ SwiftyJSON makes it easy to deal with JSON data in Swift. - [Literal convertibles](#literal-convertibles) 1. [Work with Alamofire](#work-with-alamofire) +> For Swift3 support, take a look at the [swift3 beta branch](https://github.com/SwiftyJSON/SwiftyJSON/tree/swift3) + +> [中文介绍](http://tangplin.github.io/swiftyjson/) + + ##Why is the typical JSON handling in Swift NOT good? Swift is very strict about types. But although explicit typing is good for saving us from mistakes, it becomes painful when dealing with JSON and other areas that are, by nature, implicit about types. @@ -89,11 +94,12 @@ platform :ios, '8.0' use_frameworks! target 'MyApp' do - pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git' + pod 'SwiftyJSON' end ``` Note that this requires CocoaPods version 36, and your iOS deployment target to be at least 8.0: + ####Carthage (iOS 8+, OS X 10.9+) You can use [Carthage](https://github.com/Carthage/Carthage) to install `SwiftyJSON` by adding it to your `Cartfile`: ``` diff --git a/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-dummy.m b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-dummy.m new file mode 100644 index 00000000..e1abb309 --- /dev/null +++ b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Alamofire_iOS : NSObject +@end +@implementation PodsDummy_Alamofire_iOS +@end diff --git a/iOS/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-prefix.pch similarity index 100% rename from iOS/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch rename to iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-prefix.pch diff --git a/iOS/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-umbrella.h similarity index 100% rename from iOS/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h rename to iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS-umbrella.h diff --git a/iOS/Pods/Target Support Files/Alamofire/Alamofire.modulemap b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS.modulemap similarity index 59% rename from iOS/Pods/Target Support Files/Alamofire/Alamofire.modulemap rename to iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS.modulemap index d1f125fa..ce215250 100644 --- a/iOS/Pods/Target Support Files/Alamofire/Alamofire.modulemap +++ b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS.modulemap @@ -1,5 +1,5 @@ framework module Alamofire { - umbrella header "Alamofire-umbrella.h" + umbrella header "Alamofire-iOS-umbrella.h" export * module * { export * } diff --git a/iOS/Pods/Target Support Files/Alamofire/Alamofire.xcconfig b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS.xcconfig similarity index 98% rename from iOS/Pods/Target Support Files/Alamofire/Alamofire.xcconfig rename to iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS.xcconfig index 6b17eecc..75defd44 100644 --- a/iOS/Pods/Target Support Files/Alamofire/Alamofire.xcconfig +++ b/iOS/Pods/Target Support Files/Alamofire-iOS/Alamofire-iOS.xcconfig @@ -1,4 +1,4 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Alamofire +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Alamofire-iOS GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" diff --git a/iOS/Pods/Target Support Files/Alamofire/Info.plist b/iOS/Pods/Target Support Files/Alamofire-iOS/Info.plist similarity index 96% rename from iOS/Pods/Target Support Files/Alamofire/Info.plist rename to iOS/Pods/Target Support Files/Alamofire-iOS/Info.plist index ebdce251..7694605f 100644 --- a/iOS/Pods/Target Support Files/Alamofire/Info.plist +++ b/iOS/Pods/Target Support Files/Alamofire-iOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.4.0 + 3.4.1 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-dummy.m b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-dummy.m new file mode 100644 index 00000000..8a0f66da --- /dev/null +++ b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Alamofire_watchOS : NSObject +@end +@implementation PodsDummy_Alamofire_watchOS +@end diff --git a/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-prefix.pch b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-prefix.pch new file mode 100644 index 00000000..8afde9dd --- /dev/null +++ b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-umbrella.h b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-umbrella.h new file mode 100644 index 00000000..f87001cb --- /dev/null +++ b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double AlamofireVersionNumber; +FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; + diff --git a/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS.modulemap b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS.modulemap new file mode 100644 index 00000000..f60c6731 --- /dev/null +++ b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS.modulemap @@ -0,0 +1,6 @@ +framework module Alamofire { + umbrella header "Alamofire-watchOS-umbrella.h" + + export * + module * { export * } +} diff --git a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks.xcconfig b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS.xcconfig similarity index 66% rename from iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks.xcconfig rename to iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS.xcconfig index 8537b5fa..9cb9b589 100644 --- a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks.xcconfig +++ b/iOS/Pods/Target Support Files/Alamofire-watchOS/Alamofire-watchOS.xcconfig @@ -1,7 +1,6 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftTweaks +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Alamofire-watchOS GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" -OTHER_LDFLAGS = -framework "UIKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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/iOS/Pods/Target Support Files/Log/Info.plist b/iOS/Pods/Target Support Files/Alamofire-watchOS/Info.plist similarity index 96% rename from iOS/Pods/Target Support Files/Log/Info.plist rename to iOS/Pods/Target Support Files/Alamofire-watchOS/Info.plist index 324eeb2d..7694605f 100644 --- a/iOS/Pods/Target Support Files/Log/Info.plist +++ b/iOS/Pods/Target Support Files/Alamofire-watchOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.5.0 + 3.4.1 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/Alamofire/Alamofire-dummy.m b/iOS/Pods/Target Support Files/Alamofire/Alamofire-dummy.m deleted file mode 100644 index a6c45942..00000000 --- a/iOS/Pods/Target Support Files/Alamofire/Alamofire-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Alamofire : NSObject -@end -@implementation PodsDummy_Alamofire -@end diff --git a/iOS/Pods/Target Support Files/FSCalendar/FSCalendar-umbrella.h b/iOS/Pods/Target Support Files/FSCalendar/FSCalendar-umbrella.h index 09611e7c..7a1715e3 100644 --- a/iOS/Pods/Target Support Files/FSCalendar/FSCalendar-umbrella.h +++ b/iOS/Pods/Target Support Files/FSCalendar/FSCalendar-umbrella.h @@ -12,9 +12,8 @@ #import "FSCalendarEventIndicator.h" #import "FSCalendarFlowLayout.h" #import "FSCalendarHeader.h" +#import "FSCalendarScopeHandle.h" #import "FSCalendarStickyHeader.h" -#import "NSDate+FSExtension.h" -#import "NSString+FSExtension.h" #import "UIView+FSExtension.h" FOUNDATION_EXPORT double FSCalendarVersionNumber; diff --git a/iOS/Pods/Target Support Files/FSCalendar/Info.plist b/iOS/Pods/Target Support Files/FSCalendar/Info.plist index 92aaf05d..c054f9c1 100644 --- a/iOS/Pods/Target Support Files/FSCalendar/Info.plist +++ b/iOS/Pods/Target Support Files/FSCalendar/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.1.1 + 2.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/Localize-Swift/Info.plist b/iOS/Pods/Target Support Files/Localize-Swift/Info.plist index 7ea8235e..a7a6daf3 100644 --- a/iOS/Pods/Target Support Files/Localize-Swift/Info.plist +++ b/iOS/Pods/Target Support Files/Localize-Swift/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.1.2 + 1.5.0 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/Log/Log-dummy.m b/iOS/Pods/Target Support Files/Log/Log-dummy.m deleted file mode 100644 index 2691e534..00000000 --- a/iOS/Pods/Target Support Files/Log/Log-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Log : NSObject -@end -@implementation PodsDummy_Log -@end diff --git a/iOS/Pods/Target Support Files/Log/Log-umbrella.h b/iOS/Pods/Target Support Files/Log/Log-umbrella.h deleted file mode 100644 index 0dd632ac..00000000 --- a/iOS/Pods/Target Support Files/Log/Log-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double LogVersionNumber; -FOUNDATION_EXPORT const unsigned char LogVersionString[]; - diff --git a/iOS/Pods/Target Support Files/Log/Log.modulemap b/iOS/Pods/Target Support Files/Log/Log.modulemap deleted file mode 100644 index b2820cd1..00000000 --- a/iOS/Pods/Target Support Files/Log/Log.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Log { - umbrella header "Log-umbrella.h" - - export * - module * { export * } -} diff --git a/iOS/Pods/Target Support Files/NVActivityIndicatorView/Info.plist b/iOS/Pods/Target Support Files/NVActivityIndicatorView/Info.plist index d4fb73c7..88c9e146 100644 --- a/iOS/Pods/Target Support Files/NVActivityIndicatorView/Info.plist +++ b/iOS/Pods/Target Support Files/NVActivityIndicatorView/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.6.0 + 2.9.0 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/Info.plist b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Info.plist similarity index 100% rename from iOS/Pods/Target Support Files/SwiftInAppPurchase/Info.plist rename to iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Info.plist diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-acknowledgements.markdown b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-acknowledgements.markdown new file mode 100644 index 00000000..88aaa93f --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-acknowledgements.markdown @@ -0,0 +1,51 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Alamofire + +Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/) + +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. + + +## SwiftyJSON + +The MIT License (MIT) + +Copyright (c) 2014 Ruoyu Fu + +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. + +Generated by CocoaPods - https://cocoapods.org diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-acknowledgements.plist b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-acknowledgements.plist new file mode 100644 index 00000000..6ed051b0 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-acknowledgements.plist @@ -0,0 +1,85 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/) + +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. + + Title + Alamofire + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Ruoyu Fu + +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. + + Title + SwiftyJSON + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-dummy.m b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-dummy.m new file mode 100644 index 00000000..31acae1a --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_tpg_offline_Watch_Extension : NSObject +@end +@implementation PodsDummy_Pods_tpg_offline_Watch_Extension +@end diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-frameworks.sh b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-frameworks.sh new file mode 100755 index 00000000..5a7fc669 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-frameworks.sh @@ -0,0 +1,93 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/Alamofire-watchOS/Alamofire.framework" + install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON-watchOS/SwiftyJSON.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/Alamofire-watchOS/Alamofire.framework" + install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON-watchOS/SwiftyJSON.framework" +fi diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-resources.sh b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-resources.sh new file mode 100755 index 00000000..0a156152 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-resources.sh @@ -0,0 +1,102 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-umbrella.h b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-umbrella.h new file mode 100644 index 00000000..1eb9f139 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_tpg_offline_Watch_ExtensionVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_tpg_offline_Watch_ExtensionVersionString[]; + diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.debug.xcconfig b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.debug.xcconfig new file mode 100644 index 00000000..5c638189 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.debug.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-watchOS" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-watchOS" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-watchOS/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-watchOS/SwiftyJSON.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "SwiftyJSON" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.modulemap b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.modulemap new file mode 100644 index 00000000..5178cb08 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.modulemap @@ -0,0 +1,6 @@ +framework module Pods_tpg_offline_Watch_Extension { + umbrella header "Pods-tpg offline Watch Extension-umbrella.h" + + export * + module * { export * } +} diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.release.xcconfig b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.release.xcconfig new file mode 100644 index 00000000..5c638189 --- /dev/null +++ b/iOS/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.release.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-watchOS" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-watchOS" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-watchOS/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-watchOS/SwiftyJSON.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "SwiftyJSON" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.markdown b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.markdown index 39518ac6..376c3906 100644 --- a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.markdown +++ b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.markdown @@ -101,7 +101,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Crashlytics -Fabric: Copyright 2015 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2015 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt +Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt ## DGElasticPullToRefresh @@ -263,29 +263,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## Log - -Copyright (c) 2015-2016 Damien (http://delba.io) - -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. - - ## MRProgress The MIT License (MIT) @@ -314,7 +291,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. The MIT License (MIT) -Copyright (c) 2015 Nguyen Vinh +Copyright (c) 2016 Nguyen Vinh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -429,24 +406,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## SwiftInAppPurchase - -SwiftInAppPurchase is licensed under the Apache License, Version 2.0. - -Copyright (c) 2015 Rawd - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - - -## SwiftTweaks +## SwiftyBeaver The MIT License (MIT) -Copyright (c) 2016 Khan Academy +Copyright (c) 2015 Sebastian Kreutzberger Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.plist b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.plist index 14050085..192eed27 100644 --- a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.plist +++ b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-acknowledgements.plist @@ -128,7 +128,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FooterText - Fabric: Copyright 2015 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2015 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt + Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt Title Crashlytics Type @@ -326,33 +326,6 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - Copyright (c) 2015-2016 Damien (http://delba.io) - -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. - - Title - Log - Type - PSGroupSpecifier - FooterText The MIT License (MIT) @@ -385,7 +358,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FooterText The MIT License (MIT) -Copyright (c) 2015 Nguyen Vinh +Copyright (c) 2016 Nguyen Vinh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -520,28 +493,11 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - SwiftInAppPurchase is licensed under the Apache License, Version 2.0. - -Copyright (c) 2015 Rawd <suraphan.d@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - - Title - SwiftInAppPurchase - Type - PSGroupSpecifier - FooterText The MIT License (MIT) -Copyright (c) 2016 Khan Academy +Copyright (c) 2015 Sebastian Kreutzberger Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -562,7 +518,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Title - SwiftTweaks + SwiftyBeaver Type PSGroupSpecifier diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-frameworks.sh b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-frameworks.sh index 3fbcb50c..31ddb103 100755 --- a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-frameworks.sh +++ b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-frameworks.sh @@ -85,7 +85,7 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "$BUILT_PRODUCTS_DIR/AKPickerView-Swift/AKPickerView_Swift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Alamofire/Alamofire.framework" + install_framework "$BUILT_PRODUCTS_DIR/Alamofire-iOS/Alamofire.framework" install_framework "$BUILT_PRODUCTS_DIR/AsyncSwift/Async.framework" install_framework "$BUILT_PRODUCTS_DIR/ChameleonFramework/ChameleonFramework.framework" install_framework "$BUILT_PRODUCTS_DIR/DGElasticPullToRefresh/DGElasticPullToRefresh.framework" @@ -95,20 +95,18 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "$BUILT_PRODUCTS_DIR/FontAwesomeKit/FontAwesomeKit.framework" install_framework "$BUILT_PRODUCTS_DIR/INTULocationManager/INTULocationManager.framework" install_framework "$BUILT_PRODUCTS_DIR/Localize-Swift/Localize_Swift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Log/Log.framework" install_framework "$BUILT_PRODUCTS_DIR/MRProgress/MRProgress.framework" install_framework "$BUILT_PRODUCTS_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework" install_framework "$BUILT_PRODUCTS_DIR/Onboard/Onboard.framework" install_framework "$BUILT_PRODUCTS_DIR/PermissionScope/PermissionScope.framework" install_framework "$BUILT_PRODUCTS_DIR/SCLAlertView/SCLAlertView.framework" install_framework "$BUILT_PRODUCTS_DIR/SwiftDate/SwiftDate.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftInAppPurchase/SwiftInAppPurchase.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftTweaks/SwiftTweaks.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework" + install_framework "$BUILT_PRODUCTS_DIR/SwiftyBeaver/SwiftyBeaver.framework" + install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON-iOS/SwiftyJSON.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "$BUILT_PRODUCTS_DIR/AKPickerView-Swift/AKPickerView_Swift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Alamofire/Alamofire.framework" + install_framework "$BUILT_PRODUCTS_DIR/Alamofire-iOS/Alamofire.framework" install_framework "$BUILT_PRODUCTS_DIR/AsyncSwift/Async.framework" install_framework "$BUILT_PRODUCTS_DIR/ChameleonFramework/ChameleonFramework.framework" install_framework "$BUILT_PRODUCTS_DIR/DGElasticPullToRefresh/DGElasticPullToRefresh.framework" @@ -118,14 +116,12 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "$BUILT_PRODUCTS_DIR/FontAwesomeKit/FontAwesomeKit.framework" install_framework "$BUILT_PRODUCTS_DIR/INTULocationManager/INTULocationManager.framework" install_framework "$BUILT_PRODUCTS_DIR/Localize-Swift/Localize_Swift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Log/Log.framework" install_framework "$BUILT_PRODUCTS_DIR/MRProgress/MRProgress.framework" install_framework "$BUILT_PRODUCTS_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework" install_framework "$BUILT_PRODUCTS_DIR/Onboard/Onboard.framework" install_framework "$BUILT_PRODUCTS_DIR/PermissionScope/PermissionScope.framework" install_framework "$BUILT_PRODUCTS_DIR/SCLAlertView/SCLAlertView.framework" install_framework "$BUILT_PRODUCTS_DIR/SwiftDate/SwiftDate.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftInAppPurchase/SwiftInAppPurchase.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftTweaks/SwiftTweaks.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework" + install_framework "$BUILT_PRODUCTS_DIR/SwiftyBeaver/SwiftyBeaver.framework" + install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON-iOS/SwiftyJSON.framework" fi diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh index e768f929..0a156152 100755 --- a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh +++ b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh @@ -48,8 +48,8 @@ EOM ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" diff --git a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.debug.xcconfig b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.debug.xcconfig index a9c4fc3f..6275beba 100644 --- a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.debug.xcconfig +++ b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.debug.xcconfig @@ -1,10 +1,10 @@ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift" "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework" "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh" "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch" "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider" "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar" "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit" "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager" "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift" "$PODS_CONFIGURATION_BUILD_DIR/Log" "$PODS_CONFIGURATION_BUILD_DIR/MRProgress" "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/Onboard" "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope" "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView" "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate" "$PODS_CONFIGURATION_BUILD_DIR/SwiftInAppPurchase" "$PODS_CONFIGURATION_BUILD_DIR/SwiftTweaks" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-iOS" "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift" "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework" "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh" "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch" "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider" "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar" "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit" "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager" "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift" "$PODS_CONFIGURATION_BUILD_DIR/MRProgress" "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/Onboard" "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope" "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView" "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyBeaver" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-iOS" "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift/AKPickerView_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift/Async.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework/ChameleonFramework.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh/DGElasticPullToRefresh.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch/DGRunkeeperSwitch.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider/EFCircularSlider.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar/FSCalendar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit/FontAwesomeKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager/INTULocationManager.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift/Localize_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Log/Log.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MRProgress/MRProgress.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Onboard/Onboard.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope/PermissionScope.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView/SCLAlertView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate/SwiftDate.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftInAppPurchase/SwiftInAppPurchase.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftTweaks/SwiftTweaks.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AKPickerView_Swift" -framework "Alamofire" -framework "Async" -framework "ChameleonFramework" -framework "Crashlytics" -framework "DGElasticPullToRefresh" -framework "DGRunkeeperSwitch" -framework "EFCircularSlider" -framework "FSCalendar" -framework "Fabric" -framework "FontAwesomeKit" -framework "INTULocationManager" -framework "Localize_Swift" -framework "Log" -framework "MRProgress" -framework "NVActivityIndicatorView" -framework "Onboard" -framework "PermissionScope" -framework "SCLAlertView" -framework "Security" -framework "SwiftDate" -framework "SwiftInAppPurchase" -framework "SwiftTweaks" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift/AKPickerView_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-iOS/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift/Async.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework/ChameleonFramework.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh/DGElasticPullToRefresh.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch/DGRunkeeperSwitch.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider/EFCircularSlider.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar/FSCalendar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit/FontAwesomeKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager/INTULocationManager.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift/Localize_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MRProgress/MRProgress.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Onboard/Onboard.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope/PermissionScope.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView/SCLAlertView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate/SwiftDate.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyBeaver/SwiftyBeaver.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-iOS/SwiftyJSON.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AKPickerView_Swift" -framework "Alamofire" -framework "Async" -framework "ChameleonFramework" -framework "Crashlytics" -framework "DGElasticPullToRefresh" -framework "DGRunkeeperSwitch" -framework "EFCircularSlider" -framework "FSCalendar" -framework "Fabric" -framework "FontAwesomeKit" -framework "INTULocationManager" -framework "Localize_Swift" -framework "MRProgress" -framework "NVActivityIndicatorView" -framework "Onboard" -framework "PermissionScope" -framework "SCLAlertView" -framework "Security" -framework "SwiftDate" -framework "SwiftyBeaver" -framework "SwiftyJSON" -framework "SystemConfiguration" -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/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.release.xcconfig b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.release.xcconfig index a9c4fc3f..6275beba 100644 --- a/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.release.xcconfig +++ b/iOS/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.release.xcconfig @@ -1,10 +1,10 @@ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift" "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework" "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh" "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch" "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider" "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar" "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit" "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager" "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift" "$PODS_CONFIGURATION_BUILD_DIR/Log" "$PODS_CONFIGURATION_BUILD_DIR/MRProgress" "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/Onboard" "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope" "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView" "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate" "$PODS_CONFIGURATION_BUILD_DIR/SwiftInAppPurchase" "$PODS_CONFIGURATION_BUILD_DIR/SwiftTweaks" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-iOS" "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift" "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework" "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh" "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch" "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider" "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar" "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit" "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager" "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift" "$PODS_CONFIGURATION_BUILD_DIR/MRProgress" "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/Onboard" "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope" "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView" "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyBeaver" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-iOS" "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift/AKPickerView_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift/Async.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework/ChameleonFramework.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh/DGElasticPullToRefresh.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch/DGRunkeeperSwitch.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider/EFCircularSlider.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar/FSCalendar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit/FontAwesomeKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager/INTULocationManager.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift/Localize_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Log/Log.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MRProgress/MRProgress.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Onboard/Onboard.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope/PermissionScope.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView/SCLAlertView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate/SwiftDate.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftInAppPurchase/SwiftInAppPurchase.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftTweaks/SwiftTweaks.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AKPickerView_Swift" -framework "Alamofire" -framework "Async" -framework "ChameleonFramework" -framework "Crashlytics" -framework "DGElasticPullToRefresh" -framework "DGRunkeeperSwitch" -framework "EFCircularSlider" -framework "FSCalendar" -framework "Fabric" -framework "FontAwesomeKit" -framework "INTULocationManager" -framework "Localize_Swift" -framework "Log" -framework "MRProgress" -framework "NVActivityIndicatorView" -framework "Onboard" -framework "PermissionScope" -framework "SCLAlertView" -framework "Security" -framework "SwiftDate" -framework "SwiftInAppPurchase" -framework "SwiftTweaks" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AKPickerView-Swift/AKPickerView_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-iOS/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AsyncSwift/Async.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ChameleonFramework/ChameleonFramework.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGElasticPullToRefresh/DGElasticPullToRefresh.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/DGRunkeeperSwitch/DGRunkeeperSwitch.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/EFCircularSlider/EFCircularSlider.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FSCalendar/FSCalendar.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FontAwesomeKit/FontAwesomeKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/INTULocationManager/INTULocationManager.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Localize-Swift/Localize_Swift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MRProgress/MRProgress.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Onboard/Onboard.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PermissionScope/PermissionScope.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SCLAlertView/SCLAlertView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftDate/SwiftDate.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyBeaver/SwiftyBeaver.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-iOS/SwiftyJSON.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AKPickerView_Swift" -framework "Alamofire" -framework "Async" -framework "ChameleonFramework" -framework "Crashlytics" -framework "DGElasticPullToRefresh" -framework "DGRunkeeperSwitch" -framework "EFCircularSlider" -framework "FSCalendar" -framework "Fabric" -framework "FontAwesomeKit" -framework "INTULocationManager" -framework "Localize_Swift" -framework "MRProgress" -framework "NVActivityIndicatorView" -framework "Onboard" -framework "PermissionScope" -framework "SCLAlertView" -framework "Security" -framework "SwiftDate" -framework "SwiftyBeaver" -framework "SwiftyJSON" -framework "SystemConfiguration" -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/iOS/Pods/Target Support Files/SCLAlertView/Info.plist b/iOS/Pods/Target Support Files/SCLAlertView/Info.plist index 35a09e22..33457b71 100644 --- a/iOS/Pods/Target Support Files/SCLAlertView/Info.plist +++ b/iOS/Pods/Target Support Files/SCLAlertView/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.5.8 + 0.5.9 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-dummy.m b/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-dummy.m deleted file mode 100644 index 7ff8cb7d..00000000 --- a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftInAppPurchase : NSObject -@end -@implementation PodsDummy_SwiftInAppPurchase -@end diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-umbrella.h b/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-umbrella.h deleted file mode 100644 index fb0caa88..00000000 --- a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double SwiftInAppPurchaseVersionNumber; -FOUNDATION_EXPORT const unsigned char SwiftInAppPurchaseVersionString[]; - diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.modulemap b/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.modulemap deleted file mode 100644 index d22d3017..00000000 --- a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SwiftInAppPurchase { - umbrella header "SwiftInAppPurchase-umbrella.h" - - export * - module * { export * } -} diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.xcconfig b/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.xcconfig deleted file mode 100644 index b8de32f5..00000000 --- a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftInAppPurchase -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" -OTHER_LDFLAGS = -framework "StoreKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES diff --git a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-dummy.m b/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-dummy.m deleted file mode 100644 index 87d6bbe9..00000000 --- a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftTweaks : NSObject -@end -@implementation PodsDummy_SwiftTweaks -@end diff --git a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-prefix.pch b/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-prefix.pch deleted file mode 100644 index aa992a4a..00000000 --- a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-umbrella.h b/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-umbrella.h deleted file mode 100644 index ef81b6ef..00000000 --- a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double SwiftTweaksVersionNumber; -FOUNDATION_EXPORT const unsigned char SwiftTweaksVersionString[]; - diff --git a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks.modulemap b/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks.modulemap deleted file mode 100644 index b26e3cab..00000000 --- a/iOS/Pods/Target Support Files/SwiftTweaks/SwiftTweaks.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SwiftTweaks { - umbrella header "SwiftTweaks-umbrella.h" - - export * - module * { export * } -} diff --git a/iOS/Pods/Target Support Files/SwiftTweaks/Info.plist b/iOS/Pods/Target Support Files/SwiftyBeaver/Info.plist similarity index 96% rename from iOS/Pods/Target Support Files/SwiftTweaks/Info.plist rename to iOS/Pods/Target Support Files/SwiftyBeaver/Info.plist index 2243fe6e..535587fb 100644 --- a/iOS/Pods/Target Support Files/SwiftTweaks/Info.plist +++ b/iOS/Pods/Target Support Files/SwiftyBeaver/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.0.0 + 0.6.3 CFBundleSignature ???? CFBundleVersion diff --git a/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-dummy.m b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-dummy.m new file mode 100644 index 00000000..b00afabc --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SwiftyBeaver : NSObject +@end +@implementation PodsDummy_SwiftyBeaver +@end diff --git a/iOS/Pods/Target Support Files/Log/Log-prefix.pch b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-prefix.pch similarity index 100% rename from iOS/Pods/Target Support Files/Log/Log-prefix.pch rename to iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-prefix.pch diff --git a/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-umbrella.h b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-umbrella.h new file mode 100644 index 00000000..a09a30b4 --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double SwiftyBeaverVersionNumber; +FOUNDATION_EXPORT const unsigned char SwiftyBeaverVersionString[]; + diff --git a/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver.modulemap b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver.modulemap new file mode 100644 index 00000000..c217e280 --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver.modulemap @@ -0,0 +1,6 @@ +framework module SwiftyBeaver { + umbrella header "SwiftyBeaver-umbrella.h" + + export * + module * { export * } +} diff --git a/iOS/Pods/Target Support Files/Log/Log.xcconfig b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver.xcconfig similarity index 87% rename from iOS/Pods/Target Support Files/Log/Log.xcconfig rename to iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver.xcconfig index 872c1e73..9461d80b 100644 --- a/iOS/Pods/Target Support Files/Log/Log.xcconfig +++ b/iOS/Pods/Target Support Files/SwiftyBeaver/SwiftyBeaver.xcconfig @@ -1,4 +1,4 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Log +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftyBeaver GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" diff --git a/iOS/Pods/Target Support Files/SwiftyJSON/Info.plist b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/Info.plist similarity index 100% rename from iOS/Pods/Target Support Files/SwiftyJSON/Info.plist rename to iOS/Pods/Target Support Files/SwiftyJSON-iOS/Info.plist diff --git a/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-dummy.m b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-dummy.m new file mode 100644 index 00000000..86461c25 --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SwiftyJSON_iOS : NSObject +@end +@implementation PodsDummy_SwiftyJSON_iOS +@end diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-prefix.pch b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-prefix.pch similarity index 100% rename from iOS/Pods/Target Support Files/SwiftInAppPurchase/SwiftInAppPurchase-prefix.pch rename to iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-prefix.pch diff --git a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-umbrella.h similarity index 100% rename from iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h rename to iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS-umbrella.h diff --git a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.modulemap similarity index 59% rename from iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap rename to iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.modulemap index 6f41751d..0965ba28 100644 --- a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap +++ b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.modulemap @@ -1,5 +1,5 @@ framework module SwiftyJSON { - umbrella header "SwiftyJSON-umbrella.h" + umbrella header "SwiftyJSON-iOS-umbrella.h" export * module * { export * } diff --git a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.xcconfig similarity index 98% rename from iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig rename to iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.xcconfig index cef3b339..393baa14 100644 --- a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig +++ b/iOS/Pods/Target Support Files/SwiftyJSON-iOS/SwiftyJSON-iOS.xcconfig @@ -1,4 +1,4 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-iOS GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" diff --git a/iOS/Pods/Target Support Files/SwiftInAppPurchase/ResourceBundle-SwiftInAppPurchase-Info.plist b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/Info.plist similarity index 80% rename from iOS/Pods/Target Support Files/SwiftInAppPurchase/ResourceBundle-SwiftInAppPurchase-Info.plist rename to iOS/Pods/Target Support Files/SwiftyJSON-watchOS/Info.plist index e148b98d..ecb8f033 100644 --- a/iOS/Pods/Target Support Files/SwiftInAppPurchase/ResourceBundle-SwiftInAppPurchase-Info.plist +++ b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/Info.plist @@ -4,6 +4,8 @@ CFBundleDevelopmentRegion en + CFBundleExecutable + ${EXECUTABLE_NAME} CFBundleIdentifier ${PRODUCT_BUNDLE_IDENTIFIER} CFBundleInfoDictionaryVersion @@ -11,13 +13,13 @@ CFBundleName ${PRODUCT_NAME} CFBundlePackageType - BNDL + FMWK CFBundleShortVersionString - 1.0.0 + 2.3.2 CFBundleSignature ???? CFBundleVersion - 1 + ${CURRENT_PROJECT_VERSION} NSPrincipalClass diff --git a/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-dummy.m b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-dummy.m new file mode 100644 index 00000000..8f5fc9cf --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SwiftyJSON_watchOS : NSObject +@end +@implementation PodsDummy_SwiftyJSON_watchOS +@end diff --git a/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-prefix.pch b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-prefix.pch new file mode 100644 index 00000000..8afde9dd --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-umbrella.h b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-umbrella.h new file mode 100644 index 00000000..35749451 --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double SwiftyJSONVersionNumber; +FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; + diff --git a/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.modulemap b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.modulemap new file mode 100644 index 00000000..2ef14f84 --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.modulemap @@ -0,0 +1,6 @@ +framework module SwiftyJSON { + umbrella header "SwiftyJSON-watchOS-umbrella.h" + + export * + module * { export * } +} diff --git a/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.xcconfig b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.xcconfig new file mode 100644 index 00000000..64f43af1 --- /dev/null +++ b/iOS/Pods/Target Support Files/SwiftyJSON-watchOS/SwiftyJSON-watchOS.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON-watchOS +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m b/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m deleted file mode 100644 index 3159becd..00000000 --- a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftyJSON : NSObject -@end -@implementation PodsDummy_SwiftyJSON -@end diff --git a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch b/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch deleted file mode 100644 index aa992a4a..00000000 --- a/iOS/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/iOS/Untitled.ipynb b/iOS/Untitled.ipynb deleted file mode 100755 index ce7cd490..00000000 --- a/iOS/Untitled.ipynb +++ /dev/null @@ -1,96 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Veyrier Douane\n", - "{'stops': [{'titleName': '31 Décembre', 'subTitleName': '', 'idTransportAPI': '008592773', 'stopCode': '31DC', 'locationY': 6.162114, 'locationX': 46.201695, 'stopName': '31 Décembre'}, {'titleName': \"Avenue de l'Ain\", 'subTitleName': '', 'idTransportAPI': '008593138', 'stopCode': 'AAIN', 'locationY': 6.10995, 'locationX': 46.206019, 'stopName': \"Avenue de l'Ain\"}, {'titleName': \"L'Abbaye\", 'subTitleName': '', 'idTransportAPI': '008592965', 'stopCode': 'ABBA', 'locationY': 6.251503, 'locationX': 46.222047, 'stopName': \"L'Abbaye\"}, {'titleName': 'Acacias', 'subTitleName': '', 'idTransportAPI': '008592774', 'stopCode': 'ACAC', 'locationY': 6.138302, 'locationX': 46.192634, 'stopName': 'Acacias'}, {'titleName': 'Archamps', 'subTitleName': 'Communauté Communes', 'idTransportAPI': '008595326', 'stopCode': 'ACCM', 'locationY': 6.117599, 'locationX': 46.137872, 'stopName': 'Archamps Communauté Communes'}, {'titleName': 'Archamps', 'subTitleName': 'Centre de Convention', 'idTransportAPI': '008595325', 'stopCode': 'ACCV', 'locationY': 6.12329, 'locationX': 46.136065, 'stopName': 'Centre de Convention'}, {'titleName': 'Ancienne Douane', 'subTitleName': '', 'idTransportAPI': '008594944', 'stopCode': 'ADOU', 'locationY': 6.079773, 'locationX': 46.247334, 'stopName': 'Ancienne Douane'}, {'titleName': 'Aéroport', 'subTitleName': '', 'idTransportAPI': '008592775', 'stopCode': 'AERO', 'locationY': 6.111981, 'locationX': 46.232528, 'stopName': 'Aéroport'}, {'titleName': 'Sézenove', 'subTitleName': 'Ferrand', 'idTransportAPI': '008595224', 'stopCode': 'SEFE', 'locationY': 6.055169, 'locationX': 46.165595, 'stopName': 'Sézenove Ferrand'}, {'titleName': 'Usine à Gaz', 'subTitleName': '', 'idTransportAPI': '008593174', 'stopCode': 'AGAZ', 'locationY': 6.10826, 'locationX': 46.205768, 'stopName': 'Usine à Gaz'}, {'titleName': 'Les Aglands', 'subTitleName': '', 'idTransportAPI': '008594941', 'stopCode': 'AGLA', 'locationY': 6.067601, 'locationX': 46.25475, 'stopName': 'Les Aglands'}, {'titleName': 'Aigues Vertes', 'subTitleName': '', 'idTransportAPI': '008587901', 'stopCode': 'AGVR', 'locationY': 6.074964, 'locationX': 46.19836, 'stopName': 'Aigues Vertes'}, {'titleName': 'Aïre', 'subTitleName': '', 'idTransportAPI': '008593137', 'stopCode': 'AIRE', 'locationY': 6.103558, 'locationX': 46.201228, 'stopName': 'Aïre'}, {'titleName': 'Aire la Ville', 'subTitleName': '', 'idTransportAPI': '008587028', 'stopCode': 'AIVI', 'locationY': 6.043663, 'locationX': 46.189947, 'stopName': 'Aire la Ville'}, {'titleName': 'Jeandin', 'subTitleName': '', 'idTransportAPI': '008593106', 'stopCode': 'AJEN', 'locationY': 6.198421, 'locationX': 46.190252, 'stopName': 'Jeandin'}, {'titleName': 'Avenue du Jura', 'subTitleName': '', 'idTransportAPI': '008587910', 'stopCode': 'AJUR', 'locationY': 6.113545, 'locationX': 46.25777, 'stopName': 'Avenue du Jura'}, {'titleName': 'Versoix', 'subTitleName': 'Lachenal', 'idTransportAPI': '008593181', 'stopCode': 'VXLA', 'locationY': 6.163112, 'locationX': 46.28374, 'stopName': 'Versoix Lachenal'}, {'titleName': 'Avully', 'subTitleName': 'Ecole', 'idTransportAPI': '008592627', 'stopCode': 'ALEC', 'locationY': 6.005144, 'locationX': 46.167186, 'stopName': 'Avully Ecole'}, {'titleName': 'Alpes', 'subTitleName': '', 'idTransportAPI': '008592777', 'stopCode': 'ALPE', 'locationY': 6.147183, 'locationX': 46.209022, 'stopName': 'Alpes'}, {'titleName': 'Avully', 'subTitleName': 'Village', 'idTransportAPI': '008587031', 'stopCode': 'ALVI', 'locationY': 6.001099, 'locationX': 46.169568, 'stopName': 'Avully Village'}, {'titleName': 'Versoix', 'subTitleName': 'Argand', 'idTransportAPI': '008593182', 'stopCode': 'VXAR', 'locationY': 6.160667, 'locationX': 46.286032, 'stopName': 'Versoix Argand'}, {'titleName': 'Amandolier', 'subTitleName': '', 'idTransportAPI': '008592778', 'stopCode': 'AMDO', 'locationY': 6.167678, 'locationX': 46.200005, 'stopName': 'Amandolier'}, {'titleName': 'Ancienne', 'subTitleName': '', 'idTransportAPI': '008592668', 'stopCode': 'ANCI', 'locationY': 6.140828, 'locationX': 46.181209, 'stopName': 'Ancienne'}, {'titleName': 'Anières', 'subTitleName': 'Douane', 'idTransportAPI': '008592624', 'stopCode': 'ANDO', 'locationY': 6.237956, 'locationX': 46.268377, 'stopName': 'Anières Douane'}, {'titleName': 'Annemasse', 'subTitleName': 'Gare', 'idTransportAPI': '008595359', 'stopCode': 'ANGA', 'locationY': 6.236814, 'locationX': 46.198765, 'stopName': 'Annemasse Gare'}, {'titleName': 'Anières', 'subTitleName': 'Mairie', 'idTransportAPI': '008595010', 'stopCode': 'ANMA', 'locationY': 6.22734, 'locationX': 46.27494, 'stopName': 'Anières Mairie'}, {'titleName': 'Annemasse', 'subTitleName': 'Poste', 'idTransportAPI': '008595361', 'stopCode': 'ANPT', 'locationY': 6.233974, 'locationX': 46.194945, 'stopName': 'Annemasse Poste'}, {'titleName': 'Anières', 'subTitleName': 'Village', 'idTransportAPI': '008587029', 'stopCode': 'ANRS', 'locationY': 6.22325, 'locationX': 46.276908, 'stopName': 'Anières Village'}, {'titleName': 'Pont de Combe', 'subTitleName': '', 'idTransportAPI': '008595325', 'stopCode': 'APCB', 'locationY': 6.12329, 'locationX': 46.136065, 'stopName': 'Pont de Combe'}, {'titleName': 'Appia', 'subTitleName': '', 'idTransportAPI': '008588196', 'stopCode': 'APIA', 'locationY': 6.137232, 'locationX': 46.226856, 'stopName': 'Appia'}, {'titleName': 'Arande', 'subTitleName': '', 'idTransportAPI': '008594957', 'stopCode': 'ARAN', 'locationY': 6.079998, 'locationX': 46.140218, 'stopName': 'Arande'}, {'titleName': 'Arare', 'subTitleName': '', 'idTransportAPI': '008593050', 'stopCode': 'ARAR', 'locationY': 6.11137, 'locationX': 46.165406, 'stopName': 'Arare'}, {'titleName': 'Arena Halle 7', 'subTitleName': '', 'idTransportAPI': '008592935', 'stopCode': 'AREN', 'locationY': 6.112206, 'locationX': 46.233212, 'stopName': 'Arena Halle 7'}, {'titleName': 'Armes', 'subTitleName': '', 'idTransportAPI': '008592669', 'stopCode': 'ARME', 'locationY': 6.140207, 'locationX': 46.1868, 'stopName': 'Armes'}, {'titleName': 'Archamps', 'subTitleName': 'Technopôle', 'idTransportAPI': '008587380', 'stopCode': 'ATCH', 'locationY': 6.120809, 'locationX': 46.139193, 'stopName': 'Archamps Technopôle'}, {'titleName': 'Athenaz', 'subTitleName': 'Ecole', 'idTransportAPI': '008592632', 'stopCode': 'ATEC', 'locationY': 6.004254, 'locationX': 46.155266, 'stopName': 'Athenaz Ecole'}, {'titleName': 'Athénée', 'subTitleName': '', 'idTransportAPI': '008592779', 'stopCode': 'ATHE', 'locationY': 6.148918, 'locationX': 46.198154, 'stopName': 'Athénée'}, {'titleName': 'Attenville', 'subTitleName': '', 'idTransportAPI': '008592936', 'stopCode': 'ATTV', 'locationY': 6.114085, 'locationX': 46.227827, 'stopName': 'Attenville'}, {'titleName': 'Athenaz', 'subTitleName': 'Village', 'idTransportAPI': '008587030', 'stopCode': 'ATVI', 'locationY': 6.007005, 'locationX': 46.154574, 'stopName': 'Athenaz Village'}, {'titleName': \"Merle d'Aubigné\", 'subTitleName': '', 'idTransportAPI': '008592854', 'stopCode': 'AUBI', 'locationY': 6.161898, 'locationX': 46.206684, 'stopName': \"Merle d'Aubigné\"}, {'titleName': 'Augustins', 'subTitleName': '', 'idTransportAPI': '008592780', 'stopCode': 'AUGS', 'locationY': 6.144001, 'locationX': 46.191843, 'stopName': 'Augustins'}, {'titleName': 'Aumônes', 'subTitleName': '', 'idTransportAPI': '008593082', 'stopCode': 'AUMO', 'locationY': 6.2349, 'locationX': 46.210406, 'stopName': 'Aumônes'}, {'titleName': 'Avanchet', 'subTitleName': '', 'idTransportAPI': '008593139', 'stopCode': 'AVAN', 'locationY': 6.105023, 'locationX': 46.219773, 'stopName': 'Avanchet'}, {'titleName': 'Aviateurs', 'subTitleName': '', 'idTransportAPI': '008593064', 'stopCode': 'AVIA', 'locationY': 6.120251, 'locationX': 46.169586, 'stopName': 'Aviateurs'}, {'titleName': 'Avusy', 'subTitleName': '', 'idTransportAPI': '008587032', 'stopCode': 'AVSY', 'locationY': 5.994762, 'locationX': 46.150736, 'stopName': 'Avusy'}, {'titleName': 'Badosse', 'subTitleName': '', 'idTransportAPI': '008593052', 'stopCode': 'BADO', 'locationY': 6.124296, 'locationX': 46.156093, 'stopName': 'Badosse'}, {'titleName': 'Bel Air', 'subTitleName': '', 'idTransportAPI': '008587387', 'stopCode': 'BAIR', 'locationY': 6.143048, 'locationX': 46.204734, 'stopName': 'Bel Air'}, {'titleName': 'Battelle', 'subTitleName': '', 'idTransportAPI': '008595015', 'stopCode': 'BALE', 'locationY': 6.139299, 'locationX': 46.178926, 'stopName': 'Battelle'}, {'titleName': 'Balexert', 'subTitleName': '', 'idTransportAPI': '008593141', 'stopCode': 'BALX', 'locationY': 6.110489, 'locationX': 46.218478, 'stopName': 'Balexert'}, {'titleName': 'Bains', 'subTitleName': '', 'idTransportAPI': '008592782', 'stopCode': 'BANS', 'locationY': 6.137546, 'locationX': 46.199745, 'stopName': 'Bains'}, {'titleName': 'Les Baraques', 'subTitleName': '', 'idTransportAPI': '008594949', 'stopCode': 'BARA', 'locationY': 5.985737, 'locationX': 46.176607, 'stopName': 'Les Baraques'}, {'titleName': 'Barde', 'subTitleName': '', 'idTransportAPI': '008593142', 'stopCode': 'BARD', 'locationY': 6.098857, 'locationX': 46.206729, 'stopName': 'Barde'}, {'titleName': 'Bartholoni', 'subTitleName': '', 'idTransportAPI': '008592783', 'stopCode': 'BART', 'locationY': 6.142428, 'locationX': 46.200365, 'stopName': 'Bartholoni'}, {'titleName': 'Basselat', 'subTitleName': '', 'idTransportAPI': '008595039', 'stopCode': 'BASL', 'locationY': 6.250775, 'locationX': 46.215197, 'stopName': 'Basselat'}, {'titleName': 'Curé Baud', 'subTitleName': '', 'idTransportAPI': '008592982', 'stopCode': 'BAUD', 'locationY': 6.117276, 'locationX': 46.176427, 'stopName': 'Curé Baud'}, {'titleName': 'Baumgartner', 'subTitleName': '', 'idTransportAPI': '008103067', 'stopCode': 'BAUM', 'locationY': 15.850247, 'locationX': 47.753944, 'stopName': 'Baumgartner'}, {'titleName': 'Bois de Bay', 'subTitleName': '', 'idTransportAPI': '008593091', 'stopCode': 'BBAY', 'locationY': 6.046477, 'locationX': 46.198369, 'stopName': 'Bois de Bay'}, {'titleName': 'Collonges', 'subTitleName': 'Bas', 'idTransportAPI': '008595323', 'stopCode': 'BCOL', 'locationY': 6.139147, 'locationX': 46.142043, 'stopName': 'Bas Collonges'}, {'titleName': 'Baulacre', 'subTitleName': '', 'idTransportAPI': '008592785', 'stopCode': 'BCRE', 'locationY': 6.139218, 'locationX': 46.216465, 'stopName': 'Baulacre'}, {'titleName': 'Bourdigny', 'subTitleName': 'Douane', 'idTransportAPI': '008593092', 'stopCode': 'BDOU', 'locationY': 6.038629, 'locationX': 46.229526, 'stopName': 'Bourdigny Douane'}, {'titleName': 'Belle Cour', 'subTitleName': '', 'idTransportAPI': '008593028', 'stopCode': 'BELC', 'locationY': 6.103235, 'locationX': 46.1796, 'stopName': 'Belle Cour'}, {'titleName': 'Bellerive', 'subTitleName': '', 'idTransportAPI': '008570524', 'stopCode': 'BELL', 'locationY': 7.023406, 'locationX': 46.924464, 'stopName': 'Bellerive'}, {'titleName': 'Bellins', 'subTitleName': '', 'idTransportAPI': '008593053', 'stopCode': 'BELS', 'locationY': 6.129007, 'locationX': 46.163842, 'stopName': 'Bellins'}, {'titleName': 'Bessinge', 'subTitleName': '', 'idTransportAPI': '008592740', 'stopCode': 'BESS', 'locationY': 6.192201, 'locationX': 46.22478, 'stopName': 'Bessinge'}, {'titleName': 'Bourg de Four', 'subTitleName': '', 'idTransportAPI': '008592792', 'stopCode': 'BFOU', 'locationY': 6.148612, 'locationX': 46.200149, 'stopName': 'Bourg de Four'}, {'titleName': 'Bois Gourmand', 'subTitleName': '', 'idTransportAPI': '008593192', 'stopCode': 'BGOU', 'locationY': 6.175562, 'locationX': 46.163482, 'stopName': 'Bois Gourmand'}, {'titleName': 'Les Bougeries', 'subTitleName': '', 'idTransportAPI': '008593133', 'stopCode': 'BGRI', 'locationY': 6.214998, 'locationX': 46.218793, 'stopName': 'Les Bougeries'}, {'titleName': 'Bachet de Pesay', 'subTitleName': '', 'idTransportAPI': '008587075', 'stopCode': 'BHET', 'locationY': 6.129429, 'locationX': 46.173973, 'stopName': 'Bachet de Pesay'}, {'titleName': 'La Bise', 'subTitleName': '', 'idTransportAPI': '008592734', 'stopCode': 'BISE', 'locationY': 6.198592, 'locationX': 46.243576, 'stopName': 'La Bise'}, {'titleName': 'BIT', 'subTitleName': '', 'idTransportAPI': '008592788', 'stopCode': 'BIT0', 'locationY': 6.134895, 'locationX': 46.23047, 'stopName': 'BIT'}, {'titleName': 'Blanche', 'subTitleName': '', 'idTransportAPI': '008592789', 'stopCode': 'BLAN', 'locationY': 6.143039, 'locationX': 46.188823, 'stopName': 'Blanche'}, {'titleName': 'Jussy', 'subTitleName': 'Bellebouche', 'idTransportAPI': '008592959', 'stopCode': 'JUBE', 'locationY': 6.27652, 'locationX': 46.237697, 'stopName': 'Jussy Bellebouche'}, {'titleName': 'Blanchards', 'subTitleName': '', 'idTransportAPI': '008592651', 'stopCode': 'BLCH', 'locationY': 6.079989, 'locationX': 46.197938, 'stopName': 'Blanchards'}, {'titleName': 'Blandonnet', 'subTitleName': '', 'idTransportAPI': '008587924', 'stopCode': 'BLDO', 'locationY': 6.096816, 'locationX': 46.221894, 'stopName': 'Blandonnet'}, {'titleName': 'Blanché', 'subTitleName': '', 'idTransportAPI': '008592938', 'stopCode': 'BLHE', 'locationY': 6.127883, 'locationX': 46.238282, 'stopName': 'Blanché'}, {'titleName': 'Belle Idée', 'subTitleName': '', 'idTransportAPI': '008593107', 'stopCode': 'BLID', 'locationY': 6.209065, 'locationX': 46.20664, 'stopName': 'Belle Idée'}, {'titleName': 'Château Bloch', 'subTitleName': '', 'idTransportAPI': '008593151', 'stopCode': 'BLOC', 'locationY': 6.099495, 'locationX': 46.208887, 'stopName': 'Château Bloch'}, {'titleName': 'La Belotte', 'subTitleName': '', 'idTransportAPI': '008530616', 'stopCode': 'BLTE', 'locationY': 6.190385, 'locationX': 46.235863, 'stopName': 'La Belotte'}, {'titleName': 'Baillive', 'subTitleName': '', 'idTransportAPI': '008592781', 'stopCode': 'BLVE', 'locationY': 6.135011, 'locationX': 46.198576, 'stopName': 'Baillive'}, {'titleName': 'Bout du Monde', 'subTitleName': '', 'idTransportAPI': '008592793', 'stopCode': 'BMON', 'locationY': 6.157314, 'locationX': 46.181883, 'stopName': 'Bout du Monde'}, {'titleName': 'Bandol', 'subTitleName': '', 'idTransportAPI': '008775522', 'stopCode': 'BNDL', 'locationY': 5.750264, 'locationX': 43.140536, 'stopName': 'Bandol'}, {'titleName': 'Bois Caran', 'subTitleName': '', 'idTransportAPI': '008592725', 'stopCode': 'BOCA', 'locationY': 6.200822, 'locationX': 46.248323, 'stopName': 'Bois Caran'}, {'titleName': 'Bois Chatton', 'subTitleName': '', 'idTransportAPI': '008593225', 'stopCode': 'BOCH', 'locationY': 6.100682, 'locationX': 46.295696, 'stopName': 'Bois Chatton'}, {'titleName': 'Bois Galland', 'subTitleName': '', 'idTransportAPI': '008592729', 'stopCode': 'BOGA', 'locationY': 6.212651, 'locationX': 46.246839, 'stopName': 'Bois Galland'}, {'titleName': 'Bouchet', 'subTitleName': '', 'idTransportAPI': '008592791', 'stopCode': 'BOHT', 'locationY': 6.118085, 'locationX': 46.216429, 'stopName': 'Bouchet'}, {'titleName': 'Boissier', 'subTitleName': '', 'idTransportAPI': '008592741', 'stopCode': 'BOIS', 'locationY': 6.190897, 'locationX': 46.233014, 'stopName': 'Boissier'}, {'titleName': 'Bois du Lan', 'subTitleName': '', 'idTransportAPI': '008594933', 'stopCode': 'BOLA', 'locationY': 6.077822, 'locationX': 46.227315, 'stopName': 'Bois du Lan'}, {'titleName': 'Bouleaux', 'subTitleName': '', 'idTransportAPI': '008593146', 'stopCode': 'BOLX', 'locationY': 6.073525, 'locationX': 46.209939, 'stopName': 'Bouleaux'}, {'titleName': 'La Blonde', 'subTitleName': '', 'idTransportAPI': '008593132', 'stopCode': 'BOND', 'locationY': 6.193936, 'locationX': 46.215224, 'stopName': 'La Blonde'}, {'titleName': 'Boqueteaux', 'subTitleName': '', 'idTransportAPI': '008593193', 'stopCode': 'BOQU', 'locationY': 6.175562, 'locationX': 46.163482, 'stopName': 'Boqueteaux'}, {'titleName': 'Chemin des Bornes', 'subTitleName': '', 'idTransportAPI': '008593882', 'stopCode': 'BORN', 'locationY': 6.218171, 'locationX': 46.380779, 'stopName': 'Chemin des Bornes'}, {'titleName': 'Bossy', 'subTitleName': '', 'idTransportAPI': '008587035', 'stopCode': 'BOSY', 'locationY': 6.114462, 'locationX': 46.2792, 'stopName': 'Bossy'}, {'titleName': 'Les Bouveries', 'subTitleName': '', 'idTransportAPI': '008592688', 'stopCode': 'BOUV', 'locationY': 5.975408, 'locationX': 46.151401, 'stopName': 'Les Bouveries'}, {'titleName': 'La Boverie', 'subTitleName': '', 'idTransportAPI': '008587419', 'stopCode': 'BOVE', 'locationY': 6.027339, 'locationX': 46.207988, 'stopName': 'La Boverie'}, {'titleName': 'Bardonnex', 'subTitleName': '', 'idTransportAPI': '008592644', 'stopCode': 'BRDX', 'locationY': 6.118849, 'locationX': 46.14776, 'stopName': 'Bardonnex'}, {'titleName': 'Bretonnière', 'subTitleName': '', 'idTransportAPI': '008501105', 'stopCode': 'BRET', 'locationY': 6.474732, 'locationX': 46.715042, 'stopName': 'Bretonnière'}, {'titleName': 'Brunette', 'subTitleName': '', 'idTransportAPI': '008593220', 'stopCode': 'BRUN', 'locationY': 6.11679, 'locationX': 46.253338, 'stopName': 'Brunette'}, {'titleName': 'Beau Séjour', 'subTitleName': '', 'idTransportAPI': '008593981', 'stopCode': 'BSEJ', 'locationY': 6.849924, 'locationX': 46.460216, 'stopName': 'Beau Séjour'}, {'titleName': 'Beau Soleil', 'subTitleName': '', 'idTransportAPI': '008592806', 'stopCode': 'BSOL', 'locationY': 6.161404, 'locationX': 46.190009, 'stopName': 'Beau Soleil'}, {'titleName': 'Bourdigny', 'subTitleName': 'Dessous', 'idTransportAPI': '008595040', 'stopCode': 'BSOU', 'locationY': 6.038593, 'locationX': 46.223566, 'stopName': 'Bourdigny Dessous'}, {'titleName': 'Bossons', 'subTitleName': '', 'idTransportAPI': '008592975', 'stopCode': 'BSSN', 'locationY': 6.112269, 'locationX': 46.190549, 'stopName': 'Bossons'}, {'titleName': 'Bassy', 'subTitleName': '', 'idTransportAPI': '008595008', 'stopCode': 'BSSY', 'locationY': 6.23036, 'locationX': 46.278805, 'stopName': 'Bassy'}, {'titleName': 'Bourdigny', 'subTitleName': 'Dessus', 'idTransportAPI': '008587381', 'stopCode': 'BSUS', 'locationY': 6.038575, 'locationX': 46.223593, 'stopName': 'Bourdigny Dessus'}, {'titleName': 'La Boutique', 'subTitleName': '', 'idTransportAPI': '008594964', 'stopCode': 'BTIQ', 'locationY': 5.991292, 'locationX': 46.111363, 'stopName': 'La Boutique'}, {'titleName': 'Butini', 'subTitleName': '', 'idTransportAPI': '008592795', 'stopCode': 'BTNI', 'locationY': 6.147911, 'locationX': 46.216734, 'stopName': 'Butini'}, {'titleName': 'Pont Butin', 'subTitleName': '', 'idTransportAPI': '008593167', 'stopCode': 'BUTN', 'locationY': 6.108925, 'locationX': 46.204105, 'stopName': 'Pont Butin'}, {'titleName': 'Bonvard', 'subTitleName': '', 'idTransportAPI': '008592717', 'stopCode': 'BVRD', 'locationY': 6.211429, 'locationX': 46.23296, 'stopName': 'Bonvard'}, {'titleName': 'Bovy Lysberg', 'subTitleName': '', 'idTransportAPI': '008592794', 'stopCode': 'BVYL', 'locationY': 6.142859, 'locationX': 46.202397, 'stopName': 'Bovy Lysberg'}, {'titleName': 'Bernex', 'subTitleName': 'Eglise', 'idTransportAPI': '008592650', 'stopCode': 'BXEG', 'locationY': 6.070577, 'locationX': 46.174395, 'stopName': 'Bernex Eglise'}, {'titleName': 'Bernex', 'subTitleName': 'Mairie', 'idTransportAPI': '008592657', 'stopCode': 'BXMA', 'locationY': 6.073363, 'locationX': 46.175384, 'stopName': 'Bernex Mairie'}, {'titleName': 'Bernex', 'subTitleName': 'Place', 'idTransportAPI': '008587034', 'stopCode': 'BXPL', 'locationY': 6.076051, 'locationX': 46.176876, 'stopName': 'Bernex Place'}, {'titleName': 'Bernex', 'subTitleName': 'Saule', 'idTransportAPI': '008592663', 'stopCode': 'BXSA', 'locationY': 6.064797, 'locationX': 46.173784, 'stopName': 'Bernex Saule'}, {'titleName': \"Carre d'Amont\", 'subTitleName': '', 'idTransportAPI': '008587925', 'stopCode': 'CAAM', 'locationY': 6.217146, 'locationX': 46.236097, 'stopName': \"Carre d'Amont\"}, {'titleName': 'Cressy', 'subTitleName': 'Bains', 'idTransportAPI': '008592754', 'stopCode': 'CABO', 'locationY': 6.087764, 'locationX': 46.185524, 'stopName': 'Bains de Cressy'}, {'titleName': 'Cara', 'subTitleName': 'Douane', 'idTransportAPI': '008593079', 'stopCode': 'CADO', 'locationY': 6.248105, 'locationX': 46.208941, 'stopName': 'Cara Douane'}, {'titleName': 'Calas', 'subTitleName': '', 'idTransportAPI': '008592796', 'stopCode': 'CALA', 'locationY': 6.152469, 'locationX': 46.189956, 'stopName': 'Calas'}, {'titleName': 'Campanules', 'subTitleName': '', 'idTransportAPI': '008593148', 'stopCode': 'CAMP', 'locationY': 6.099171, 'locationX': 46.196509, 'stopName': 'Campanules'}, {'titleName': 'Bois Candide', 'subTitleName': '', 'idTransportAPI': '008594945', 'stopCode': 'CAND', 'locationY': 6.094048, 'locationX': 46.244952, 'stopName': 'Bois Candide'}, {'titleName': 'Vésenaz', 'subTitleName': 'Californie', 'idTransportAPI': '008592730', 'stopCode': 'CANI', 'locationY': 6.209559, 'locationX': 46.240475, 'stopName': 'Vésenaz Californie'}, {'titleName': 'Canonnière', 'subTitleName': '', 'idTransportAPI': '008592798', 'stopCode': 'CANO', 'locationY': 6.134005, 'locationX': 46.214829, 'stopName': 'Canonnière'}, {'titleName': 'Capite', 'subTitleName': '', 'idTransportAPI': '008587069', 'stopCode': 'CAPI', 'locationY': 6.203752, 'locationX': 46.234659, 'stopName': 'Capite'}, {'titleName': 'Caron', 'subTitleName': '', 'idTransportAPI': '008593074', 'stopCode': 'CARO', 'locationY': 6.137924, 'locationX': 46.244574, 'stopName': 'Caron'}, {'titleName': 'Rue Carrée', 'subTitleName': '', 'idTransportAPI': '008593100', 'stopCode': 'CARR', 'locationY': 6.062756, 'locationX': 46.198783, 'stopName': 'Rue Carrée'}, {'titleName': 'Casino', 'subTitleName': '', 'idTransportAPI': '008594959', 'stopCode': 'CASI', 'locationY': 6.0902, 'locationX': 46.128775, 'stopName': 'Casino'}, {'titleName': 'Castan', 'subTitleName': '', 'idTransportAPI': '008592693', 'stopCode': 'CAST', 'locationY': 6.196426, 'locationX': 46.206226, 'stopName': 'Castan'}, {'titleName': 'Cathédrale', 'subTitleName': '', 'idTransportAPI': '008592799', 'stopCode': 'CATH', 'locationY': 6.147821, 'locationX': 46.201462, 'stopName': 'Cathédrale'}, {'titleName': 'Chemin du Bac', 'subTitleName': '', 'idTransportAPI': '008592978', 'stopCode': 'CBAC', 'locationY': 6.112161, 'locationX': 46.19454, 'stopName': 'Chemin du Bac'}, {'titleName': 'Combettes', 'subTitleName': '', 'idTransportAPI': '008593196', 'stopCode': 'CBET', 'locationY': 6.143722, 'locationX': 46.169784, 'stopName': 'Combettes'}, {'titleName': 'Chambésy', 'subTitleName': 'Fontaine', 'idTransportAPI': '008587039', 'stopCode': 'CBFO', 'locationY': 6.141151, 'locationX': 46.242839, 'stopName': 'Chambésy Fontaine'}, {'titleName': 'Chemin des Bois', 'subTitleName': '', 'idTransportAPI': '008593195', 'stopCode': 'CBOI', 'locationY': 6.168748, 'locationX': 46.163536, 'stopName': 'Chemin des Bois'}, {'titleName': 'Chambésy', 'subTitleName': 'Place', 'idTransportAPI': '008593076', 'stopCode': 'CBPL', 'locationY': 6.143416, 'locationX': 46.24212, 'stopName': 'Chambésy Place'}, {'titleName': 'De Chateaubriand', 'subTitleName': '', 'idTransportAPI': '008592803', 'stopCode': 'CBRI', 'locationY': 6.151066, 'locationX': 46.216788, 'stopName': 'De Chateaubriand'}, {'titleName': 'Crêts de La Capite', 'subTitleName': '', 'idTransportAPI': '008592732', 'stopCode': 'CCAP', 'locationY': 6.207842, 'locationX': 46.235612, 'stopName': 'Crêts de La Capite'}, {'titleName': 'Champ Carré', 'subTitleName': '', 'idTransportAPI': '008595035', 'stopCode': 'CCAR', 'locationY': 6.139686, 'locationX': 46.165055, 'stopName': 'Champ Carré'}, {'titleName': 'Crêts de Champel', 'subTitleName': '', 'idTransportAPI': '008592813', 'stopCode': 'CCHA', 'locationY': 6.158905, 'locationX': 46.18716, 'stopName': 'Crêts de Champel'}, {'titleName': 'Collège Claparède', 'subTitleName': '', 'idTransportAPI': '008592704', 'stopCode': 'CCLA', 'locationY': 6.186583, 'locationX': 46.190153, 'stopName': 'Collège Claparède'}, {'titleName': 'Cologny', 'subTitleName': 'Croisée', 'idTransportAPI': '008587047', 'stopCode': 'CCOL', 'locationY': 6.184218, 'locationX': 46.212348, 'stopName': 'Croisée de Cologny'}, {'titleName': 'Croix de Chavant', 'subTitleName': '', 'idTransportAPI': '008592756', 'stopCode': 'CCVT', 'locationY': 6.082479, 'locationX': 46.172031, 'stopName': 'Croix de Chavant'}, {'titleName': 'Champ Dollon', 'subTitleName': 'Chalet', 'idTransportAPI': '008595229', 'stopCode': 'CDCH', 'locationY': 6.220921, 'locationX': 46.213417, 'stopName': 'Champ Dollon (Chalet)'}, {'titleName': 'Champ Dollon', 'subTitleName': '', 'idTransportAPI': '008595229', 'stopCode': 'CDOL', 'locationY': 6.220921, 'locationX': 46.213417, 'stopName': 'Champ Dollon'}, {'titleName': \"Croisée d'Eaumorte\", 'subTitleName': '', 'idTransportAPI': '008592685', 'stopCode': 'CEAU', 'locationY': 6.024957, 'locationX': 46.166206, 'stopName': \"Croisée d'Eaumorte\"}, {'titleName': 'Bois Chébé', 'subTitleName': '', 'idTransportAPI': '008593143', 'stopCode': 'CEBE', 'locationY': 6.072914, 'locationX': 46.206631, 'stopName': 'Bois Chébé'}, {'titleName': 'Centenaire', 'subTitleName': '', 'idTransportAPI': '008593054', 'stopCode': 'CENT', 'locationY': 6.10861, 'locationX': 46.169757, 'stopName': 'Centenaire'}, {'titleName': \"Chemin de l'Eperon\", 'subTitleName': '', 'idTransportAPI': '008592703', 'stopCode': 'CEPR', 'locationY': 6.187032, 'locationX': 46.204042, 'stopName': \"Chemin de l'Eperon\"}, {'titleName': 'CERN', 'subTitleName': '', 'idTransportAPI': '008587918', 'stopCode': 'CERN', 'locationY': 6.053084, 'locationX': 46.23403, 'stopName': 'CERN'}, {'titleName': 'Cervonnex', 'subTitleName': '', 'idTransportAPI': '008594958', 'stopCode': 'CERV', 'locationY': 6.086479, 'locationX': 46.132793, 'stopName': 'Cervonnex'}, {'titleName': 'Certoux', 'subTitleName': '', 'idTransportAPI': '008593044', 'stopCode': 'CETX', 'locationY': 6.084231, 'locationX': 46.155527, 'stopName': 'Certoux'}, {'titleName': 'Champ des Filles', 'subTitleName': '', 'idTransportAPI': '008593056', 'stopCode': 'CFIL', 'locationY': 6.109851, 'locationX': 46.167518, 'stopName': 'Champ des Filles'}, {'titleName': 'Crêts Florissant', 'subTitleName': '', 'idTransportAPI': '008592691', 'stopCode': 'CFLO', 'locationY': 6.170168, 'locationX': 46.187106, 'stopName': 'Crêts Florissant'}, {'titleName': 'Chemin des Fours', 'subTitleName': '', 'idTransportAPI': '008587046', 'stopCode': 'CFOU', 'locationY': 6.183221, 'locationX': 46.217481, 'stopName': 'Chemin des Fours'}, {'titleName': 'Champs Fréchets', 'subTitleName': '', 'idTransportAPI': '008593008', 'stopCode': 'CFRE', 'locationY': 6.079953, 'locationX': 46.237122, 'stopName': 'Champs Fréchets'}, {'titleName': 'Champ Fusy', 'subTitleName': '', 'idTransportAPI': '008593228', 'stopCode': 'CFUS', 'locationY': 6.028336, 'locationX': 46.246543, 'stopName': 'Champ Fusy'}, {'titleName': 'Chougny', 'subTitleName': '', 'idTransportAPI': '008587042', 'stopCode': 'CGNY', 'locationY': 6.198403, 'locationX': 46.218595, 'stopName': 'Chougny'}, {'titleName': 'Beaumont', 'subTitleName': 'Chable', 'idTransportAPI': '008595555', 'stopCode': 'CHAB', 'locationY': 6.103513, 'locationX': 46.098535, 'stopName': 'Beaumont Chable'}, {'titleName': 'Charrot', 'subTitleName': '', 'idTransportAPI': '008592644', 'stopCode': 'CHAR', 'locationY': 6.118849, 'locationX': 46.14776, 'stopName': 'Charrot'}, {'titleName': 'Champ Claude', 'subTitleName': '', 'idTransportAPI': '008593150', 'stopCode': 'CHCL', 'locationY': 6.088322, 'locationX': 46.217678, 'stopName': 'Champ Claude'}, {'titleName': 'Chemin de la Douane', 'subTitleName': '', 'idTransportAPI': '008592971', 'stopCode': 'CHDO', 'locationY': 6.044041, 'locationX': 46.161505, 'stopName': 'Chemin de la Douane'}, {'titleName': 'Challex', 'subTitleName': 'Ecole', 'idTransportAPI': '008594954', 'stopCode': 'CHEC', 'locationY': 5.968603, 'locationX': 46.179034, 'stopName': 'Challex Ecole'}, {'titleName': 'Challex', 'subTitleName': 'P+R La Halle', 'idTransportAPI': '008594953', 'stopCode': 'CHHA', 'locationY': 5.972819, 'locationX': 46.182036, 'stopName': 'P+R Challex La Halle'}, {'titleName': 'Châtelaine', 'subTitleName': '', 'idTransportAPI': '008593152', 'stopCode': 'CHLA', 'locationY': 6.112871, 'locationX': 46.211161, 'stopName': 'Châtelaine'}, {'titleName': 'Choulex', 'subTitleName': '', 'idTransportAPI': '008595226', 'stopCode': 'CHLX', 'locationY': 6.231646, 'locationX': 46.218406, 'stopName': 'Choulex'}, {'titleName': 'Chêne Bougeries', 'subTitleName': '', 'idTransportAPI': '008592694', 'stopCode': 'CHNE', 'locationY': 6.180362, 'locationX': 46.198837, 'stopName': 'Chêne Bougeries'}, {'titleName': 'Centre Horticole', 'subTitleName': '', 'idTransportAPI': '008592960', 'stopCode': 'CHOR', 'locationY': 6.25019, 'locationX': 46.224052, 'stopName': 'Centre Horticole'}, {'titleName': 'Chemin des Palettes', 'subTitleName': '', 'idTransportAPI': '008592977', 'stopCode': 'CHPA', 'locationY': 6.121213, 'locationX': 46.175968, 'stopName': 'Chemin des Palettes'}, {'titleName': 'Chablais Parc', 'subTitleName': '', 'idTransportAPI': '008595362', 'stopCode': 'CHPC', 'locationY': 6.235879, 'locationX': 46.197605, 'stopName': 'Chablais Parc'}, {'titleName': 'Chemin des Princes', 'subTitleName': '', 'idTransportAPI': '008592731', 'stopCode': 'CHPR', 'locationY': 6.201954, 'locationX': 46.233086, 'stopName': 'Chemin des Princes'}, {'titleName': 'Charmilles', 'subTitleName': '', 'idTransportAPI': '008592802', 'stopCode': 'CHRM', 'locationY': 6.127218, 'locationX': 46.207808, 'stopName': 'Charmilles'}, {'titleName': 'Challex', 'subTitleName': 'P+R Eglise', 'idTransportAPI': '008594952', 'stopCode': 'CHSE', 'locationY': 5.976298, 'locationX': 46.183313, 'stopName': 'P+R Challex Eglise'}, {'titleName': 'Chemin du Terraillet', 'subTitleName': '', 'idTransportAPI': '008594937', 'stopCode': 'CHTE', 'locationY': 6.094093, 'locationX': 46.255586, 'stopName': 'Chemin du Terraillet'}, {'titleName': 'Chânats', 'subTitleName': '', 'idTransportAPI': '008592646', 'stopCode': 'CHTS', 'locationY': 6.134193, 'locationX': 46.25617, 'stopName': 'Chânats'}, {'titleName': 'Anières', 'subTitleName': 'Chavannes', 'idTransportAPI': '008592621', 'stopCode': 'ANCH', 'locationY': 6.229272, 'locationX': 46.283183, 'stopName': 'Anières Chavannes'}, {'titleName': 'Château Voltaire', 'subTitleName': '', 'idTransportAPI': '008595017', 'stopCode': 'CHVO', 'locationY': 6.107037, 'locationX': 46.258948, 'stopName': 'Château Voltaire'}, {'titleName': 'Chevrier', 'subTitleName': '', 'idTransportAPI': '008587382', 'stopCode': 'CHVR', 'locationY': 6.224634, 'locationX': 46.221013, 'stopName': 'Chevrier'}, {'titleName': 'Cimetière Saint Geor', 'subTitleName': '', 'idTransportAPI': '008592979', 'stopCode': 'CIMT', 'locationY': 6.115379, 'locationX': 46.197057, 'stopName': 'Cimetière Saint Geor'}, {'titleName': 'Bois de Bay', 'subTitleName': 'Camping', 'idTransportAPI': '008593093', 'stopCode': 'CING', 'locationY': 6.065246, 'locationX': 46.200185, 'stopName': 'Camping Bois de Bay'}, {'titleName': 'Corsier', 'subTitleName': 'Port', 'idTransportAPI': '008592760', 'stopCode': 'CIPO', 'locationY': 6.214359, 'locationX': 46.264242, 'stopName': 'Corsier Port'}, {'titleName': 'Cirque', 'subTitleName': '', 'idTransportAPI': '008592804', 'stopCode': 'CIRQ', 'locationY': 6.140486, 'locationX': 46.200653, 'stopName': 'Cirque'}, {'titleName': 'Corsier', 'subTitleName': 'Village', 'idTransportAPI': '008587053', 'stopCode': 'CIVI', 'locationY': 6.223798, 'locationX': 46.263002, 'stopName': 'Corsier Village'}, {'titleName': 'Claparède', 'subTitleName': '', 'idTransportAPI': '008592704', 'stopCode': 'CLAP', 'locationY': 6.186583, 'locationX': 46.190153, 'stopName': 'Claparède'}, {'titleName': 'Collonges', 'subTitleName': 'Bourg', 'idTransportAPI': '008587640', 'stopCode': 'CLBH', 'locationY': 6.145682, 'locationX': 46.138277, 'stopName': 'Collonges Bourg'}, {'titleName': 'Calandrini', 'subTitleName': '', 'idTransportAPI': '008592692', 'stopCode': 'CLDR', 'locationY': 6.178304, 'locationX': 46.182944, 'stopName': 'Calandrini'}, {'titleName': 'Collonge', 'subTitleName': '', 'idTransportAPI': '008592618', 'stopCode': 'CLGE', 'locationY': 6.923518, 'locationX': 46.428278, 'stopName': 'Collonge'}, {'titleName': 'Cité Lignon', 'subTitleName': '', 'idTransportAPI': '008593154', 'stopCode': 'CLIG', 'locationY': 6.098641, 'locationX': 46.20379, 'stopName': 'Cité Lignon'}, {'titleName': 'Collège Le Joran', 'subTitleName': '', 'idTransportAPI': '008594940', 'stopCode': 'CLJO', 'locationY': 6.077543, 'locationX': 46.255622, 'stopName': 'Collège Le Joran'}, {'titleName': 'Choully', 'subTitleName': '', 'idTransportAPI': '008587415', 'stopCode': 'CLLY', 'locationY': 6.027554, 'locationX': 46.222577, 'stopName': 'Choully'}, {'titleName': 'Collonges', 'subTitleName': 'Mairie', 'idTransportAPI': '008587383', 'stopCode': 'CLMA', 'locationY': 6.145529, 'locationX': 46.139122, 'stopName': 'Collonges Mairie'}, {'titleName': 'Chemin des Clys', 'subTitleName': '', 'idTransportAPI': '008592645', 'stopCode': 'CLYS', 'locationY': 6.130256, 'locationX': 46.250174, 'stopName': 'Chemin des Clys'}, {'titleName': 'Camille Martin', 'subTitleName': '', 'idTransportAPI': '008592797', 'stopCode': 'CMAR', 'locationY': 6.118031, 'locationX': 46.20628, 'stopName': 'Camille Martin'}, {'titleName': 'Clos du Môlan', 'subTitleName': '', 'idTransportAPI': '008592743', 'stopCode': 'CMOL', 'locationY': 6.183544, 'locationX': 46.205255, 'stopName': 'Clos du Môlan'}, {'titleName': 'Communes Réunies', 'subTitleName': '', 'idTransportAPI': '008593057', 'stopCode': 'CMRE', 'locationY': 6.123361, 'locationX': 46.171132, 'stopName': 'Communes Réunies'}, {'titleName': 'Chênaie', 'subTitleName': '', 'idTransportAPI': '008592930', 'stopCode': 'CNAE', 'locationY': 6.149547, 'locationX': 46.258399, 'stopName': 'Chênaie'}, {'titleName': 'Canada', 'subTitleName': '', 'idTransportAPI': '008593149', 'stopCode': 'CNDA', 'locationY': 6.069588, 'locationX': 46.208473, 'stopName': 'Canada'}, {'titleName': 'C.O. Bois Caran', 'subTitleName': '', 'idTransportAPI': '008592725', 'stopCode': 'COBC', 'locationY': 6.200822, 'locationX': 46.248323, 'stopName': 'C.O. Bois Caran'}, {'titleName': 'Colombières', 'subTitleName': '', 'idTransportAPI': '008593184', 'stopCode': 'COBI', 'locationY': 6.163238, 'locationX': 46.279263, 'stopName': 'Colombières'}, {'titleName': 'Conches', 'subTitleName': '', 'idTransportAPI': '008738715', 'stopCode': 'COCH', 'locationY': 0.937871, 'locationX': 48.96222, 'stopName': 'Conches'}, {'titleName': 'Cocuaz', 'subTitleName': '', 'idTransportAPI': '008593128', 'stopCode': 'COCU', 'locationY': 6.207042, 'locationX': 46.211125, 'stopName': 'Cocuaz'}, {'titleName': 'Colladon', 'subTitleName': '', 'idTransportAPI': '008592808', 'stopCode': 'CODN', 'locationY': 6.123451, 'locationX': 46.223099, 'stopName': 'Colladon'}, {'titleName': 'Colovrex', 'subTitleName': '', 'idTransportAPI': '008587048', 'stopCode': 'COLO', 'locationY': 6.130157, 'locationX': 46.255406, 'stopName': 'Colovrex'}, {'titleName': 'Chemin de Collex', 'subTitleName': '', 'idTransportAPI': '008594935', 'stopCode': 'COLX', 'locationY': 6.114939, 'locationX': 46.260485, 'stopName': 'Chemin de Collex'}, {'titleName': 'Confignon', 'subTitleName': 'Mairie', 'idTransportAPI': '008587051', 'stopCode': 'CONF', 'locationY': 6.0846, 'locationX': 46.173433, 'stopName': 'Confignon Mairie'}, {'titleName': 'Compesières', 'subTitleName': '', 'idTransportAPI': '008587050', 'stopCode': 'COPS', 'locationY': 6.122355, 'locationX': 46.151599, 'stopName': 'Compesières'}, {'titleName': 'Corbillettes', 'subTitleName': '', 'idTransportAPI': '008592939', 'stopCode': 'CORB', 'locationY': 6.111631, 'locationX': 46.225256, 'stopName': 'Corbillettes'}, {'titleName': 'Concorde', 'subTitleName': '', 'idTransportAPI': '008595018', 'stopCode': 'CORD', 'locationY': 6.114228, 'locationX': 46.205372, 'stopName': 'Concorde'}, {'titleName': 'Corbière', 'subTitleName': '', 'idTransportAPI': '008504853', 'stopCode': 'CORE', 'locationY': 7.102422, 'locationX': 46.6593, 'stopName': 'Corbière'}, {'titleName': 'Courson', 'subTitleName': '', 'idTransportAPI': '008595009', 'stopCode': 'COSO', 'locationY': 6.23605, 'locationX': 46.282508, 'stopName': 'Courson'}, {'titleName': 'Au Contour', 'subTitleName': '', 'idTransportAPI': '008593051', 'stopCode': 'COTR', 'locationY': 6.102237, 'locationX': 46.162359, 'stopName': 'Au Contour'}, {'titleName': 'Coutance', 'subTitleName': '', 'idTransportAPI': '008744711', 'stopCode': 'COTU', 'locationY': -1.441429, 'locationX': 49.042592, 'stopName': 'Coutance'}, {'titleName': 'Coutance', 'subTitleName': '', 'idTransportAPI': '008592812', 'stopCode': 'COUT', 'locationY': 6.141762, 'locationX': 46.206945, 'stopName': 'Coutance'}, {'titleName': 'Corsinge', 'subTitleName': 'Village', 'idTransportAPI': '008587054', 'stopCode': 'COVI', 'locationY': 6.244716, 'locationX': 46.240241, 'stopName': 'Corsinge Village'}, {'titleName': 'Chemin du Paradis', 'subTitleName': '', 'idTransportAPI': '008593094', 'stopCode': 'CPAR', 'locationY': 6.023096, 'locationX': 46.213319, 'stopName': 'Chemin du Paradis'}, {'titleName': 'Châtelaine', 'subTitleName': '', 'idTransportAPI': '008593152', 'stopCode': 'CPBO', 'locationY': 6.112871, 'locationX': 46.211161, 'stopName': 'Châtelaine'}, {'titleName': 'La Chapelle', 'subTitleName': '', 'idTransportAPI': '008769900', 'stopCode': 'CPEL', 'locationY': 4.293212, 'locationX': 46.260674, 'stopName': 'La Chapelle'}, {'titleName': 'Chantepoulet', 'subTitleName': '', 'idTransportAPI': '008592801', 'stopCode': 'CPLT', 'locationY': 6.143551, 'locationX': 46.208159, 'stopName': 'Chantepoulet'}, {'titleName': 'Compois', 'subTitleName': '', 'idTransportAPI': '008592999', 'stopCode': 'CPOI', 'locationY': 6.235574, 'locationX': 46.239522, 'stopName': 'Compois'}, {'titleName': 'Courbes', 'subTitleName': '', 'idTransportAPI': '008592623', 'stopCode': 'CRBS', 'locationY': 6.227178, 'locationX': 46.28081, 'stopName': 'Courbes'}, {'titleName': 'Croisée en Champagne', 'subTitleName': '', 'idTransportAPI': '008592684', 'stopCode': 'CRCH', 'locationY': 6.03337, 'locationX': 46.172166, 'stopName': 'Croisée en Champagne'}, {'titleName': 'Confignon', 'subTitleName': 'Croisée', 'idTransportAPI': '008587386', 'stopCode': 'CRCO', 'locationY': 6.08825, 'locationX': 46.178306, 'stopName': 'Croisée de Confignon'}, {'titleName': 'C.O. Renard', 'subTitleName': '', 'idTransportAPI': '008593147', 'stopCode': 'CREN', 'locationY': 6.093553, 'locationX': 46.196805, 'stopName': 'C.O. Renard'}, {'titleName': 'Carouge', 'subTitleName': 'Rondeau', 'idTransportAPI': '008587437', 'stopCode': 'CRGE', 'locationY': 6.138391, 'locationX': 46.179861, 'stopName': 'Carouge Rondeau'}, {'titleName': 'Chemin du Righi', 'subTitleName': '', 'idTransportAPI': '008592742', 'stopCode': 'CRIG', 'locationY': 6.176515, 'locationX': 46.216186, 'stopName': 'Chemin du Righi'}, {'titleName': 'Cornière', 'subTitleName': '', 'idTransportAPI': '008593083', 'stopCode': 'CRNR', 'locationY': 6.240491, 'locationX': 46.208365, 'stopName': 'Cornière'}, {'titleName': 'Croisette', 'subTitleName': '', 'idTransportAPI': '008593155', 'stopCode': 'CROI', 'locationY': 6.092699, 'locationX': 46.219054, 'stopName': 'Croisette'}, {'titleName': 'Crédery', 'subTitleName': '', 'idTransportAPI': '008593095', 'stopCode': 'CRRY', 'locationY': 6.021792, 'locationX': 46.218334, 'stopName': 'Crédery'}, {'titleName': 'Cressy', 'subTitleName': '', 'idTransportAPI': '008592755', 'stopCode': 'CRSY', 'locationY': 6.088277, 'locationX': 46.182288, 'stopName': 'Cressy'}, {'titleName': 'Crête', 'subTitleName': '', 'idTransportAPI': '008593129', 'stopCode': 'CRTE', 'locationY': 6.21097, 'locationX': 46.217534, 'stopName': 'Crête'}, {'titleName': 'Creux du Loup', 'subTitleName': '', 'idTransportAPI': '008595011', 'stopCode': 'CRUP', 'locationY': 5.995715, 'locationX': 46.151886, 'stopName': 'Creux du Loup'}, {'titleName': 'C.S Bécassière', 'subTitleName': '', 'idTransportAPI': '008593183', 'stopCode': 'CSLB', 'locationY': 6.155714, 'locationX': 46.295678, 'stopName': 'C.S Bécassière'}, {'titleName': 'C.S. Sous Moulin', 'subTitleName': '', 'idTransportAPI': '008593108', 'stopCode': 'CSSM', 'locationY': 6.191518, 'locationX': 46.189335, 'stopName': 'C.S. Sous Moulin'}, {'titleName': 'Cartigny', 'subTitleName': '', 'idTransportAPI': '008731525', 'stopCode': 'CTGY', 'locationY': 3.01437, 'locationX': 49.911912, 'stopName': 'Cartigny'}, {'titleName': 'Courtillets', 'subTitleName': '', 'idTransportAPI': '008592981', 'stopCode': 'CTIL', 'locationY': 6.118678, 'locationX': 46.182584, 'stopName': 'Courtillets'}, {'titleName': 'Contamines', 'subTitleName': '', 'idTransportAPI': '008592810', 'stopCode': 'CTMI', 'locationY': 6.156235, 'locationX': 46.196032, 'stopName': 'Contamines'}, {'titleName': 'Cottenets', 'subTitleName': '', 'idTransportAPI': '008592652', 'stopCode': 'CTNT', 'locationY': 6.058837, 'locationX': 46.162386, 'stopName': 'Cottenets'}, {'titleName': 'Châtaignières', 'subTitleName': '', 'idTransportAPI': '008592961', 'stopCode': 'CTRS', 'locationY': 6.296278, 'locationX': 46.241482, 'stopName': 'Châtaignières'}, {'titleName': 'Cuisine', 'subTitleName': '', 'idTransportAPI': '008592815', 'stopCode': 'CUIS', 'locationY': 6.169926, 'locationX': 46.204779, 'stopName': 'Cuisine'}, {'titleName': 'Chemin Vert', 'subTitleName': '', 'idTransportAPI': '008593194', 'stopCode': 'CVER', 'locationY': 6.141169, 'locationX': 46.173317, 'stopName': 'Chemin Vert'}, {'titleName': 'Cornavin', 'subTitleName': 'Gare', 'idTransportAPI': '008587057', 'stopCode': 'CVIN', 'locationY': 6.144082, 'locationX': 46.209903, 'stopName': 'Gare Cornavin'}, {'titleName': 'Chevrens', 'subTitleName': '', 'idTransportAPI': '008595016', 'stopCode': 'CVRN', 'locationY': 6.233974, 'locationX': 46.28659, 'stopName': 'Chevrens'}, {'titleName': 'Claire Vue', 'subTitleName': '', 'idTransportAPI': '008592980', 'stopCode': 'CVUE', 'locationY': 6.122283, 'locationX': 46.195493, 'stopName': 'Claire Vue'}, {'titleName': \"Croix d'Ambilly\", 'subTitleName': '', 'idTransportAPI': '008595364', 'stopCode': 'CXAB', 'locationY': 6.22414, 'locationX': 46.192446, 'stopName': \"Croix d'Ambilly\"}, {'titleName': 'Collex', 'subTitleName': 'Centre', 'idTransportAPI': '008587044', 'stopCode': 'CXCE', 'locationY': 6.122346, 'locationX': 46.270031, 'stopName': 'Collex Centre'}, {'titleName': 'Collex', 'subTitleName': 'Ecole', 'idTransportAPI': '008592720', 'stopCode': 'CXEC', 'locationY': 6.12524, 'locationX': 46.272144, 'stopName': 'Collex Ecole'}, {'titleName': 'Chancy', 'subTitleName': 'Douane', 'idTransportAPI': '008587477', 'stopCode': 'CYDN', 'locationY': 5.965736, 'locationX': 46.144416, 'stopName': 'Chancy Douane'}, {'titleName': 'Cologny', 'subTitleName': 'Mairie', 'idTransportAPI': '008587385', 'stopCode': 'CYMA', 'locationY': 6.185189, 'locationX': 46.219323, 'stopName': 'Cologny Mairie'}, {'titleName': 'Cessy', 'subTitleName': 'Centre', 'idTransportAPI': '008587909', 'stopCode': 'CYNT', 'locationY': 6.068743, 'locationX': 46.316056, 'stopName': 'Cessy Centre'}, {'titleName': 'Cyprès', 'subTitleName': '', 'idTransportAPI': '008593110', 'stopCode': 'CYPR', 'locationY': 6.196543, 'locationX': 46.186513, 'stopName': 'Cyprès'}, {'titleName': 'Chancy', 'subTitleName': 'Raclerets', 'idTransportAPI': '008592689', 'stopCode': 'CYRA', 'locationY': 5.972513, 'locationX': 46.149594, 'stopName': 'Chancy Raclerets'}, {'titleName': 'Cologny', 'subTitleName': 'Temple', 'idTransportAPI': '008592752', 'stopCode': 'CYTE', 'locationY': 6.181189, 'locationX': 46.216087, 'stopName': 'Cologny Temple'}, {'titleName': 'Chancy', 'subTitleName': 'Usine', 'idTransportAPI': '008592690', 'stopCode': 'CYUS', 'locationY': 5.981287, 'locationX': 46.156642, 'stopName': 'Chancy Usine'}, {'titleName': 'Chancy', 'subTitleName': 'Village', 'idTransportAPI': '008587040', 'stopCode': 'CYVI', 'locationY': 5.969916, 'locationX': 46.150151, 'stopName': 'Chancy Village'}, {'titleName': 'Croix de Rozon', 'subTitleName': 'Douane', 'idTransportAPI': '008587070', 'stopCode': 'CZDN', 'locationY': 6.136648, 'locationX': 46.144758, 'stopName': 'Croix de Rozon Douane'}, {'titleName': 'Croix de Rozon', 'subTitleName': 'Place', 'idTransportAPI': '008592640', 'stopCode': 'CZPL', 'locationY': 6.136459, 'locationX': 46.145504, 'stopName': 'Croix de Rozon Place'}, {'titleName': 'Dardagny', 'subTitleName': '', 'idTransportAPI': '008587055', 'stopCode': 'DARD', 'locationY': 5.995058, 'locationX': 46.19481, 'stopName': 'Dardagny'}, {'titleName': 'De Haller', 'subTitleName': '', 'idTransportAPI': '008592707', 'stopCode': 'DEHA', 'locationY': 6.197055, 'locationX': 46.199817, 'stopName': 'De Haller'}, {'titleName': 'Délices', 'subTitleName': '', 'idTransportAPI': '008592816', 'stopCode': 'DELC', 'locationY': 6.132225, 'locationX': 46.205426, 'stopName': 'Délices'}, {'titleName': 'Delay', 'subTitleName': '', 'idTransportAPI': '008593156', 'stopCode': 'DLAY', 'locationY': 6.079188, 'locationX': 46.216788, 'stopName': 'Delay'}, {'titleName': 'La Dode', 'subTitleName': '', 'idTransportAPI': '008592758', 'stopCode': 'DODE', 'locationY': 6.094686, 'locationX': 46.180778, 'stopName': 'La Dode'}, {'titleName': 'Dôle', 'subTitleName': '', 'idTransportAPI': '008592818', 'stopCode': 'DOLE', 'locationY': 6.131488, 'locationX': 46.208743, 'stopName': 'Dôle'}, {'titleName': 'Drize', 'subTitleName': '', 'idTransportAPI': '008593058', 'stopCode': 'DRIZ', 'locationY': 6.139641, 'locationX': 46.165028, 'stopName': 'Drize'}, {'titleName': 'Lycée De Staël', 'subTitleName': '', 'idTransportAPI': '008595047', 'stopCode': 'DSTA', 'locationY': 6.072006, 'locationX': 46.141746, 'stopName': 'Lycée De Staël'}, {'titleName': 'De Westerweller', 'subTitleName': '', 'idTransportAPI': '008593130', 'stopCode': 'DWES', 'locationY': 6.211195, 'locationX': 46.212267, 'stopName': 'De Westerweller'}, {'titleName': 'Eaumorte', 'subTitleName': '', 'idTransportAPI': '008592634', 'stopCode': 'EAUM', 'locationY': 6.019141, 'locationX': 46.163276, 'stopName': 'Eaumorte'}, {'titleName': 'Ecogia', 'subTitleName': '', 'idTransportAPI': '008593185', 'stopCode': 'ECOG', 'locationY': 6.154105, 'locationX': 46.291812, 'stopName': 'Ecogia'}, {'titleName': 'Mervelet', 'subTitleName': '', 'idTransportAPI': '008504018', 'stopCode': 'ECU0', 'locationY': 6.811054, 'locationX': 46.610417, 'stopName': 'Mervelet'}, {'titleName': 'Vallet', 'subTitleName': '', 'idTransportAPI': '008593031', 'stopCode': 'EDVA', 'locationY': 6.090955, 'locationX': 46.184967, 'stopName': 'Vallet'}, {'titleName': 'Eglise Russe', 'subTitleName': '', 'idTransportAPI': '008592820', 'stopCode': 'EGRU', 'locationY': 6.152801, 'locationX': 46.198414, 'stopName': 'Eglise Russe'}, {'titleName': 'Ecole Médecine', 'subTitleName': '', 'idTransportAPI': '008592819', 'stopCode': 'EMED', 'locationY': 6.139308, 'locationX': 46.197605, 'stopName': 'Ecole Médecine'}, {'titleName': 'Entrée Hôpital', 'subTitleName': '', 'idTransportAPI': '008592821', 'stopCode': 'ENHO', 'locationY': 6.148702, 'locationX': 46.193668, 'stopName': 'Entrée Hôpital'}, {'titleName': 'Versoix', 'subTitleName': 'Entrée', 'idTransportAPI': '008593186', 'stopCode': 'ENVE', 'locationY': 6.168227, 'locationX': 46.274643, 'stopName': 'Entrée Versoix'}, {'titleName': 'Epinettes', 'subTitleName': '', 'idTransportAPI': '008592822', 'stopCode': 'EPIN', 'locationY': 6.134355, 'locationX': 46.190738, 'stopName': 'Epinettes'}, {'titleName': 'Les Esserts', 'subTitleName': '', 'idTransportAPI': '008587418', 'stopCode': 'ESRT', 'locationY': 6.114031, 'locationX': 46.1884, 'stopName': 'Les Esserts'}, {'titleName': 'Essertet', 'subTitleName': '', 'idTransportAPI': '008593244', 'stopCode': 'ESSE', 'locationY': 6.019203, 'locationX': 46.114923, 'stopName': 'Essertet'}, {'titleName': 'Etoile', 'subTitleName': 'P+R', 'idTransportAPI': '008592679', 'stopCode': 'ETOI', 'locationY': 6.127856, 'locationX': 46.187654, 'stopName': 'P+R Etoile'}, {'titleName': 'Evaux', 'subTitleName': '', 'idTransportAPI': '008593032', 'stopCode': 'EVAU', 'locationY': 6.100502, 'locationX': 46.191205, 'stopName': 'Evaux'}, {'titleName': 'Evordes', 'subTitleName': '', 'idTransportAPI': '008592641', 'stopCode': 'EVOR', 'locationY': 6.138427, 'locationX': 46.150772, 'stopName': 'Evordes'}, {'titleName': 'Falquets', 'subTitleName': '', 'idTransportAPI': '008592744', 'stopCode': 'FALQ', 'locationY': 6.186493, 'locationX': 46.213202, 'stopName': 'Falquets'}, {'titleName': 'Place Favre', 'subTitleName': '', 'idTransportAPI': '008592713', 'stopCode': 'FAVR', 'locationY': 6.19248, 'locationX': 46.195367, 'stopName': 'Place Favre'}, {'titleName': 'Les Fayards', 'subTitleName': '', 'idTransportAPI': '008593187', 'stopCode': 'FAYA', 'locationY': 6.164325, 'locationX': 46.274436, 'stopName': 'Les Fayards'}, {'titleName': 'Dussaud', 'subTitleName': '', 'idTransportAPI': '008592827', 'stopCode': 'FDUS', 'locationY': 6.127946, 'locationX': 46.195763, 'stopName': 'Dussaud'}, {'titleName': 'Ferney Voltaire', 'subTitleName': 'Mairie', 'idTransportAPI': '008595017', 'stopCode': 'FEMA', 'locationY': 6.107037, 'locationX': 46.258948, 'stopName': 'Ferney Voltaire Mairie'}, {'titleName': 'Ferney Voltaire', 'subTitleName': 'Douane', 'idTransportAPI': '008593242', 'stopCode': 'FVDO', 'locationY': 6.117941, 'locationX': 46.250992, 'stopName': 'Ferney Voltaire Douane'}, {'titleName': 'La Fenêtre', 'subTitleName': '', 'idTransportAPI': '008592847', 'stopCode': 'FENE', 'locationY': 6.138742, 'locationX': 46.23002, 'stopName': 'La Fenêtre'}, {'titleName': 'Ferme Sarasin', 'subTitleName': '', 'idTransportAPI': '008592942', 'stopCode': 'FESA', 'locationY': 6.122193, 'locationX': 46.232789, 'stopName': 'Ferme Sarasin'}, {'titleName': 'Feuillat', 'subTitleName': '', 'idTransportAPI': '008592642', 'stopCode': 'FEUL', 'locationY': 6.112413, 'locationX': 46.148623, 'stopName': 'Feuillat'}, {'titleName': 'Fillion', 'subTitleName': '', 'idTransportAPI': '008592673', 'stopCode': 'FILI', 'locationY': 6.145043, 'locationX': 46.177919, 'stopName': 'Fillion'}, {'titleName': 'Florence', 'subTitleName': '', 'idTransportAPI': '008592823', 'stopCode': 'FLCE', 'locationY': 6.172038, 'locationX': 46.194127, 'stopName': 'Florence'}, {'titleName': 'Liszt', 'subTitleName': '', 'idTransportAPI': '008592828', 'stopCode': 'FLIZ', 'locationY': 6.149295, 'locationX': 46.198837, 'stopName': 'Liszt'}, {'titleName': 'Floralies', 'subTitleName': '', 'idTransportAPI': '008593158', 'stopCode': 'FLOR', 'locationY': 6.111675, 'locationX': 46.221652, 'stopName': 'Floralies'}, {'titleName': 'Florissant', 'subTitleName': '', 'idTransportAPI': '008592824', 'stopCode': 'FLRI', 'locationY': 6.154087, 'locationX': 46.197066, 'stopName': 'Florissant'}, {'titleName': 'Anières', 'subTitleName': 'Foyer', 'idTransportAPI': '008592761', 'stopCode': 'FOAN', 'locationY': 6.23294, 'locationX': 46.271757, 'stopName': 'Anières Foyer'}, {'titleName': 'Fontanettes', 'subTitleName': '', 'idTransportAPI': '008579455', 'stopCode': 'FOES', 'locationY': 7.540592, 'locationX': 46.301161, 'stopName': 'Fontanettes'}, {'titleName': 'Foulon', 'subTitleName': '', 'idTransportAPI': '008593044', 'stopCode': 'FOLN', 'locationY': 6.084231, 'locationX': 46.155527, 'stopName': 'Foulon'}, {'titleName': 'Fontenette', 'subTitleName': '', 'idTransportAPI': '008592674', 'stopCode': 'FONT', 'locationY': 6.14561, 'locationX': 46.184877, 'stopName': 'Fontenette'}, {'titleName': 'Forumeyrin', 'subTitleName': '', 'idTransportAPI': '008593010', 'stopCode': 'FORU', 'locationY': 6.080959, 'locationX': 46.230596, 'stopName': 'Forumeyrin'}, {'titleName': 'Fossard', 'subTitleName': '', 'idTransportAPI': '008593111', 'stopCode': 'FOSA', 'locationY': 6.191976, 'locationX': 46.184895, 'stopName': 'Fossard'}, {'titleName': 'Fourches', 'subTitleName': '', 'idTransportAPI': '008577748', 'stopCode': 'FOUR', 'locationY': 7.107348, 'locationX': 46.663354, 'stopName': 'Fourches'}, {'titleName': 'Franchises', 'subTitleName': '', 'idTransportAPI': '008592826', 'stopCode': 'FRAN', 'locationY': 6.119155, 'locationX': 46.21339, 'stopName': 'Franchises'}, {'titleName': 'Maison de la Paix', 'subTitleName': '', 'idTransportAPI': '008592825', 'stopCode': 'MAPA', 'locationY': 6.145655, 'locationX': 46.220024, 'stopName': 'Maison de la Paix'}, {'titleName': 'Fraidieu', 'subTitleName': '', 'idTransportAPI': '008592745', 'stopCode': 'FRDI', 'locationY': 6.187922, 'locationX': 46.220977, 'stopName': 'Fraidieu'}, {'titleName': 'Fret', 'subTitleName': '', 'idTransportAPI': '008592943', 'stopCode': 'FRET', 'locationY': 6.118525, 'locationX': 46.238201, 'stopName': 'Fret'}, {'titleName': 'Frontenex', 'subTitleName': '', 'idTransportAPI': '008774162', 'stopCode': 'FRON', 'locationY': 6.313546, 'locationX': 45.630368, 'stopName': 'Frontenex'}, {'titleName': 'Bois des Frères', 'subTitleName': '', 'idTransportAPI': '008593144', 'stopCode': 'FRRE', 'locationY': 6.105131, 'locationX': 46.212222, 'stopName': 'Bois des Frères'}, {'titleName': 'Foretaille', 'subTitleName': '', 'idTransportAPI': '008593075', 'stopCode': 'FTAI', 'locationY': 6.134472, 'locationX': 46.244475, 'stopName': 'Foretaille'}, {'titleName': 'Eaux Vives', 'subTitleName': 'Gare', 'idTransportAPI': '008592829', 'stopCode': 'GAEV', 'locationY': 6.165952, 'locationX': 46.200725, 'stopName': 'Gare Eaux Vives'}, {'titleName': 'Gaillardin', 'subTitleName': '', 'idTransportAPI': '008594948', 'stopCode': 'GAIN', 'locationY': 5.984712, 'locationX': 46.178809, 'stopName': 'Gaillardin'}, {'titleName': 'La Gabiule', 'subTitleName': '', 'idTransportAPI': '008592726', 'stopCode': 'GAIU', 'locationY': 6.212472, 'locationX': 46.259955, 'stopName': 'La Gabiule'}, {'titleName': 'Gautier', 'subTitleName': '', 'idTransportAPI': '008592830', 'stopCode': 'GAUT', 'locationY': 6.1505, 'locationX': 46.213516, 'stopName': 'Gautier'}, {'titleName': 'Gavard', 'subTitleName': '', 'idTransportAPI': '008592667', 'stopCode': 'GAVA', 'locationY': 6.135659, 'locationX': 46.185353, 'stopName': 'Gavard'}, {'titleName': 'Grange Canal', 'subTitleName': '', 'idTransportAPI': '008592833', 'stopCode': 'GCAN', 'locationY': 6.174672, 'locationX': 46.19961, 'stopName': 'Grange Canal'}, {'titleName': 'Gros Chêne', 'subTitleName': '', 'idTransportAPI': '008593035', 'stopCode': 'GCHN', 'locationY': 6.103325, 'locationX': 46.190135, 'stopName': 'Gros Chêne'}, {'titleName': 'Grange Collomb', 'subTitleName': '', 'idTransportAPI': '008592675', 'stopCode': 'GCLB', 'locationY': 6.138203, 'locationX': 46.175501, 'stopName': 'Grange Collomb'}, {'titleName': 'Grand Champ', 'subTitleName': '', 'idTransportAPI': '008501333', 'stopCode': 'GCMP', 'locationY': 6.259413, 'locationX': 46.422749, 'stopName': 'Grand Champ'}, {'titleName': 'Grand Hangar', 'subTitleName': '', 'idTransportAPI': '008593012', 'stopCode': 'GDHA', 'locationY': 6.099738, 'locationX': 46.224411, 'stopName': 'Grand Hangar'}, {'titleName': 'Grand Lancy', 'subTitleName': '', 'idTransportAPI': '008587902', 'stopCode': 'GDLA', 'locationY': 6.121833, 'locationX': 46.184086, 'stopName': 'Grand Lancy'}, {'titleName': 'Grand Donzel', 'subTitleName': '', 'idTransportAPI': '008593198', 'stopCode': 'GDON', 'locationY': 6.165386, 'locationX': 46.172678, 'stopName': 'Grand Donzel'}, {'titleName': 'Genthod', 'subTitleName': 'Bellevue', 'idTransportAPI': '008501021', 'stopCode': 'GEBE', 'locationY': 6.153961, 'locationX': 46.256727, 'stopName': 'Genthod Bellevue'}, {'titleName': 'Bois Gentil', 'subTitleName': '', 'idTransportAPI': '008592790', 'stopCode': 'GENT', 'locationY': 6.160775, 'locationX': 46.197731, 'stopName': 'Bois Gentil'}, {'titleName': 'De Ternier', 'subTitleName': '', 'idTransportAPI': '008595033', 'stopCode': 'GETE', 'locationY': 6.107927, 'locationX': 46.193731, 'stopName': 'De Ternier'}, {'titleName': 'Grange Falquet', 'subTitleName': '', 'idTransportAPI': '008592706', 'stopCode': 'GFAQ', 'locationY': 6.185639, 'locationX': 46.198271, 'stopName': 'Grange Falquet'}, {'titleName': 'Germagny', 'subTitleName': '', 'idTransportAPI': '008593245', 'stopCode': 'GGNY', 'locationY': 6.007392, 'locationX': 46.113511, 'stopName': 'Germagny'}, {'titleName': 'Giacometti', 'subTitleName': '', 'idTransportAPI': '008592899', 'stopCode': 'GIAC', 'locationY': 6.119523, 'locationX': 46.227279, 'stopName': 'Giacometti'}, {'titleName': 'Gardiol', 'subTitleName': '', 'idTransportAPI': '008592944', 'stopCode': 'GIOL', 'locationY': 6.120943, 'locationX': 46.228924, 'stopName': 'Gardiol'}, {'titleName': 'Galaise', 'subTitleName': '', 'idTransportAPI': '008593059', 'stopCode': 'GLAI', 'locationY': 6.106309, 'locationX': 46.163599, 'stopName': 'Galaise'}, {'titleName': 'Galeries du Loup', 'subTitleName': '', 'idTransportAPI': '008593033', 'stopCode': 'GLOU', 'locationY': 6.10141, 'locationX': 46.185119, 'stopName': 'Galeries du Loup'}, {'titleName': 'Gaillard', 'subTitleName': 'Marché', 'idTransportAPI': '008595368', 'stopCode': 'GMAR', 'locationY': 6.20911, 'locationX': 46.191942, 'stopName': 'Gaillard Marché'}, {'titleName': 'Gos', 'subTitleName': '', 'idTransportAPI': '008592776', 'stopCode': 'GOS0', 'locationY': 6.154734, 'locationX': 46.187906, 'stopName': 'Gos'}, {'titleName': 'Goulart', 'subTitleName': '', 'idTransportAPI': '008592831', 'stopCode': 'GOUL', 'locationY': 6.141457, 'locationX': 46.207538, 'stopName': 'Goulart'}, {'titleName': 'Grand Pré', 'subTitleName': '', 'idTransportAPI': '008592832', 'stopCode': 'GPRE', 'locationY': 6.130679, 'locationX': 46.216051, 'stopName': 'Grand Pré'}, {'titleName': 'Grangettes', 'subTitleName': '', 'idTransportAPI': '008592694', 'stopCode': 'GRAN', 'locationY': 6.961615, 'locationX': 46.678232, 'stopName': 'Grangettes'}, {'titleName': 'Anières', 'subTitleName': 'Gravière', 'idTransportAPI': '008592625', 'stopCode': 'ANGR', 'locationY': 6.237021, 'locationX': 46.288864, 'stopName': 'Anières Gravière'}, {'titleName': 'Grand Cara', 'subTitleName': '', 'idTransportAPI': '008593081', 'stopCode': 'GRCA', 'locationY': 6.251673, 'locationX': 46.212222, 'stopName': 'Grand Cara'}, {'titleName': 'Gradelle', 'subTitleName': '', 'idTransportAPI': '008587384', 'stopCode': 'GRDL', 'locationY': 6.179463, 'locationX': 46.206091, 'stopName': 'Gradelle'}, {'titleName': 'Grésy', 'subTitleName': '', 'idTransportAPI': '008593085', 'stopCode': 'GRES', 'locationY': 6.230333, 'locationX': 46.208321, 'stopName': 'Grésy'}, {'titleName': 'Grottes', 'subTitleName': '', 'idTransportAPI': '008592834', 'stopCode': 'GROT', 'locationY': 6.13787, 'locationX': 46.212572, 'stopName': 'Grottes'}, {'titleName': 'Meyrin', 'subTitleName': 'Gravière', 'idTransportAPI': '008594961', 'stopCode': 'GRVI', 'locationY': 6.081714, 'locationX': 46.236439, 'stopName': 'Meyrin Gravière'}, {'titleName': 'Grand Saconnex', 'subTitleName': 'Place', 'idTransportAPI': '008587914', 'stopCode': 'GSAC', 'locationY': 6.123361, 'locationX': 46.233787, 'stopName': 'Grand Saconnex Place'}, {'titleName': 'Grand Saconnex', 'subTitleName': 'Douane', 'idTransportAPI': '008592941', 'stopCode': 'GSDN', 'locationY': 6.119757, 'locationX': 46.249509, 'stopName': 'Grand Saconnex Douane'}, {'titleName': 'Grand Saconnex', 'subTitleName': 'Mairie', 'idTransportAPI': '008592947', 'stopCode': 'GSMA', 'locationY': 6.126175, 'locationX': 46.236124, 'stopName': 'Grand Saconnex Mairie'}, {'titleName': 'Graveson', 'subTitleName': '', 'idTransportAPI': '008593112', 'stopCode': 'GSON', 'locationY': 6.200911, 'locationX': 46.193237, 'stopName': 'Graveson'}, {'titleName': 'Genthod', 'subTitleName': 'Village', 'idTransportAPI': '008587064', 'stopCode': 'GTVI', 'locationY': 6.15557, 'locationX': 46.264845, 'stopName': 'Genthod Village'}, {'titleName': 'Guye', 'subTitleName': '', 'idTransportAPI': '008592835', 'stopCode': 'GUYE', 'locationY': 6.123191, 'locationX': 46.208905, 'stopName': 'Guye'}, {'titleName': 'Genévrière', 'subTitleName': '', 'idTransportAPI': '008593034', 'stopCode': 'GVRI', 'locationY': 6.108538, 'locationX': 46.179942, 'stopName': 'Genévrière'}, {'titleName': 'Gex', 'subTitleName': 'ZAC', 'idTransportAPI': '008587913', 'stopCode': 'GXAI', 'locationY': 6.073939, 'locationX': 46.33826, 'stopName': 'Gex ZAC'}, {'titleName': 'Gex', 'subTitleName': 'Georges Charpak', 'idTransportAPI': '008593224', 'stopCode': 'GXGC', 'locationY': 6.067377, 'locationX': 46.335662, 'stopName': 'Gex Georges Charpak'}, {'titleName': 'Gex', 'subTitleName': 'Poste', 'idTransportAPI': '008587912', 'stopCode': 'GXPO', 'locationY': 6.059754, 'locationX': 46.332938, 'stopName': 'Gex Poste'}, {'titleName': 'Baraque à Cloud', 'subTitleName': '', 'idTransportAPI': '008595457', 'stopCode': 'GYBA', 'locationY': 6.257409, 'locationX': 46.247442, 'stopName': 'Baraque à Cloud'}, {'titleName': 'Gy', 'subTitleName': 'Temple', 'idTransportAPI': '008587066', 'stopCode': 'GYTE', 'locationY': 6.25793, 'locationX': 46.252511, 'stopName': 'Gy Temple'}, {'titleName': 'Gy', 'subTitleName': 'Poste', 'idTransportAPI': '008592956', 'stopCode': 'GYPO', 'locationY': 6.255638, 'locationX': 46.251334, 'stopName': 'Gy Poste'}, {'titleName': 'ZIMEYSA', 'subTitleName': 'Gare', 'idTransportAPI': '008593011', 'stopCode': 'ZIMG', 'locationY': 6.065588, 'locationX': 46.22122, 'stopName': 'ZIMEYSA Gare'}, {'titleName': 'Hameau Chèvres', 'subTitleName': '', 'idTransportAPI': '008592654', 'stopCode': 'HACH', 'locationY': 6.076258, 'locationX': 46.199727, 'stopName': 'Hameau Chèvres'}, {'titleName': 'Hauts de Magny', 'subTitleName': '', 'idTransportAPI': '008594938', 'stopCode': 'HAMA', 'locationY': 6.087926, 'locationX': 46.254714, 'stopName': 'Hauts de Magny'}, {'titleName': 'Henri Bordier', 'subTitleName': '', 'idTransportAPI': '008592836', 'stopCode': 'HBOR', 'locationY': 6.111954, 'locationX': 46.205795, 'stopName': 'Henri Bordier'}, {'titleName': 'Hermance', 'subTitleName': '', 'idTransportAPI': '008501239', 'stopCode': 'HERM', 'locationY': 6.241543, 'locationX': 46.301629, 'stopName': 'Hermance'}, {'titleName': 'Hôpital', 'subTitleName': '', 'idTransportAPI': '008592837', 'stopCode': 'HOPI', 'locationY': 6.149098, 'locationX': 46.194828, 'stopName': 'Hôpital'}, {'titleName': 'Hautains', 'subTitleName': '', 'idTransportAPI': '008593229', 'stopCode': 'HTAI', 'locationY': 6.026395, 'locationX': 46.244277, 'stopName': 'Hautains'}, {'titleName': 'Hôpital Trois Chêne', 'subTitleName': '', 'idTransportAPI': '008593113', 'stopCode': 'HTCH', 'locationY': 6.214863, 'locationX': 46.209058, 'stopName': 'Hôpital Trois Chêne'}, {'titleName': 'Hutins', 'subTitleName': '', 'idTransportAPI': '008593235', 'stopCode': 'HTIN', 'locationY': 6.085499, 'locationX': 46.147778, 'stopName': 'Hutins'}, {'titleName': 'Hôpital La Tour', 'subTitleName': '', 'idTransportAPI': '008593013', 'stopCode': 'HTOU', 'locationY': 6.068159, 'locationX': 46.22985, 'stopName': 'Hôpital La Tour'}, {'titleName': 'Hôtel de Ville', 'subTitleName': '', 'idTransportAPI': '008592838', 'stopCode': 'HVIL', 'locationY': 6.146617, 'locationX': 46.201093, 'stopName': 'Hôtel de Ville'}, {'titleName': 'ICC', 'subTitleName': '', 'idTransportAPI': '008593014', 'stopCode': 'ICC0', 'locationY': 6.101365, 'locationX': 46.226263, 'stopName': 'ICC'}, {'titleName': \"Coq d'Inde\", 'subTitleName': '', 'idTransportAPI': '008592705', 'stopCode': 'INDE', 'locationY': 6.193819, 'locationX': 46.205363, 'stopName': \"Coq d'Inde\"}, {'titleName': 'Industrielle', 'subTitleName': '', 'idTransportAPI': '008592839', 'stopCode': 'INDT', 'locationY': 6.133861, 'locationX': 46.190351, 'stopName': 'Industrielle'}, {'titleName': 'Intercontinental', 'subTitleName': '', 'idTransportAPI': '008592840', 'stopCode': 'INTR', 'locationY': 6.133672, 'locationX': 46.224456, 'stopName': 'Intercontinental'}, {'titleName': 'Isaac Mercier', 'subTitleName': '', 'idTransportAPI': '008592841', 'stopCode': 'ISAM', 'locationY': 6.139542, 'locationX': 46.206864, 'stopName': 'Isaac Mercier'}, {'titleName': 'Isaac Mercier', 'subTitleName': '', 'idTransportAPI': '008592841', 'stopCode': 'IZAC', 'locationY': 6.139542, 'locationX': 46.206864, 'stopName': 'Isaac Mercier'}, {'titleName': \"Musée d'art et d'histoire\", 'subTitleName': '', 'idTransportAPI': '008592851', 'stopCode': 'JADA', 'locationY': 6.151138, 'locationX': 46.199628, 'stopName': \"Musée d'art et d'histoire\"}, {'titleName': 'Jargilières', 'subTitleName': '', 'idTransportAPI': '008593243', 'stopCode': 'JAGI', 'locationY': 6.116781, 'locationX': 46.255577, 'stopName': 'Jargilières'}, {'titleName': 'Jardin Alpin Vivarium', 'subTitleName': '', 'idTransportAPI': '008593015', 'stopCode': 'JALP', 'locationY': 6.082901, 'locationX': 46.226425, 'stopName': 'Jardin Alpin Vivarium'}, {'titleName': 'Jardin Botanique', 'subTitleName': '', 'idTransportAPI': '008592843', 'stopCode': 'JARB', 'locationY': 6.147713, 'locationX': 46.22389, 'stopName': 'Jardin Botanique'}, {'titleName': 'Berthet', 'subTitleName': '', 'idTransportAPI': '008592757', 'stopCode': 'JBRT', 'locationY': 6.09091, 'locationX': 46.183232, 'stopName': 'Berthet'}, {'titleName': 'Route des Jeunes', 'subTitleName': '', 'idTransportAPI': '008592996', 'stopCode': 'JEUN', 'locationY': 6.128944, 'locationX': 46.177011, 'stopName': 'Route des Jeunes'}, {'titleName': 'Jean Jacques', 'subTitleName': '', 'idTransportAPI': '008592844', 'stopCode': 'JJAC', 'locationY': 6.125204, 'locationX': 46.204311, 'stopName': 'Jean Jacques'}, {'titleName': 'Joli Mont', 'subTitleName': '', 'idTransportAPI': '008592845', 'stopCode': 'JLIM', 'locationY': 6.117141, 'locationX': 46.221867, 'stopName': 'Joli Mont'}, {'titleName': 'Jumelles', 'subTitleName': '', 'idTransportAPI': '008593114', 'stopCode': 'JMEL', 'locationY': 6.218297, 'locationX': 46.207682, 'stopName': 'Jumelles'}, {'titleName': 'Jean Monnet', 'subTitleName': '', 'idTransportAPI': '008587920', 'stopCode': 'JMON', 'locationY': 6.022925, 'locationX': 46.244835, 'stopName': 'Jean Monnet'}, {'titleName': 'Jonction', 'subTitleName': '', 'idTransportAPI': '008587062', 'stopCode': 'JOCT', 'locationY': 6.130643, 'locationX': 46.201246, 'stopName': 'Jonction'}, {'titleName': 'De Sauvage', 'subTitleName': '', 'idTransportAPI': '008593161', 'stopCode': 'JPSA', 'locationY': 6.103136, 'locationX': 46.213651, 'stopName': 'De Sauvage'}, {'titleName': 'Pictet Thellusson', 'subTitleName': '', 'idTransportAPI': '008592842', 'stopCode': 'PITH', 'locationY': 6.131011, 'locationX': 46.188922, 'stopName': 'Pictet Thellusson'}, {'titleName': 'Jussy', 'subTitleName': 'Château', 'idTransportAPI': '008592962', 'stopCode': 'JUCH', 'locationY': 6.270263, 'locationX': 46.237266, 'stopName': 'Jussy Château'}, {'titleName': 'Jussy', 'subTitleName': 'Meurets', 'idTransportAPI': '008587068', 'stopCode': 'JUMR', 'locationY': 6.27207, 'locationX': 46.236439, 'stopName': 'Jussy Meurets'}, {'titleName': 'Jussy', 'subTitleName': 'Place', 'idTransportAPI': '008592968', 'stopCode': 'JUPL', 'locationY': 6.265499, 'locationX': 46.234902, 'stopName': 'Jussy Place'}, {'titleName': 'Jurets', 'subTitleName': '', 'idTransportAPI': '008595226', 'stopCode': 'JURE', 'locationY': 6.231646, 'locationX': 46.218406, 'stopName': 'Jurets'}, {'titleName': 'De Joinville', 'subTitleName': '', 'idTransportAPI': '008595027', 'stopCode': 'JVIL', 'locationY': 6.10781, 'locationX': 46.224582, 'stopName': 'De Joinville'}, {'titleName': 'Vüy', 'subTitleName': '', 'idTransportAPI': '008592676', 'stopCode': 'JVUY', 'locationY': 6.148001, 'locationX': 46.176328, 'stopName': 'Vüy'}, {'titleName': 'Krieg', 'subTitleName': '', 'idTransportAPI': '008592846', 'stopCode': 'KRIG', 'locationY': 6.160802, 'locationX': 46.193767, 'stopName': 'Krieg'}, {'titleName': 'La Blanche', 'subTitleName': '', 'idTransportAPI': '008593131', 'stopCode': 'LABL', 'locationY': 6.208345, 'locationX': 46.219108, 'stopName': 'La Blanche'}, {'titleName': 'La Chêna', 'subTitleName': '', 'idTransportAPI': '008592955', 'stopCode': 'LACH', 'locationY': 6.254685, 'locationX': 46.24959, 'stopName': 'La Chêna'}, {'titleName': 'Laconnex', 'subTitleName': '', 'idTransportAPI': '008587074', 'stopCode': 'LACO', 'locationY': 6.036562, 'locationX': 46.155931, 'stopName': 'Laconnex'}, {'titleName': 'La Dame', 'subTitleName': '', 'idTransportAPI': '008592735', 'stopCode': 'LADA', 'locationY': 6.22004, 'locationX': 46.25119, 'stopName': 'La Dame'}, {'titleName': 'La Donzelle', 'subTitleName': '', 'idTransportAPI': '008592767', 'stopCode': 'LADO', 'locationY': 6.00821, 'locationX': 46.18449, 'stopName': 'La Donzelle'}, {'titleName': 'Parc La Fantasia', 'subTitleName': '', 'idTransportAPI': '008595363', 'stopCode': 'LAFA', 'locationY': 6.225838, 'locationX': 46.193048, 'stopName': 'Parc La Fantasia'}, {'titleName': 'Lancy', 'subTitleName': 'Mairie', 'idTransportAPI': '008587902', 'stopCode': 'LAMA', 'locationY': 6.121833, 'locationX': 46.184086, 'stopName': 'Lancy Mairie'}, {'titleName': 'Lancy', 'subTitleName': 'Pont Rouge', 'idTransportAPI': '008516155', 'stopCode': 'LAPR', 'locationY': 6.12533, 'locationX': 46.188895, 'stopName': 'Lancy Pont Rouge'}, {'titleName': 'Maillard', 'subTitleName': '', 'idTransportAPI': '008595026', 'stopCode': 'MAIL', 'locationY': 6.065327, 'locationX': 46.228672, 'stopName': 'Maillard'}, {'titleName': 'Aubert', 'subTitleName': '', 'idTransportAPI': '008592849', 'stopCode': 'LAUB', 'locationY': 6.163651, 'locationX': 46.192437, 'stopName': 'Aubert'}, {'titleName': \"L'Avenir\", 'subTitleName': '', 'idTransportAPI': '008595227', 'stopCode': 'LAVE', 'locationY': 6.237713, 'locationX': 46.217741, 'stopName': \"L'Avenir\"}, {'titleName': 'Les Bruyères', 'subTitleName': '', 'idTransportAPI': '008593061', 'stopCode': 'LBRU', 'locationY': 6.108017, 'locationX': 46.171222, 'stopName': 'Les Bruyères'}, {'titleName': 'Burgy', 'subTitleName': '', 'idTransportAPI': '008592985', 'stopCode': 'LBUR', 'locationY': 6.113608, 'locationX': 46.180751, 'stopName': 'Burgy'}, {'titleName': 'Belle Idée Chênes', 'subTitleName': '', 'idTransportAPI': '008593115', 'stopCode': 'BICN', 'locationY': 6.21142, 'locationX': 46.208563, 'stopName': 'Belle Idée Chênes'}, {'titleName': 'Les Crêts', 'subTitleName': '', 'idTransportAPI': '008595122', 'stopCode': 'LCRE', 'locationY': 7.05468, 'locationX': 46.620125, 'stopName': 'Les Crêts'}, {'titleName': 'La Côte', 'subTitleName': '', 'idTransportAPI': '008593246', 'stopCode': 'LCTE', 'locationY': 6.051726, 'locationX': 46.112415, 'stopName': 'La Côte'}, {'titleName': 'Le Rolliet', 'subTitleName': '', 'idTransportAPI': '008592984', 'stopCode': 'LERO', 'locationY': 6.110066, 'locationX': 46.172076, 'stopName': 'Le Rolliet'}, {'titleName': 'Le Fort', 'subTitleName': '', 'idTransportAPI': '008592748', 'stopCode': 'LFOR', 'locationY': 6.180695, 'locationX': 46.209094, 'stopName': 'Le Fort'}, {'titleName': 'La Forge', 'subTitleName': '', 'idTransportAPI': '008592963', 'stopCode': 'LFRG', 'locationY': 6.249984, 'locationX': 46.232277, 'stopName': 'La Forge'}, {'titleName': 'Les Hauts de Cessy', 'subTitleName': '', 'idTransportAPI': '008593217', 'stopCode': 'LHCY', 'locationY': 6.06735, 'locationX': 46.323059, 'stopName': 'Les Hauts de Cessy'}, {'titleName': 'Libellules', 'subTitleName': '', 'idTransportAPI': '008593162', 'stopCode': 'LIBE', 'locationY': 6.107576, 'locationX': 46.208671, 'stopName': 'Libellules'}, {'titleName': 'Les Maladières', 'subTitleName': '', 'idTransportAPI': '008593096', 'stopCode': 'LMLD', 'locationY': 6.059205, 'locationX': 46.223171, 'stopName': 'Les Maladières'}, {'titleName': 'En Louche', 'subTitleName': '', 'idTransportAPI': '008593047', 'stopCode': 'LOCH', 'locationY': 6.0975, 'locationX': 46.157648, 'stopName': 'En Louche'}, {'titleName': 'Loëx', 'subTitleName': 'Hôpital', 'idTransportAPI': '008587903', 'stopCode': 'LOEX', 'locationY': 6.085805, 'locationX': 46.198801, 'stopName': 'Loëx Hôpital'}, {'titleName': 'Loëx', 'subTitleName': 'Lanance', 'idTransportAPI': '008592655', 'stopCode': 'LOLA', 'locationY': 6.083306, 'locationX': 46.198954, 'stopName': 'Loëx Lanance'}, {'titleName': 'Lombard', 'subTitleName': '', 'idTransportAPI': '008592848', 'stopCode': 'LOMB', 'locationY': 6.14721, 'locationX': 46.19552, 'stopName': 'Lombard'}, {'titleName': 'La Loure', 'subTitleName': '', 'idTransportAPI': '008592964', 'stopCode': 'LOUR', 'locationY': 6.26113, 'locationX': 46.235162, 'stopName': 'La Loure'}, {'titleName': 'Loveré', 'subTitleName': '', 'idTransportAPI': '008593134', 'stopCode': 'LOVR', 'locationY': 6.201595, 'locationX': 46.209183, 'stopName': 'Loveré'}, {'titleName': 'Les Quibières', 'subTitleName': '', 'idTransportAPI': '008593203', 'stopCode': 'LQUI', 'locationY': 6.182205, 'locationX': 46.173379, 'stopName': 'Les Quibières'}, {'titleName': 'Bugnons', 'subTitleName': '', 'idTransportAPI': '008595458', 'stopCode': 'BUGN', 'locationY': 6.07713, 'locationX': 46.235881, 'stopName': 'Bugnons'}, {'titleName': 'La Tour', 'subTitleName': '', 'idTransportAPI': '008595367', 'stopCode': 'LTOU', 'locationY': 6.213397, 'locationX': 46.191439, 'stopName': 'La Tour'}, {'titleName': 'Lully', 'subTitleName': 'Village', 'idTransportAPI': '008592662', 'stopCode': 'LUGE', 'locationY': 6.067574, 'locationX': 46.161864, 'stopName': 'Lully Village'}, {'titleName': 'Lully', 'subTitleName': '', 'idTransportAPI': '008592656', 'stopCode': 'LULY', 'locationY': 6.071611, 'locationX': 46.162997, 'stopName': 'Lully'}, {'titleName': 'Valencien', 'subTitleName': '', 'idTransportAPI': '008593116', 'stopCode': 'LVAL', 'locationY': 6.205936, 'locationX': 46.195915, 'stopName': 'Valencien'}, {'titleName': 'Lycée International', 'subTitleName': '', 'idTransportAPI': '008594934', 'stopCode': 'LYIN', 'locationY': 6.11501, 'locationX': 46.264162, 'stopName': 'Lycée International'}, {'titleName': 'Lyon', 'subTitleName': '', 'idTransportAPI': '008592850', 'stopCode': 'LYON', 'locationY': 6.138841, 'locationX': 46.20948, 'stopName': 'Lyon'}, {'titleName': 'Machéry', 'subTitleName': '', 'idTransportAPI': '008592946', 'stopCode': 'MACH', 'locationY': 6.129564, 'locationX': 46.243702, 'stopName': 'Machéry'}, {'titleName': 'Maison Rouge', 'subTitleName': '', 'idTransportAPI': '008593097', 'stopCode': 'MAGE', 'locationY': 6.018889, 'locationX': 46.205965, 'stopName': 'Maison Rouge'}, {'titleName': 'Maisonnex', 'subTitleName': '', 'idTransportAPI': '008593018', 'stopCode': 'MAIX', 'locationY': 6.06059, 'locationX': 46.232034, 'stopName': 'Maisonnex'}, {'titleName': 'Malagnou', 'subTitleName': '', 'idTransportAPI': '008587056', 'stopCode': 'MALA', 'locationY': 6.176641, 'locationX': 46.193309, 'stopName': 'Malagnou'}, {'titleName': 'Mancy', 'subTitleName': '', 'idTransportAPI': '008592736', 'stopCode': 'MANC', 'locationY': 6.202781, 'locationX': 46.242902, 'stopName': 'Mancy'}, {'titleName': 'Manufactures', 'subTitleName': '', 'idTransportAPI': '008595036', 'stopCode': 'MANU', 'locationY': 6.105662, 'locationX': 46.16484, 'stopName': 'Manufactures'}, {'titleName': 'Maison Onésienne', 'subTitleName': '', 'idTransportAPI': '008593037', 'stopCode': 'MAON', 'locationY': 6.101617, 'locationX': 46.189236, 'stopName': 'Maison Onésienne'}, {'titleName': 'Les Marbriers', 'subTitleName': '', 'idTransportAPI': '008595025', 'stopCode': 'MARB', 'locationY': 6.117905, 'locationX': 46.196509, 'stopName': 'Les Marbriers'}, {'titleName': 'Marguerite', 'subTitleName': '', 'idTransportAPI': '008592626', 'stopCode': 'MARG', 'locationY': 6.220616, 'locationX': 46.272845, 'stopName': 'Marguerite'}, {'titleName': 'Massettes', 'subTitleName': '', 'idTransportAPI': '008592948', 'stopCode': 'MASS', 'locationY': 6.113959, 'locationX': 46.223431, 'stopName': 'Massettes'}, {'titleName': 'Maternité Pédiatrie', 'subTitleName': '', 'idTransportAPI': '008592853', 'stopCode': 'MATE', 'locationY': 6.145978, 'locationX': 46.19116, 'stopName': 'Maternité Pédiatrie'}, {'titleName': 'Mategnin', 'subTitleName': '', 'idTransportAPI': '008594946', 'stopCode': 'MATG', 'locationY': 6.088115, 'locationX': 46.240915, 'stopName': 'Mategnin'}, {'titleName': 'Thônex', 'subTitleName': 'Mairie', 'idTransportAPI': '008593117', 'stopCode': 'MATH', 'locationY': 6.198358, 'locationX': 46.188059, 'stopName': 'Thônex Mairie'}, {'titleName': 'Mazettes', 'subTitleName': '', 'idTransportAPI': '008593135', 'stopCode': 'MAZE', 'locationY': 6.215249, 'locationX': 46.213894, 'stopName': 'Mazettes'}, {'titleName': 'Maconnex', 'subTitleName': '', 'idTransportAPI': '008593226', 'stopCode': 'MCON', 'locationY': 6.085849, 'locationX': 46.284504, 'stopName': 'Maconnex'}, {'titleName': 'Moulins de Drize', 'subTitleName': '', 'idTransportAPI': '008593062', 'stopCode': 'MDRZ', 'locationY': 6.140522, 'locationX': 46.167689, 'stopName': 'Moulins de Drize'}, {'titleName': 'Meinier', 'subTitleName': 'Eglise', 'idTransportAPI': '008593001', 'stopCode': 'MEGL', 'locationY': 6.233803, 'locationX': 46.246516, 'stopName': 'Meinier Eglise'}, {'titleName': 'Meyrin', 'subTitleName': 'Mairie', 'idTransportAPI': '008595028', 'stopCode': 'MEMA', 'locationY': 6.080429, 'locationX': 46.233526, 'stopName': 'Meyrin Mairie'}, {'titleName': 'Meinier', 'subTitleName': 'Pralys', 'idTransportAPI': '008593004', 'stopCode': 'MEPR', 'locationY': 6.226459, 'locationX': 46.243639, 'stopName': 'Meinier Pralys'}, {'titleName': 'Mervelet', 'subTitleName': '', 'idTransportAPI': '008592855', 'stopCode': 'MERV', 'locationY': 6.122894, 'locationX': 46.219566, 'stopName': 'Mervelet'}, {'titleName': 'Métropole', 'subTitleName': '', 'idTransportAPI': '008592856', 'stopCode': 'METR', 'locationY': 6.151516, 'locationX': 46.203394, 'stopName': 'Métropole'}, {'titleName': 'Morglas', 'subTitleName': '', 'idTransportAPI': '008593163', 'stopCode': 'MGLA', 'locationY': 6.07802, 'locationX': 46.218496, 'stopName': 'Morglas'}, {'titleName': 'Montagne', 'subTitleName': '', 'idTransportAPI': '008592697', 'stopCode': 'MGNE', 'locationY': 6.199455, 'locationX': 46.204689, 'stopName': 'Montagne'}, {'titleName': 'Montalègre', 'subTitleName': '', 'idTransportAPI': '008592749', 'stopCode': 'MGRE', 'locationY': 6.180308, 'locationX': 46.2214, 'stopName': 'Montalègre'}, {'titleName': 'Mon Idée', 'subTitleName': '', 'idTransportAPI': '008593119', 'stopCode': 'MIDE', 'locationY': 6.22245, 'locationX': 46.204212, 'stopName': 'Mon Idée'}, {'titleName': 'Miléant', 'subTitleName': '', 'idTransportAPI': '008592858', 'stopCode': 'MILE', 'locationY': 6.127721, 'locationX': 46.204671, 'stopName': 'Miléant'}, {'titleName': 'Millet', 'subTitleName': '', 'idTransportAPI': '008595366', 'stopCode': 'MILT', 'locationY': 6.220706, 'locationX': 46.191457, 'stopName': 'Millet'}, {'titleName': 'Mines', 'subTitleName': '', 'idTransportAPI': '008592859', 'stopCode': 'MINE', 'locationY': 6.14863, 'locationX': 46.222389, 'stopName': 'Mines'}, {'titleName': 'Miremont', 'subTitleName': '', 'idTransportAPI': '008592860', 'stopCode': 'MIRE', 'locationY': 6.156352, 'locationX': 46.18912, 'stopName': 'Miremont'}, {'titleName': 'Michel Servet', 'subTitleName': '', 'idTransportAPI': '008592857', 'stopCode': 'MISE', 'locationY': 6.152082, 'locationX': 46.1933, 'stopName': 'Michel Servet'}, {'titleName': 'Moillebeau', 'subTitleName': '', 'idTransportAPI': '008592861', 'stopCode': 'MLBA', 'locationY': 6.129456, 'locationX': 46.220411, 'stopName': 'Moillebeau'}, {'titleName': 'Milière', 'subTitleName': '', 'idTransportAPI': '008593205', 'stopCode': 'MLER', 'locationY': 6.158015, 'locationX': 46.165604, 'stopName': 'Milière'}, {'titleName': 'Malagny', 'subTitleName': '', 'idTransportAPI': '008592933', 'stopCode': 'MLGN', 'locationY': 6.159058, 'locationX': 46.271164, 'stopName': 'Malagny'}, {'titleName': 'Le Moulin', 'subTitleName': '', 'idTransportAPI': '008592769', 'stopCode': 'MLIN', 'locationY': 6.007302, 'locationX': 46.181479, 'stopName': 'Le Moulin'}, {'titleName': 'Malpertuis', 'subTitleName': '', 'idTransportAPI': '008592659', 'stopCode': 'MLPT', 'locationY': 6.064446, 'locationX': 46.182153, 'stopName': 'Malpertuis'}, {'titleName': 'Molard', 'subTitleName': '', 'idTransportAPI': '008592862', 'stopCode': 'MLRD', 'locationY': 6.14863, 'locationX': 46.203871, 'stopName': 'Molard'}, {'titleName': 'Malivert', 'subTitleName': '', 'idTransportAPI': '008593231', 'stopCode': 'MLVT', 'locationY': 6.028795, 'locationX': 46.24096, 'stopName': 'Malivert'}, {'titleName': 'Maisons Neuves', 'subTitleName': '', 'idTransportAPI': '008592763', 'stopCode': 'MNEU', 'locationY': 6.230063, 'locationX': 46.261636, 'stopName': 'Maisons Neuves'}, {'titleName': 'Moillesulaz', 'subTitleName': '', 'idTransportAPI': '008593118', 'stopCode': 'MOIL', 'locationY': 6.206467, 'locationX': 46.192446, 'stopName': 'Moillesulaz'}, {'titleName': 'Môle', 'subTitleName': '', 'idTransportAPI': '008592863', 'stopCode': 'MOLE', 'locationY': 6.145493, 'locationX': 46.213157, 'stopName': 'Môle'}, {'titleName': 'Mollaz', 'subTitleName': '', 'idTransportAPI': '008592972', 'stopCode': 'MOLL', 'locationY': 6.033712, 'locationX': 46.154277, 'stopName': 'Mollaz'}, {'titleName': 'Monniaz', 'subTitleName': '', 'idTransportAPI': '008592966', 'stopCode': 'MONN', 'locationY': 6.306202, 'locationX': 46.241886, 'stopName': 'Monniaz'}, {'titleName': 'Parc Montessuit', 'subTitleName': '', 'idTransportAPI': '008595358', 'stopCode': 'MONT', 'locationY': 6.231277, 'locationX': 46.194261, 'stopName': 'Parc Montessuit'}, {'titleName': 'Moulin de la Ratte', 'subTitleName': '', 'idTransportAPI': '008595556', 'stopCode': 'MORA', 'locationY': 6.046081, 'locationX': 46.188095, 'stopName': 'Moulin de la Ratte'}, {'titleName': 'Crêts Morillon', 'subTitleName': '', 'idTransportAPI': '008592940', 'stopCode': 'MORL', 'locationY': 6.127838, 'locationX': 46.228672, 'stopName': 'Crêts Morillon'}, {'titleName': 'Monthoux', 'subTitleName': '', 'idTransportAPI': '008592866', 'stopCode': 'MOTU', 'locationY': 6.148342, 'locationX': 46.210397, 'stopName': 'Monthoux'}, {'titleName': 'La Mouille', 'subTitleName': '', 'idTransportAPI': '008593200', 'stopCode': 'MOUI', 'locationY': 6.183346, 'locationX': 46.164723, 'stopName': 'La Mouille'}, {'titleName': 'Moulin la Grave', 'subTitleName': '', 'idTransportAPI': '008595012', 'stopCode': 'MOVE', 'locationY': 5.993764, 'locationX': 46.150358, 'stopName': 'Moulin la Grave'}, {'titleName': 'Maison des Parlements', 'subTitleName': '', 'idTransportAPI': '008592852', 'stopCode': 'MPAR', 'locationY': 6.123856, 'locationX': 46.225894, 'stopName': 'Maison des Parlements'}, {'titleName': 'Carouge', 'subTitleName': 'Marché', 'idTransportAPI': '008592677', 'stopCode': 'CAMA', 'locationY': 6.140387, 'locationX': 46.184328, 'stopName': 'Carouge Marché'}, {'titleName': 'Moulières', 'subTitleName': '', 'idTransportAPI': '008593098', 'stopCode': 'MRES', 'locationY': 6.061336, 'locationX': 46.21695, 'stopName': 'Moulières'}, {'titleName': 'Moulin Richelien', 'subTitleName': '', 'idTransportAPI': '008595675', 'stopCode': 'MRIC', 'locationY': 6.137717, 'locationX': 46.280962, 'stopName': 'Moulin Richelien'}, {'titleName': 'Merlinge', 'subTitleName': '', 'idTransportAPI': '008593002', 'stopCode': 'MRLG', 'locationY': 6.247314, 'locationX': 46.248646, 'stopName': 'Merlinge'}, {'titleName': 'Moraines', 'subTitleName': '', 'idTransportAPI': '008592678', 'stopCode': 'MRNE', 'locationY': 6.14445, 'locationX': 46.18227, 'stopName': 'Moraines'}, {'titleName': 'Martinet', 'subTitleName': '', 'idTransportAPI': '008592628', 'stopCode': 'MRTI', 'locationY': 5.986474, 'locationX': 46.158664, 'stopName': 'Martinet'}, {'titleName': 'Marsillon', 'subTitleName': '', 'idTransportAPI': '008593204', 'stopCode': 'MSIL', 'locationY': 6.154968, 'locationX': 46.167608, 'stopName': 'Marsillon'}, {'titleName': 'Maisonnette', 'subTitleName': '', 'idTransportAPI': '008592658', 'stopCode': 'MSNT', 'locationY': 6.048904, 'locationX': 46.163231, 'stopName': 'Maisonnette'}, {'titleName': 'Montesquiou', 'subTitleName': '', 'idTransportAPI': '008593039', 'stopCode': 'MSQU', 'locationY': 6.106066, 'locationX': 46.180894, 'stopName': 'Montesquiou'}, {'titleName': 'La Mousse', 'subTitleName': '', 'idTransportAPI': '008592708', 'stopCode': 'MSSE', 'locationY': 6.194808, 'locationX': 46.197614, 'stopName': 'La Mousse'}, {'titleName': 'Mont Blanc', 'subTitleName': '', 'idTransportAPI': '008592864', 'stopCode': 'MTBL', 'locationY': 6.14703, 'locationX': 46.207215, 'stopName': 'Mont Blanc'}, {'titleName': 'Montchoisy', 'subTitleName': '', 'idTransportAPI': '008592865', 'stopCode': 'MTCH', 'locationY': 6.166267, 'locationX': 46.203053, 'stopName': 'Montchoisy'}, {'titleName': 'Maison du Terroir', 'subTitleName': '', 'idTransportAPI': '008595014', 'stopCode': 'MTER', 'locationY': 6.076348, 'locationX': 46.166044, 'stopName': 'Maison du Terroir'}, {'titleName': 'Montfleury', 'subTitleName': '', 'idTransportAPI': '008593188', 'stopCode': 'MTFL', 'locationY': 6.163399, 'locationX': 46.291381, 'stopName': 'Montfleury'}, {'titleName': 'Meinier', 'subTitleName': 'Tour', 'idTransportAPI': '008587077', 'stopCode': 'MTOU', 'locationY': 6.231601, 'locationX': 46.245734, 'stopName': 'Meinier Tour'}, {'titleName': 'Motta', 'subTitleName': '', 'idTransportAPI': '008592867', 'stopCode': 'MTTA', 'locationY': 6.134131, 'locationX': 46.219045, 'stopName': 'Motta'}, {'titleName': \"Musée d'ethnographie\", 'subTitleName': '', 'idTransportAPI': '008592868', 'stopCode': 'MUET', 'locationY': 6.137412, 'locationX': 46.196994, 'stopName': \"Musée d'ethnographie\"}, {'titleName': 'Muguets', 'subTitleName': '', 'idTransportAPI': '008593206', 'stopCode': 'MUGE', 'locationY': 6.160235, 'locationX': 46.171285, 'stopName': 'Muguets'}, {'titleName': 'Murailles', 'subTitleName': '', 'idTransportAPI': '008593003', 'stopCode': 'MURA', 'locationY': 6.245264, 'locationX': 46.242066, 'stopName': 'Murailles'}, {'titleName': 'Muséum', 'subTitleName': '', 'idTransportAPI': '008592870', 'stopCode': 'MUSE', 'locationY': 6.157305, 'locationX': 46.198522, 'stopName': 'Muséum'}, {'titleName': 'Musée Voltaire', 'subTitleName': '', 'idTransportAPI': '008592869', 'stopCode': 'MUVO', 'locationY': 6.133906, 'locationX': 46.207179, 'stopName': 'Musée Voltaire'}, {'titleName': 'Moulin de Vert', 'subTitleName': '', 'idTransportAPI': '008592687', 'stopCode': 'MVER', 'locationY': 6.023725, 'locationX': 46.174018, 'stopName': 'Moulin de Vert'}, {'titleName': 'Meyrin', 'subTitleName': 'Village', 'idTransportAPI': '008593026', 'stopCode': 'MYRN', 'locationY': 6.072321, 'locationX': 46.229688, 'stopName': 'Meyrin Village'}, {'titleName': \"Nant d'Aisy\", 'subTitleName': '', 'idTransportAPI': '008592764', 'stopCode': 'NAIS', 'locationY': 6.219052, 'locationX': 46.270769, 'stopName': \"Nant d'Aisy\"}, {'titleName': 'Nant Malet', 'subTitleName': '', 'idTransportAPI': '008593063', 'stopCode': 'NAMA', 'locationY': 6.122669, 'locationX': 46.165649, 'stopName': 'Nant Malet'}, {'titleName': 'Le Nant', 'subTitleName': '', 'idTransportAPI': '008592647', 'stopCode': 'NANT', 'locationY': 6.128557, 'locationX': 46.246516, 'stopName': 'Le Nant'}, {'titleName': 'Nations', 'subTitleName': '', 'idTransportAPI': '008587058', 'stopCode': 'NATI', 'locationY': 6.138499, 'locationX': 46.222218, 'stopName': 'Nations'}, {'titleName': 'Navigation', 'subTitleName': '', 'idTransportAPI': '008592871', 'stopCode': 'NAVI', 'locationY': 6.149646, 'locationX': 46.211889, 'stopName': 'Navigation'}, {'titleName': 'Noirettes', 'subTitleName': '', 'idTransportAPI': '008593090', 'stopCode': 'NOIR', 'locationY': 6.015994, 'locationX': 46.192473, 'stopName': 'Noirettes'}, {'titleName': 'Neydens', 'subTitleName': 'Mouilles', 'idTransportAPI': '008595554', 'stopCode': 'NYLM', 'locationY': 6.096601, 'locationX': 46.1169, 'stopName': 'Neydens Mouilles'}, {'titleName': \"L'Ouchette\", 'subTitleName': '', 'idTransportAPI': '008595050', 'stopCode': 'OCHT', 'locationY': 6.25829, 'locationX': 46.275821, 'stopName': \"L'Ouchette\"}, {'titleName': 'OMS', 'subTitleName': '', 'idTransportAPI': '008587904', 'stopCode': 'OMS9', 'locationY': 6.134032, 'locationX': 46.233436, 'stopName': 'OMS'}, {'titleName': 'Onex', 'subTitleName': 'Cité', 'idTransportAPI': '008593030', 'stopCode': 'ONCI', 'locationY': 6.099729, 'locationX': 46.188679, 'stopName': 'Onex Cité'}, {'titleName': 'Onex', 'subTitleName': 'Salle communale', 'idTransportAPI': '008587080', 'stopCode': 'ONEX', 'locationY': 6.099801, 'locationX': 46.183411, 'stopName': 'Onex Salle communale'}, {'titleName': 'Onex', 'subTitleName': 'Marché', 'idTransportAPI': '008593038', 'stopCode': 'ONMA', 'locationY': 6.103307, 'locationX': 46.192104, 'stopName': 'Onex Marché'}, {'titleName': 'Ophtalmologie', 'subTitleName': '', 'idTransportAPI': '008592872', 'stopCode': 'OPHT', 'locationY': 6.148109, 'locationX': 46.191376, 'stopName': 'Ophtalmologie'}, {'titleName': 'Ormeaux', 'subTitleName': '', 'idTransportAPI': '008592873', 'stopCode': 'ORMA', 'locationY': 6.136531, 'locationX': 46.206019, 'stopName': 'Ormeaux'}, {'titleName': 'Les Ouches', 'subTitleName': '', 'idTransportAPI': '008595020', 'stopCode': 'OUCH', 'locationY': 6.117195, 'locationX': 46.210208, 'stopName': 'Les Ouches'}, {'titleName': 'Les Oulaines', 'subTitleName': '', 'idTransportAPI': '008592759', 'stopCode': 'OULA', 'locationY': 6.07926, 'locationX': 46.168471, 'stopName': 'Les Oulaines'}, {'titleName': 'Ornex Fruitière', 'subTitleName': '', 'idTransportAPI': '008593222', 'stopCode': 'OXFR', 'locationY': 6.096223, 'locationX': 46.272441, 'stopName': 'Ornex Fruitière'}, {'titleName': 'Parc des Anneaux', 'subTitleName': '', 'idTransportAPI': '008594943', 'stopCode': 'PAAN', 'locationY': 6.086632, 'locationX': 46.248538, 'stopName': 'Parc des Anneaux'}, {'titleName': \"Place d'Allemogne\", 'subTitleName': '', 'idTransportAPI': '008593237', 'stopCode': 'PAGN', 'locationY': 5.984038, 'locationX': 46.244601, 'stopName': \"Place d'Allemogne\"}, {'titleName': 'Pailly Balexert', 'subTitleName': '', 'idTransportAPI': '008593165', 'stopCode': 'PAIL', 'locationY': 6.114201, 'locationX': 46.219728, 'stopName': 'Pailly Balexert'}, {'titleName': 'Palettes', 'subTitleName': '', 'idTransportAPI': '008587908', 'stopCode': 'PALE', 'locationY': 6.121941, 'locationX': 46.177299, 'stopName': 'Palettes'}, {'titleName': 'Docteur Palluel', 'subTitleName': '', 'idTransportAPI': '008595046', 'stopCode': 'PALL', 'locationY': 6.076959, 'locationX': 46.142789, 'stopName': 'Docteur Palluel'}, {'titleName': 'Parcs', 'subTitleName': '', 'idTransportAPI': '008592876', 'stopCode': 'PARC', 'locationY': 6.167507, 'locationX': 46.209381, 'stopName': 'Parcs'}, {'titleName': 'La Passe', 'subTitleName': '', 'idTransportAPI': '008592686', 'stopCode': 'PASS', 'locationY': 6.021595, 'locationX': 46.16991, 'stopName': 'La Passe'}, {'titleName': 'Petit Bel Air', 'subTitleName': '', 'idTransportAPI': '008592711', 'stopCode': 'PBAL', 'locationY': 6.203258, 'locationX': 46.204015, 'stopName': 'Petit Bel Air'}, {'titleName': 'Pont Bochet', 'subTitleName': '', 'idTransportAPI': '008593109', 'stopCode': 'PBOC', 'locationY': 6.216714, 'locationX': 46.209786, 'stopName': 'Pont Bochet'}, {'titleName': 'Planche Brulée', 'subTitleName': '', 'idTransportAPI': '008594936', 'stopCode': 'PBRU', 'locationY': 6.100538, 'locationX': 46.255046, 'stopName': 'Planche Brulée'}, {'titleName': 'Pont Céard', 'subTitleName': '', 'idTransportAPI': '008593189', 'stopCode': 'PCEA', 'locationY': 6.163328, 'locationX': 46.287686, 'stopName': 'Pont Céard'}, {'titleName': 'Plateau Champel', 'subTitleName': '', 'idTransportAPI': '008592886', 'stopCode': 'PCHA', 'locationY': 6.153197, 'locationX': 46.191861, 'stopName': 'Plateau Champel'}, {'titleName': 'Pont de Drize', 'subTitleName': '', 'idTransportAPI': '008593125', 'stopCode': 'PDRI', 'locationY': 6.149143, 'locationX': 46.163581, 'stopName': 'Pont de Drize'}, {'titleName': 'Perly', 'subTitleName': 'Douane', 'idTransportAPI': '008593046', 'stopCode': 'PEDO', 'locationY': 6.090982, 'locationX': 46.152372, 'stopName': 'Perly Douane'}, {'titleName': 'Peillonnex', 'subTitleName': '', 'idTransportAPI': '008592709', 'stopCode': 'PEIL', 'locationY': 6.196552, 'locationX': 46.193974, 'stopName': 'Peillonnex'}, {'titleName': 'Perly', 'subTitleName': 'Mairie', 'idTransportAPI': '008593048', 'stopCode': 'PEMA', 'locationY': 6.089913, 'locationX': 46.155338, 'stopName': 'Perly Mairie'}, {'titleName': 'Penthes', 'subTitleName': '', 'idTransportAPI': '008593078', 'stopCode': 'PENT', 'locationY': 6.138778, 'locationX': 46.232259, 'stopName': 'Penthes'}, {'titleName': 'Petit Palais', 'subTitleName': '', 'idTransportAPI': '008592879', 'stopCode': 'PEPA', 'locationY': 6.151695, 'locationX': 46.197632, 'stopName': 'Petit Palais'}, {'titleName': 'Peschier', 'subTitleName': '', 'idTransportAPI': '008592878', 'stopCode': 'PESC', 'locationY': 6.153862, 'locationX': 46.194019, 'stopName': 'Peschier'}, {'titleName': 'Petray', 'subTitleName': '', 'idTransportAPI': '008592737', 'stopCode': 'PETR', 'locationY': 6.206269, 'locationX': 46.245365, 'stopName': 'Petray'}, {'titleName': 'Peupliers', 'subTitleName': '', 'idTransportAPI': '008592967', 'stopCode': 'PEUP', 'locationY': 6.280403, 'locationX': 46.238632, 'stopName': 'Peupliers'}, {'titleName': 'Perly', 'subTitleName': 'Village', 'idTransportAPI': '008587081', 'stopCode': 'PEVI', 'locationY': 6.094416, 'locationX': 46.155131, 'stopName': 'Perly Village'}, {'titleName': 'Pré Fleuri', 'subTitleName': '', 'idTransportAPI': '008593065', 'stopCode': 'PFLE', 'locationY': 6.107316, 'locationX': 46.166314, 'stopName': 'Pré Fleuri'}, {'titleName': 'Pré la Fontaine', 'subTitleName': '', 'idTransportAPI': '008593099', 'stopCode': 'PFON', 'locationY': 6.057264, 'locationX': 46.223917, 'stopName': 'Pré la Fontaine'}, {'titleName': 'Parfumerie', 'subTitleName': '', 'idTransportAPI': '008593166', 'stopCode': 'PFUM', 'locationY': 6.077274, 'locationX': 46.206244, 'stopName': 'Parfumerie'}, {'titleName': 'Petite Grave', 'subTitleName': '', 'idTransportAPI': '008587072', 'stopCode': 'PGRA', 'locationY': 6.040921, 'locationX': 46.173604, 'stopName': 'Petite Grave'}, {'titleName': 'Philosophes', 'subTitleName': '', 'idTransportAPI': '008592881', 'stopCode': 'PHIL', 'locationY': 6.146194, 'locationX': 46.196724, 'stopName': 'Philosophes'}, {'titleName': 'Pierre à Bochet', 'subTitleName': '', 'idTransportAPI': '008593120', 'stopCode': 'PIBO', 'locationY': 6.210916, 'locationX': 46.197929, 'stopName': 'Pierre à Bochet'}, {'titleName': 'Lancy', 'subTitleName': 'Piscine', 'idTransportAPI': '008592991', 'stopCode': 'PICY', 'locationY': 6.121519, 'locationX': 46.179312, 'stopName': 'Piscine de Lancy'}, {'titleName': 'Pinchat la Tour', 'subTitleName': '', 'idTransportAPI': '008593208', 'stopCode': 'PINC', 'locationY': 6.152711, 'locationX': 46.175816, 'stopName': 'Pinchat la Tour'}, {'titleName': 'Pré Jardinier', 'subTitleName': '', 'idTransportAPI': '008595037', 'stopCode': 'PJAR', 'locationY': 6.126103, 'locationX': 46.162754, 'stopName': 'Pré Jardinier'}, {'titleName': 'La Plaine', 'subTitleName': 'Gare', 'idTransportAPI': '008587073', 'stopCode': 'PLAI', 'locationY': 5.999769, 'locationX': 46.178494, 'stopName': 'La Plaine Gare'}, {'titleName': 'Palladium', 'subTitleName': '', 'idTransportAPI': '008592874', 'stopCode': 'PLDI', 'locationY': 6.135856, 'locationX': 46.203269, 'stopName': 'Palladium'}, {'titleName': 'La Plaine', 'subTitleName': 'Douane', 'idTransportAPI': '008594947', 'stopCode': 'PLDO', 'locationY': 5.991337, 'locationX': 46.177541, 'stopName': 'La Plaine Douane'}, {'titleName': 'La Plaine', 'subTitleName': 'Ecole', 'idTransportAPI': '008592768', 'stopCode': 'PLEC', 'locationY': 6.003122, 'locationX': 46.177901, 'stopName': 'La Plaine Ecole'}, {'titleName': 'Eaux Vives', 'subTitleName': 'Place', 'idTransportAPI': '008592883', 'stopCode': 'PLEV', 'locationY': 6.155453, 'locationX': 46.20254, 'stopName': 'Place des Eaux Vives'}, {'titleName': 'Palais Eynard', 'subTitleName': '', 'idTransportAPI': '008595021', 'stopCode': 'PLEY', 'locationY': 6.147129, 'locationX': 46.19988, 'stopName': 'Palais Eynard'}, {'titleName': 'Genève', 'subTitleName': 'Plage', 'idTransportAPI': '008587059', 'stopCode': 'PLGE', 'locationY': 6.17238, 'locationX': 46.211584, 'stopName': 'Genève Plage'}, {'titleName': 'Lion', 'subTitleName': '', 'idTransportAPI': '008593230', 'stopCode': 'PLIO', 'locationY': 6.026071, 'locationX': 46.242003, 'stopName': 'Lion'}, {'titleName': 'Pallanterie', 'subTitleName': '', 'idTransportAPI': '008587071', 'stopCode': 'PLLT', 'locationY': 6.216157, 'locationX': 46.247478, 'stopName': 'Pallanterie'}, {'titleName': 'Planet', 'subTitleName': '', 'idTransportAPI': '008592648', 'stopCode': 'PLNT', 'locationY': 6.138922, 'locationX': 46.256539, 'stopName': 'Planet'}, {'titleName': 'Plan les Ouates', 'subTitleName': '', 'idTransportAPI': '008593050', 'stopCode': 'PLOU', 'locationY': 6.11137, 'locationX': 46.165406, 'stopName': 'Plan les Ouates'}, {'titleName': 'Plainpalais', 'subTitleName': '', 'idTransportAPI': '008587907', 'stopCode': 'PLPA', 'locationY': 6.143165, 'locationX': 46.198145, 'stopName': 'Plainpalais'}, {'titleName': 'Pré Lauret', 'subTitleName': '', 'idTransportAPI': '008592666', 'stopCode': 'PLRT', 'locationY': 6.057533, 'locationX': 46.158655, 'stopName': 'Pré Lauret'}, {'titleName': 'Planta', 'subTitleName': '', 'idTransportAPI': '008593136', 'stopCode': 'PLTA', 'locationY': 6.190565, 'locationX': 46.21419, 'stopName': 'Planta'}, {'titleName': 'Pont de Lully', 'subTitleName': '', 'idTransportAPI': '008592661', 'stopCode': 'PLUL', 'locationY': 6.075584, 'locationX': 46.163491, 'stopName': 'Pont de Lully'}, {'titleName': 'Puplinge', 'subTitleName': 'Marquis', 'idTransportAPI': '008593087', 'stopCode': 'PMAR', 'locationY': 6.234432, 'locationX': 46.213274, 'stopName': 'Puplinge Marquis'}, {'titleName': 'Petit Miolan', 'subTitleName': '', 'idTransportAPI': '008592718', 'stopCode': 'PMIO', 'locationY': 6.218063, 'locationX': 46.220366, 'stopName': 'Petit Miolan'}, {'titleName': 'Place de Neuve', 'subTitleName': '', 'idTransportAPI': '008592885', 'stopCode': 'PNEV', 'locationY': 6.14418, 'locationX': 46.201201, 'stopName': 'Place de Neuve'}, {'titleName': 'Poizat', 'subTitleName': '', 'idTransportAPI': '008594951', 'stopCode': 'POAT', 'locationY': 5.974779, 'locationX': 46.181164, 'stopName': 'Poizat'}, {'titleName': 'Port Choiseul', 'subTitleName': '', 'idTransportAPI': '008593190', 'stopCode': 'POCH', 'locationY': 6.165791, 'locationX': 46.29014, 'stopName': 'Port Choiseul'}, {'titleName': 'Pougny', 'subTitleName': 'Gare', 'idTransportAPI': '008587917', 'stopCode': 'POGA', 'locationY': 5.96054, 'locationX': 46.143643, 'stopName': 'Pougny Gare'}, {'titleName': 'Place en Poulet', 'subTitleName': '', 'idTransportAPI': '008593238', 'stopCode': 'POLT', 'locationY': 5.989449, 'locationX': 46.247388, 'stopName': 'Place en Poulet'}, {'titleName': 'Le Pommier', 'subTitleName': '', 'idTransportAPI': '008592945', 'stopCode': 'POMI', 'locationY': 6.124647, 'locationX': 46.230731, 'stopName': 'Le Pommier'}, {'titleName': 'Pontets', 'subTitleName': '', 'idTransportAPI': '008592992', 'stopCode': 'PONT', 'locationY': 6.1232, 'locationX': 46.172957, 'stopName': 'Pontets'}, {'titleName': 'Poste', 'subTitleName': '', 'idTransportAPI': '008592888', 'stopCode': 'POST', 'locationY': 6.141232, 'locationX': 46.212932, 'stopName': 'Poste'}, {'titleName': 'Poterie', 'subTitleName': '', 'idTransportAPI': '008592889', 'stopCode': 'POTE', 'locationY': 6.133591, 'locationX': 46.21179, 'stopName': 'Poterie'}, {'titleName': 'Peney', 'subTitleName': 'Dessous', 'idTransportAPI': '008587388', 'stopCode': 'POUS', 'locationY': 6.043762, 'locationX': 46.200833, 'stopName': 'Peney Dessous'}, {'titleName': 'Peney', 'subTitleName': 'Dessus', 'idTransportAPI': '008595672', 'stopCode': 'PSUS', 'locationY': 6.036571, 'locationX': 46.20041, 'stopName': 'Peney Dessus'}, {'titleName': 'Prés Palais', 'subTitleName': '', 'idTransportAPI': '008592765', 'stopCode': 'PPAL', 'locationY': 6.216544, 'locationX': 46.266634, 'stopName': 'Prés Palais'}, {'titleName': 'Plateau Pinchat', 'subTitleName': '', 'idTransportAPI': '008587036', 'stopCode': 'PPIN', 'locationY': 6.142473, 'locationX': 46.171725, 'stopName': 'Plateau Pinchat'}, {'titleName': 'Prénépla', 'subTitleName': '', 'idTransportAPI': '008593041', 'stopCode': 'PPLA', 'locationY': 6.098533, 'locationX': 46.2696, 'stopName': 'Prénépla'}, {'titleName': 'Pré Polly', 'subTitleName': '', 'idTransportAPI': '008592662', 'stopCode': 'PPOL', 'locationY': 6.067574, 'locationX': 46.161864, 'stopName': 'Pré Polly'}, {'titleName': 'P47', 'subTitleName': 'P+R', 'idTransportAPI': '008592949', 'stopCode': 'PR47', 'locationY': 6.123299, 'locationX': 46.239792, 'stopName': 'P+R P47'}, {'titleName': 'Bernex', 'subTitleName': 'P+R', 'idTransportAPI': '008592660', 'stopCode': 'PRBE', 'locationY': 6.084564, 'locationX': 46.17844, 'stopName': 'P+R Bernex'}, {'titleName': 'La Prêle', 'subTitleName': '', 'idTransportAPI': '008592721', 'stopCode': 'PREL', 'locationY': 6.12409, 'locationX': 46.26791, 'stopName': 'La Prêle'}, {'titleName': 'Prevessin Möens', 'subTitleName': 'Mairie', 'idTransportAPI': '008594939', 'stopCode': 'PREV', 'locationY': 6.082317, 'locationX': 46.254615, 'stopName': 'Prevessin Möens Mairie'}, {'titleName': 'Gare Meyrin', 'subTitleName': 'P+R', 'idTransportAPI': '000000037', 'stopCode': 'PRGM', 'locationY': 6.076914, 'locationX': 46.222335, 'stopName': 'P+R Gare Meyrin'}, {'titleName': 'Progrès', 'subTitleName': '', 'idTransportAPI': '008593168', 'stopCode': 'PRGR', 'locationY': 6.07588, 'locationX': 46.210613, 'stopName': 'Progrès'}, {'titleName': 'La Pralay', 'subTitleName': '', 'idTransportAPI': '008592932', 'stopCode': 'PRLA', 'locationY': 6.158374, 'locationX': 46.268638, 'stopName': 'La Pralay'}, {'titleName': 'Pré Monnard', 'subTitleName': '', 'idTransportAPI': '008592993', 'stopCode': 'PRMO', 'locationY': 6.116413, 'locationX': 46.186423, 'stopName': 'Pré Monnard'}, {'titleName': 'Perly', 'subTitleName': 'P+R', 'idTransportAPI': '008593049', 'stopCode': 'PRPE', 'locationY': 6.089086, 'locationX': 46.15079, 'stopName': 'P+R Perly'}, {'titleName': 'Prairie', 'subTitleName': '', 'idTransportAPI': '008592890', 'stopCode': 'PRRI', 'locationY': 6.13574, 'locationX': 46.2085, 'stopName': 'Prairie'}, {'titleName': 'Sous Moulin', 'subTitleName': 'P+R', 'idTransportAPI': '008588310', 'stopCode': 'PRSM', 'locationY': 6.19221, 'locationX': 46.190459, 'stopName': 'P+R Sous Moulin'}, {'titleName': 'Printanière', 'subTitleName': '', 'idTransportAPI': '008592629', 'stopCode': 'PRTN', 'locationY': 6.005513, 'locationX': 46.173649, 'stopName': 'Printanière'}, {'titleName': 'Prulay', 'subTitleName': '', 'idTransportAPI': '008595031', 'stopCode': 'PRUL', 'locationY': 6.075053, 'locationX': 46.231935, 'stopName': 'Prulay'}, {'titleName': 'Veigy', 'subTitleName': 'P+R', 'idTransportAPI': '008595051', 'stopCode': 'PRVG', 'locationY': 6.247467, 'locationX': 46.276782, 'stopName': 'P+R Veigy'}, {'titleName': 'Préventorium', 'subTitleName': '', 'idTransportAPI': '008592994', 'stopCode': 'PRVT', 'locationY': 6.133618, 'locationX': 46.172696, 'stopName': 'Préventorium'}, {'titleName': 'Petit Saconnex', 'subTitleName': '', 'idTransportAPI': '008592880', 'stopCode': 'PSAC', 'locationY': 6.128494, 'locationX': 46.223009, 'stopName': 'Petit Saconnex'}, {'titleName': 'Presinge', 'subTitleName': '', 'idTransportAPI': '008587085', 'stopCode': 'PSGE', 'locationY': 6.253471, 'locationX': 46.219135, 'stopName': 'Presinge'}, {'titleName': 'Pont Sierne', 'subTitleName': '', 'idTransportAPI': '008593210', 'stopCode': 'PSIE', 'locationY': 6.182088, 'locationX': 46.178692, 'stopName': 'Pont Sierne'}, {'titleName': 'Passeiry', 'subTitleName': '', 'idTransportAPI': '008592638', 'stopCode': 'PSRY', 'locationY': 6.002996, 'locationX': 46.156084, 'stopName': 'Passeiry'}, {'titleName': 'Peissy', 'subTitleName': '', 'idTransportAPI': '008587416', 'stopCode': 'PSSY', 'locationY': 6.020057, 'locationX': 46.210568, 'stopName': 'Peissy'}, {'titleName': 'Parc Stagni', 'subTitleName': '', 'idTransportAPI': '008592698', 'stopCode': 'PSTA', 'locationY': 6.186672, 'locationX': 46.195781, 'stopName': 'Parc Stagni'}, {'titleName': 'Plein Sud', 'subTitleName': '', 'idTransportAPI': '008593121', 'stopCode': 'PSUD', 'locationY': 6.21898, 'locationX': 46.202406, 'stopName': 'Plein Sud'}, {'titleName': \"Pont d'Arve\", 'subTitleName': '', 'idTransportAPI': '008592887', 'stopCode': 'PTAR', 'locationY': 6.143425, 'locationX': 46.1949, 'stopName': \"Pont d'Arve\"}, {'titleName': 'Petit Lancy', 'subTitleName': '', 'idTransportAPI': '008587082', 'stopCode': 'PTLA', 'locationY': 6.118031, 'locationX': 46.189749, 'stopName': 'Petit Lancy'}, {'titleName': 'Les Petoux', 'subTitleName': '', 'idTransportAPI': '008593086', 'stopCode': 'PTOU', 'locationY': 6.227142, 'locationX': 46.206433, 'stopName': 'Les Petoux'}, {'titleName': 'Pont de Peney', 'subTitleName': '', 'idTransportAPI': '008592619', 'stopCode': 'PTPE', 'locationY': 6.043537, 'locationX': 46.192787, 'stopName': 'Pont de Peney'}, {'titleName': 'Puplinge', 'subTitleName': 'Mairie', 'idTransportAPI': '008587086', 'stopCode': 'PUMA', 'locationY': 6.232077, 'locationX': 46.210918, 'stopName': 'Puplinge Mairie'}, {'titleName': 'Petit Veyrier', 'subTitleName': '', 'idTransportAPI': '008593207', 'stopCode': 'PVEY', 'locationY': 6.182304, 'locationX': 46.17035, 'stopName': 'Petit Veyrier'}, {'titleName': 'Place Verte', 'subTitleName': '', 'idTransportAPI': '008593209', 'stopCode': 'PVRT', 'locationY': 6.156936, 'locationX': 46.169829, 'stopName': 'Place Verte'}, {'titleName': 'Palexpo Halle 7', 'subTitleName': '', 'idTransportAPI': '008592937', 'stopCode': 'PXPH', 'locationY': 6.115882, 'locationX': 46.235872, 'stopName': 'Palexpo Halle 7'}, {'titleName': 'Palexpo', 'subTitleName': '', 'idTransportAPI': '008592950', 'stopCode': 'PXPO', 'locationY': 6.118381, 'locationX': 46.233508, 'stopName': 'Palexpo'}, {'titleName': 'Pregny', 'subTitleName': 'Mairie', 'idTransportAPI': '008593077', 'stopCode': 'PYMA', 'locationY': 6.141196, 'locationX': 46.237329, 'stopName': 'Pregny Mairie'}, {'titleName': 'Pregny', 'subTitleName': 'Village', 'idTransportAPI': '008587084', 'stopCode': 'PYVI', 'locationY': 6.13956, 'locationX': 46.234569, 'stopName': 'Pregny Village'}, {'titleName': \"Queue d'Arve\", 'subTitleName': '', 'idTransportAPI': '008592891', 'stopCode': 'QARV', 'locationY': 6.129384, 'locationX': 46.195826, 'stopName': \"Queue d'Arve\"}, {'titleName': 'Quidort', 'subTitleName': '', 'idTransportAPI': '008592995', 'stopCode': 'QUID', 'locationY': 6.123901, 'locationX': 46.19383, 'stopName': 'Quidort'}, {'titleName': 'Les Quoattes', 'subTitleName': '', 'idTransportAPI': '008592637', 'stopCode': 'QUOA', 'locationY': 5.995382, 'locationX': 46.152776, 'stopName': 'Les Quoattes'}, {'titleName': \"Route d'Annecy\", 'subTitleName': '', 'idTransportAPI': '008592643', 'stopCode': 'RANN', 'locationY': 6.139156, 'locationX': 46.154071, 'stopName': \"Route d'Annecy\"}, {'titleName': 'Ravières', 'subTitleName': '', 'idTransportAPI': '008595034', 'stopCode': 'RAVI', 'locationY': 6.093463, 'locationX': 46.155716, 'stopName': 'Ravières'}, {'titleName': 'Route de Corsinge', 'subTitleName': '', 'idTransportAPI': '008593006', 'stopCode': 'RCOR', 'locationY': 6.237381, 'locationX': 46.246264, 'stopName': 'Route de Corsinge'}, {'titleName': 'Route de Compois', 'subTitleName': '', 'idTransportAPI': '008593005', 'stopCode': 'RCPS', 'locationY': 6.242621, 'locationX': 46.237473, 'stopName': 'Route de Compois'}, {'titleName': 'Chemin de Roday', 'subTitleName': '', 'idTransportAPI': '008593055', 'stopCode': 'RDAY', 'locationY': 6.138949, 'locationX': 46.162781, 'stopName': 'Chemin de Roday'}, {'titleName': 'Le Renfort', 'subTitleName': '', 'idTransportAPI': '008592636', 'stopCode': 'REFT', 'locationY': 6.009513, 'locationX': 46.144308, 'stopName': 'Le Renfort'}, {'titleName': 'Renfile', 'subTitleName': '', 'idTransportAPI': '008593169', 'stopCode': 'RENF', 'locationY': 6.095693, 'locationX': 46.219081, 'stopName': 'Renfile'}, {'titleName': 'Repentance', 'subTitleName': '', 'idTransportAPI': '008592738', 'stopCode': 'REPE', 'locationY': 6.223411, 'locationX': 46.255226, 'stopName': 'Repentance'}, {'titleName': 'Reverdin', 'subTitleName': '', 'idTransportAPI': '008592892', 'stopCode': 'REVE', 'locationY': 6.150374, 'locationX': 46.190243, 'stopName': 'Reverdin'}, {'titleName': 'Route de Feigères', 'subTitleName': '', 'idTransportAPI': '008595552', 'stopCode': 'RFEI', 'locationY': 6.078424, 'locationX': 46.137423, 'stopName': 'Route de Feigères'}, {'titleName': 'Riant Parc', 'subTitleName': '', 'idTransportAPI': '008592893', 'stopCode': 'RIAN', 'locationY': 6.119172, 'locationX': 46.22158, 'stopName': 'Riant Parc'}, {'titleName': 'Richelien', 'subTitleName': '', 'idTransportAPI': '008595667', 'stopCode': 'RICH', 'locationY': 6.145834, 'locationX': 46.282751, 'stopName': 'Richelien'}, {'titleName': 'Rieu', 'subTitleName': '', 'idTransportAPI': '008592894', 'stopCode': 'RIEU', 'locationY': 6.16677, 'locationX': 46.19623, 'stopName': 'Rieu'}, {'titleName': 'Rigot', 'subTitleName': '', 'idTransportAPI': '008592895', 'stopCode': 'RIGO', 'locationY': 6.14463, 'locationX': 46.223431, 'stopName': 'Rigot'}, {'titleName': 'Rippaz', 'subTitleName': '', 'idTransportAPI': '008592750', 'stopCode': 'RIPP', 'locationY': 6.196579, 'locationX': 46.22851, 'stopName': 'Rippaz'}, {'titleName': 'Rive', 'subTitleName': '', 'idTransportAPI': '008587061', 'stopCode': 'RIVE', 'locationY': 6.15281, 'locationX': 46.201866, 'stopName': 'Rive'}, {'titleName': 'Rue du Lac', 'subTitleName': '', 'idTransportAPI': '008592900', 'stopCode': 'RLAC', 'locationY': 6.157853, 'locationX': 46.203763, 'stopName': 'Rue du Lac'}, {'titleName': 'Route de Lullier', 'subTitleName': '', 'idTransportAPI': '008592969', 'stopCode': 'RLUL', 'locationY': 6.248986, 'locationX': 46.225849, 'stopName': 'Route de Lullier'}, {'titleName': 'Rue des Mouettes', 'subTitleName': '', 'idTransportAPI': '008592680', 'stopCode': 'RMOU', 'locationY': 6.136827, 'locationX': 46.188652, 'stopName': 'Rue des Mouettes'}, {'titleName': 'Rue des Muguets', 'subTitleName': '', 'idTransportAPI': '008595553', 'stopCode': 'RMUG', 'locationY': 6.080582, 'locationX': 46.136632, 'stopName': 'Rue des Muguets'}, {'titleName': 'Roches', 'subTitleName': '', 'idTransportAPI': '008592896', 'stopCode': 'ROCH', 'locationY': 6.162231, 'locationX': 46.200005, 'stopName': 'Roches'}, {'titleName': 'Roseraie', 'subTitleName': '', 'idTransportAPI': '008592898', 'stopCode': 'ROSE', 'locationY': 6.150563, 'locationX': 46.192769, 'stopName': 'Roseraie'}, {'titleName': 'Rouette', 'subTitleName': '', 'idTransportAPI': '008592719', 'stopCode': 'ROUE', 'locationY': 6.213101, 'locationX': 46.230919, 'stopName': 'Rouette'}, {'titleName': 'Collège Rousseau', 'subTitleName': '', 'idTransportAPI': '008592809', 'stopCode': 'ROUS', 'locationY': 6.121087, 'locationX': 46.218191, 'stopName': 'Collège Rousseau'}, {'titleName': 'Le Reposoir', 'subTitleName': '', 'idTransportAPI': '008593202', 'stopCode': 'RPOS', 'locationY': 6.177503, 'locationX': 46.169146, 'stopName': 'Le Reposoir'}, {'titleName': 'Route de Presinge', 'subTitleName': '', 'idTransportAPI': '008593007', 'stopCode': 'RPRS', 'locationY': 6.247251, 'locationX': 46.226793, 'stopName': 'Route de Presinge'}, {'titleName': 'Route de St Maurice', 'subTitleName': '', 'idTransportAPI': '008592727', 'stopCode': 'RSMA', 'locationY': 6.207545, 'locationX': 46.256611, 'stopName': 'Route de St Maurice'}, {'titleName': \"Route d'Epeisses\", 'subTitleName': '', 'idTransportAPI': '008592630', 'stopCode': 'RTEP', 'locationY': 5.995948, 'locationX': 46.168265, 'stopName': \"Route d'Epeisses\"}, {'titleName': 'Rochette', 'subTitleName': '', 'idTransportAPI': '008593042', 'stopCode': 'RTTE', 'locationY': 6.102129, 'locationX': 46.182737, 'stopName': 'Rochette'}, {'titleName': 'Russin Village', 'subTitleName': '', 'idTransportAPI': '008587087', 'stopCode': 'RUSS', 'locationY': 6.013648, 'locationX': 46.188499, 'stopName': 'Russin Village'}, {'titleName': 'Ruth', 'subTitleName': '', 'idTransportAPI': '008592751', 'stopCode': 'RUTH', 'locationY': 6.185171, 'locationX': 46.227396, 'stopName': 'Ruth'}, {'titleName': 'Rivolette', 'subTitleName': '', 'idTransportAPI': '008593126', 'stopCode': 'RVTT', 'locationY': 6.144819, 'locationX': 46.168049, 'stopName': 'Rivolette'}, {'titleName': 'Veyrier', 'subTitleName': 'Salle Communale', 'idTransportAPI': '008593212', 'stopCode': 'SACO', 'locationY': 6.184776, 'locationX': 46.168175, 'stopName': 'Veyrier Salle Communale'}, {'titleName': 'Le Saugy', 'subTitleName': '', 'idTransportAPI': '008595023', 'stopCode': 'SAGY', 'locationY': 6.157718, 'locationX': 46.260179, 'stopName': 'Le Saugy'}, {'titleName': 'Belle Idée Salève', 'subTitleName': '', 'idTransportAPI': '008592714', 'stopCode': 'BISA', 'locationY': 6.206503, 'locationX': 46.205291, 'stopName': 'Belle Idée Salève'}, {'titleName': 'Saint Antoine', 'subTitleName': '', 'idTransportAPI': '008592907', 'stopCode': 'SANT', 'locationY': 6.150976, 'locationX': 46.199907, 'stopName': 'Saint Antoine'}, {'titleName': \"Saconnex d'Arve\", 'subTitleName': '', 'idTransportAPI': '008587088', 'stopCode': 'SARV', 'locationY': 6.126364, 'locationX': 46.162727, 'stopName': \"Saconnex d'Arve\"}, {'titleName': 'Saussac', 'subTitleName': '', 'idTransportAPI': '008593127', 'stopCode': 'SAUS', 'locationY': 6.148459, 'locationX': 46.162206, 'stopName': 'Saussac'}, {'titleName': 'Sainte Cécile', 'subTitleName': '', 'idTransportAPI': '008593019', 'stopCode': 'SCEC', 'locationY': 6.083288, 'locationX': 46.235432, 'stopName': 'Sainte Cécile'}, {'titleName': 'Seuchat', 'subTitleName': '', 'idTransportAPI': '008592722', 'stopCode': 'SCHA', 'locationY': 6.122624, 'locationX': 46.273978, 'stopName': 'Seuchat'}, {'titleName': 'Sainte Clotilde', 'subTitleName': '', 'idTransportAPI': '008592908', 'stopCode': 'SCLO', 'locationY': 6.132827, 'locationX': 46.199808, 'stopName': 'Sainte Clotilde'}, {'titleName': 'Sécheron', 'subTitleName': '', 'idTransportAPI': '008516283', 'stopCode': 'SECH', 'locationY': 6.144558, 'locationX': 46.222434, 'stopName': 'Sécheron'}, {'titleName': 'Sellières', 'subTitleName': '', 'idTransportAPI': '008756700', 'stopCode': 'SELI', 'locationY': 5.536393, 'locationX': 46.823066, 'stopName': 'Sellières'}, {'titleName': 'Sézenove', 'subTitleName': '', 'idTransportAPI': '008587090', 'stopCode': 'SENV', 'locationY': 6.056374, 'locationX': 46.164381, 'stopName': 'Sézenove'}, {'titleName': 'Servette', 'subTitleName': '', 'idTransportAPI': '008592903', 'stopCode': 'SERV', 'locationY': 6.130526, 'locationX': 46.213238, 'stopName': 'Servette'}, {'titleName': 'Seujet', 'subTitleName': '', 'idTransportAPI': '008592904', 'stopCode': 'SEUJ', 'locationY': 6.132342, 'locationX': 46.203952, 'stopName': 'Seujet'}, {'titleName': 'Sézenove', 'subTitleName': 'Village', 'idTransportAPI': '008595043', 'stopCode': 'SEVI', 'locationY': 6.056374, 'locationX': 46.164381, 'stopName': 'Sézenove Village'}, {'titleName': 'Seymaz', 'subTitleName': '', 'idTransportAPI': '008592700', 'stopCode': 'SEYM', 'locationY': 6.201073, 'locationX': 46.206882, 'stopName': 'Seymaz'}, {'titleName': 'Sézegnin', 'subTitleName': '', 'idTransportAPI': '008587089', 'stopCode': 'SEZG', 'locationY': 6.011356, 'locationX': 46.1442, 'stopName': 'Sézegnin'}, {'titleName': 'Sergy', 'subTitleName': 'Bourg', 'idTransportAPI': '008587919', 'stopCode': 'SGBO', 'locationY': 5.999265, 'locationX': 46.252718, 'stopName': 'Sergy Bourg'}, {'titleName': 'Sergy', 'subTitleName': 'Gare', 'idTransportAPI': '008593227', 'stopCode': 'SGGA', 'locationY': 6.01132, 'locationX': 46.248475, 'stopName': 'Sergy Gare'}, {'titleName': 'Ségny', 'subTitleName': '', 'idTransportAPI': '008587915', 'stopCode': 'SGNY', 'locationY': 6.075728, 'locationX': 46.296073, 'stopName': 'Ségny'}, {'titleName': 'Schuman', 'subTitleName': '', 'idTransportAPI': '008587921', 'stopCode': 'SHUM', 'locationY': 6.034791, 'locationX': 46.242686, 'stopName': 'Schuman'}, {'titleName': 'Sierne', 'subTitleName': '', 'idTransportAPI': '008593213', 'stopCode': 'SIER', 'locationY': 6.179697, 'locationX': 46.177056, 'stopName': 'Sierne'}, {'titleName': 'SIG Lignon', 'subTitleName': '', 'idTransportAPI': '008593171', 'stopCode': 'SIGL', 'locationY': 6.103567, 'locationX': 46.206163, 'stopName': 'SIG Lignon'}, {'titleName': 'Signal', 'subTitleName': '', 'idTransportAPI': '008595052', 'stopCode': 'SIGN', 'locationY': 6.085067, 'locationX': 46.220024, 'stopName': 'Signal'}, {'titleName': 'Sillons', 'subTitleName': '', 'idTransportAPI': '008593122', 'stopCode': 'SILO', 'locationY': 6.215447, 'locationX': 46.20059, 'stopName': 'Sillons'}, {'titleName': 'Sismondi', 'subTitleName': '', 'idTransportAPI': '008592905', 'stopCode': 'SIMO', 'locationY': 6.141439, 'locationX': 46.221004, 'stopName': 'Sismondi'}, {'titleName': 'Sionnet', 'subTitleName': '', 'idTransportAPI': '008592970', 'stopCode': 'SION', 'locationY': 6.250622, 'locationX': 46.233481, 'stopName': 'Sionnet'}, {'titleName': 'Léonard Sismondi', 'subTitleName': '', 'idTransportAPI': '008592696', 'stopCode': 'SISM', 'locationY': 6.195599, 'locationX': 46.201821, 'stopName': 'Léonard Sismondi'}, {'titleName': 'St Julien', 'subTitleName': 'Centre', 'idTransportAPI': '008587092', 'stopCode': 'SJCE', 'locationY': 6.080366, 'locationX': 46.145252, 'stopName': 'St Julien Centre'}, {'titleName': 'St Julien', 'subTitleName': 'Gare', 'idTransportAPI': '008594956', 'stopCode': 'SJGA', 'locationY': 6.085193, 'locationX': 46.142771, 'stopName': 'St Julien Gare'}, {'titleName': 'St Julien', 'subTitleName': 'Hôpital', 'idTransportAPI': '008595045', 'stopCode': 'SJHO', 'locationY': 6.08015, 'locationX': 46.146142, 'stopName': 'St Julien Hôpital'}, {'titleName': 'Lathoy', 'subTitleName': 'Hameau', 'idTransportAPI': '008595327', 'stopCode': 'SJLH', 'locationY': 6.104349, 'locationX': 46.141279, 'stopName': 'Lathoy Hameau'}, {'titleName': 'Route de Lathoy', 'subTitleName': '', 'idTransportAPI': '008595328', 'stopCode': 'SJRL', 'locationY': 6.095261, 'locationX': 46.143302, 'stopName': 'Route de Lathoy'}, {'titleName': 'St Julien', 'subTitleName': 'SNCF', 'idTransportAPI': '008595551', 'stopCode': 'SJSN', 'locationY': 6.085616, 'locationX': 46.142295, 'stopName': 'St Julien (SNCF)'}, {'titleName': 'Saut du Loup', 'subTitleName': '', 'idTransportAPI': '008592715', 'stopCode': 'SLOU', 'locationY': 6.200147, 'locationX': 46.201668, 'stopName': 'Saut du Loup'}, {'titleName': 'La Salésienne', 'subTitleName': '', 'idTransportAPI': '008593201', 'stopCode': 'SLSI', 'locationY': 6.180578, 'locationX': 46.168867, 'stopName': 'La Salésienne'}, {'titleName': 'Saint Maurice', 'subTitleName': '', 'idTransportAPI': '008587433', 'stopCode': 'SMAU', 'locationY': 6.216669, 'locationX': 46.253365, 'stopName': 'Saint Maurice'}, {'titleName': 'Contrat Social', 'subTitleName': '', 'idTransportAPI': '008592811', 'stopCode': 'SOCI', 'locationY': 6.122481, 'locationX': 46.206406, 'stopName': 'Contrat Social'}, {'titleName': 'Le Soleil', 'subTitleName': '', 'idTransportAPI': '008592762', 'stopCode': 'SOLE', 'locationY': 6.22832, 'locationX': 46.259577, 'stopName': 'Le Soleil'}, {'titleName': 'Sorbier', 'subTitleName': '', 'idTransportAPI': '008577652', 'stopCode': 'SORB', 'locationY': 6.795305, 'locationX': 46.662204, 'stopName': 'Sorbier'}, {'titleName': 'Soral', 'subTitleName': 'Mairie', 'idTransportAPI': '008587091', 'stopCode': 'SRMA', 'locationY': 6.040391, 'locationX': 46.142789, 'stopName': 'Soral Mairie'}, {'titleName': 'Serves', 'subTitleName': '', 'idTransportAPI': '008593068', 'stopCode': 'SRVE', 'locationY': 6.132773, 'locationX': 46.16697, 'stopName': 'Serves'}, {'titleName': 'Soral', 'subTitleName': 'Village', 'idTransportAPI': '008595044', 'stopCode': 'SRVI', 'locationY': 6.043465, 'locationX': 46.144209, 'stopName': 'Soral Village'}, {'titleName': 'Sous Chevrens', 'subTitleName': '', 'idTransportAPI': '008595016', 'stopCode': 'SSCH', 'locationY': 6.233974, 'locationX': 46.28659, 'stopName': 'Sous Chevrens'}, {'titleName': 'De Staël', 'subTitleName': '', 'idTransportAPI': '008592670', 'stopCode': 'STAL', 'locationY': 6.132656, 'locationX': 46.176139, 'stopName': 'De Staël'}, {'titleName': 'Stade de Genève', 'subTitleName': '', 'idTransportAPI': '008588802', 'stopCode': 'STGE', 'locationY': 6.129438, 'locationX': 46.179636, 'stopName': 'Stade de Genève'}, {'titleName': 'Laconnex', 'subTitleName': 'Stand', 'idTransportAPI': '008592973', 'stopCode': 'STLA', 'locationY': 6.03782, 'locationX': 46.158772, 'stopName': 'Stand Laconnex'}, {'titleName': 'Stand', 'subTitleName': '', 'idTransportAPI': '008508494', 'stopCode': 'STND', 'locationY': 8.417328, 'locationX': 46.782515, 'stopName': 'Stand'}, {'titleName': 'Stade Trois Chêne', 'subTitleName': '', 'idTransportAPI': '008592716', 'stopCode': 'STRC', 'locationY': 6.192138, 'locationX': 46.19205, 'stopName': 'Stade Trois Chêne'}, {'titleName': 'Sur le Moulin', 'subTitleName': '', 'idTransportAPI': '008592639', 'stopCode': 'SUMO', 'locationY': 6.019311, 'locationX': 46.143679, 'stopName': 'Sur le Moulin'}, {'titleName': 'Susette', 'subTitleName': '', 'idTransportAPI': '008592951', 'stopCode': 'SUSE', 'locationY': 6.123613, 'locationX': 46.237922, 'stopName': 'Susette'}, {'titleName': 'Veyrier', 'subTitleName': 'Stand', 'idTransportAPI': '008593213', 'stopCode': 'SVEY', 'locationY': 6.179697, 'locationX': 46.177056, 'stopName': 'Stand de Veyrier'}, {'titleName': 'Sous Villette', 'subTitleName': '', 'idTransportAPI': '008593123', 'stopCode': 'SVIL', 'locationY': 6.188273, 'locationX': 46.181605, 'stopName': 'Sous Villette'}, {'titleName': 'Savonnière', 'subTitleName': '', 'idTransportAPI': '008757184', 'stopCode': 'SVON', 'locationY': 0.544108, 'locationX': 47.360729, 'stopName': 'Savonnière'}, {'titleName': 'Satigny', 'subTitleName': 'Centre Sportif', 'idTransportAPI': '008595228', 'stopCode': 'SYCS', 'locationY': 6.035321, 'locationX': 46.210226, 'stopName': 'Satigny Centre Sportif'}, {'titleName': 'Satigny', 'subTitleName': 'Temple', 'idTransportAPI': '008593103', 'stopCode': 'SYEG', 'locationY': 6.030494, 'locationX': 46.218236, 'stopName': 'Satigny Temple'}, {'titleName': 'Satigny', 'subTitleName': 'Gare', 'idTransportAPI': '008587389', 'stopCode': 'SYGA', 'locationY': 6.037416, 'locationX': 46.214325, 'stopName': 'Satigny Gare'}, {'titleName': 'Satigny', 'subTitleName': 'Mairie', 'idTransportAPI': '008593101', 'stopCode': 'SYMA', 'locationY': 6.031474, 'locationX': 46.216698, 'stopName': 'Satigny Mairie'}, {'titleName': 'Satigny', 'subTitleName': 'Poste', 'idTransportAPI': '008593102', 'stopCode': 'SYPO', 'locationY': 6.033604, 'locationX': 46.213292, 'stopName': 'Satigny Poste'}, {'titleName': 'Taboret', 'subTitleName': '', 'idTransportAPI': '008593104', 'stopCode': 'TABO', 'locationY': 6.023374, 'locationX': 46.204554, 'stopName': 'Taboret'}, {'titleName': 'Taconnerie', 'subTitleName': '', 'idTransportAPI': '008592909', 'stopCode': 'TACO', 'locationY': 6.147839, 'locationX': 46.200473, 'stopName': 'Taconnerie'}, {'titleName': 'Tours de Carouge', 'subTitleName': '', 'idTransportAPI': '008587037', 'stopCode': 'TCAR', 'locationY': 6.135038, 'locationX': 46.183295, 'stopName': 'Tours de Carouge'}, {'titleName': 'Tour Carrée', 'subTitleName': '', 'idTransportAPI': '008592753', 'stopCode': 'TCRE', 'locationY': 6.182924, 'locationX': 46.224852, 'stopName': 'Tour Carrée'}, {'titleName': 'Tougin', 'subTitleName': 'Hôpital', 'idTransportAPI': '008587916', 'stopCode': 'TGIN', 'locationY': 6.057228, 'locationX': 46.325081, 'stopName': 'Tougin Hôpital'}, {'titleName': 'Thoiry', 'subTitleName': 'Gare', 'idTransportAPI': '008593236', 'stopCode': 'THGA', 'locationY': 5.980343, 'locationX': 46.231441, 'stopName': 'Thoiry Gare'}, {'titleName': 'Thoiry', 'subTitleName': 'Mairie', 'idTransportAPI': '008755607', 'stopCode': 'THMA', 'locationY': 5.980352, 'locationX': 46.230758, 'stopName': 'Thoiry Mairie'}, {'titleName': 'Théâtre', 'subTitleName': '', 'idTransportAPI': '008595022', 'stopCode': 'THRE', 'locationY': 6.141852, 'locationX': 46.202172, 'stopName': 'Théâtre'}, {'titleName': 'Les Tilleuls', 'subTitleName': '', 'idTransportAPI': '008749574', 'stopCode': 'TILL', 'locationY': 2.395912, 'locationX': 48.740042, 'stopName': 'Les Tilleuls'}, {'titleName': 'Tours Lignon', 'subTitleName': '', 'idTransportAPI': '008593173', 'stopCode': 'TLIG', 'locationY': 6.093337, 'locationX': 46.20077, 'stopName': 'Tours Lignon'}, {'titleName': 'Terre Mousson', 'subTitleName': '', 'idTransportAPI': '008593105', 'stopCode': 'TMOU', 'locationY': 6.055808, 'locationX': 46.197282, 'stopName': 'Terre Mousson'}, {'titleName': 'Tour de Contrôle', 'subTitleName': '', 'idTransportAPI': '008593021', 'stopCode': 'TOCO', 'locationY': 6.103981, 'locationX': 46.228546, 'stopName': 'Tour de Contrôle'}, {'titleName': 'Tourbillon', 'subTitleName': '', 'idTransportAPI': '008582711', 'stopCode': 'TOU0', 'locationY': 7.36372, 'locationX': 46.229238, 'stopName': 'Tourbillon'}, {'titleName': 'Tourelle', 'subTitleName': '', 'idTransportAPI': '008592911', 'stopCode': 'TOUR', 'locationY': 6.127065, 'locationX': 46.224213, 'stopName': 'Tourelle'}, {'titleName': 'Touvière', 'subTitleName': '', 'idTransportAPI': '008592631', 'stopCode': 'TOUV', 'locationY': 5.99807, 'locationX': 46.175096, 'stopName': 'Touvière'}, {'titleName': 'Tranchées', 'subTitleName': '', 'idTransportAPI': '008592912', 'stopCode': 'TRAN', 'locationY': 6.155516, 'locationX': 46.198531, 'stopName': 'Tranchées'}, {'titleName': 'Trèfle Blanc', 'subTitleName': '', 'idTransportAPI': '008593070', 'stopCode': 'TRBL', 'locationY': 6.125393, 'locationX': 46.171564, 'stopName': 'Trèfle Blanc'}, {'titleName': 'Treulaz', 'subTitleName': '', 'idTransportAPI': '008592620', 'stopCode': 'TREU', 'locationY': 6.045389, 'locationX': 46.185874, 'stopName': 'Treulaz'}, {'titleName': 'Triaz', 'subTitleName': '', 'idTransportAPI': '008592957', 'stopCode': 'TRIZ', 'locationY': 6.24317, 'locationX': 46.296145, 'stopName': 'Triaz'}, {'titleName': 'Chemin de la Traille', 'subTitleName': '', 'idTransportAPI': '008593029', 'stopCode': 'TRLL', 'locationY': 6.094299, 'locationX': 46.184508, 'stopName': 'Chemin de la Traille'}, {'titleName': 'Trembley', 'subTitleName': '', 'idTransportAPI': '008592913', 'stopCode': 'TRMB', 'locationY': 6.126544, 'locationX': 46.217687, 'stopName': 'Trembley'}, {'titleName': 'Terrassière', 'subTitleName': '', 'idTransportAPI': '008592910', 'stopCode': 'TRSI', 'locationY': 6.156415, 'locationX': 46.201075, 'stopName': 'Terrassière'}, {'titleName': 'Tunnel Routier', 'subTitleName': '', 'idTransportAPI': '008592953', 'stopCode': 'TRTI', 'locationY': 6.122561, 'locationX': 46.243172, 'stopName': 'Tunnel Routier'}, {'titleName': 'La Tuilière', 'subTitleName': '', 'idTransportAPI': '008588679', 'stopCode': 'TUIL', 'locationY': 6.2453, 'locationX': 46.398991, 'stopName': 'La Tuilière'}, {'titleName': 'Chemin des Turaines', 'subTitleName': '', 'idTransportAPI': '008592954', 'stopCode': 'TURA', 'locationY': 6.260078, 'locationX': 46.251478, 'stopName': 'Chemin des Turaines'}, {'titleName': 'Thônex Vallard', 'subTitleName': 'Douane', 'idTransportAPI': '008593124', 'stopCode': 'TVDO', 'locationY': 6.200057, 'locationX': 46.189147, 'stopName': 'Thônex Vallard Douane'}, {'titleName': 'Taverney', 'subTitleName': '', 'idTransportAPI': '008592952', 'stopCode': 'TVER', 'locationY': 6.117554, 'locationX': 46.230776, 'stopName': 'Taverney'}, {'titleName': 'Troinex', 'subTitleName': 'Mairie', 'idTransportAPI': '008587093', 'stopCode': 'TXMA', 'locationY': 6.148414, 'locationX': 46.160273, 'stopName': 'Troinex Mairie'}, {'titleName': 'Troinex', 'subTitleName': 'Ville', 'idTransportAPI': '008588195', 'stopCode': 'TXVI', 'locationY': 6.144351, 'locationX': 46.15923, 'stopName': 'Troinex Ville'}, {'titleName': 'Lancy', 'subTitleName': 'Hubert', 'idTransportAPI': '008592986', 'stopCode': 'UBER', 'locationY': 6.109914, 'locationX': 46.192562, 'stopName': 'Lancy Hubert'}, {'titleName': 'UIT', 'subTitleName': '', 'idTransportAPI': '008592914', 'stopCode': 'UIT0', 'locationY': 6.136162, 'locationX': 46.220645, 'stopName': 'UIT'}, {'titleName': 'Uni Mail', 'subTitleName': '', 'idTransportAPI': '008592915', 'stopCode': 'UNIM', 'locationY': 6.140935, 'locationX': 46.195115, 'stopName': 'Uni Mail'}, {'titleName': 'Vailly', 'subTitleName': '', 'idTransportAPI': '008592664', 'stopCode': 'VALY', 'locationY': 6.060877, 'locationX': 46.172328, 'stopName': 'Vailly'}, {'titleName': 'Vandoeuvres', 'subTitleName': '', 'idTransportAPI': '008587094', 'stopCode': 'VAND', 'locationY': 6.202871, 'locationX': 46.221409, 'stopName': 'Vandoeuvres'}, {'titleName': \"Val d'Arve\", 'subTitleName': '', 'idTransportAPI': '008592682', 'stopCode': 'VARV', 'locationY': 6.150014, 'locationX': 46.18467, 'stopName': \"Val d'Arve\"}, {'titleName': 'Val Thoiry', 'subTitleName': '', 'idTransportAPI': '000000060', 'stopCode': 'VATH', 'locationY': 5.992532, 'locationX': 46.227063, 'stopName': 'Val Thoiry'}, {'titleName': 'Vaudagne', 'subTitleName': '', 'idTransportAPI': '008774672', 'stopCode': 'VAUD', 'locationY': 6.772706, 'locationX': 45.9088, 'stopName': 'Vaudagne'}, {'titleName': 'Duret', 'subTitleName': '', 'idTransportAPI': '008593043', 'stopCode': 'VDUR', 'locationY': 6.104502, 'locationX': 46.187205, 'stopName': 'Duret'}, {'titleName': 'Vernier', 'subTitleName': 'Ecole', 'idTransportAPI': '008593175', 'stopCode': 'VEEC', 'locationY': 6.085679, 'locationX': 46.216582, 'stopName': 'Vernier Ecole'}, {'titleName': 'Veigy', 'subTitleName': 'Village', 'idTransportAPI': '008593241', 'stopCode': 'VEGY', 'locationY': 6.25793, 'locationX': 46.269106, 'stopName': 'Veigy Village'}, {'titleName': 'Vélodrome', 'subTitleName': '', 'idTransportAPI': '008593071', 'stopCode': 'VELO', 'locationY': 6.115784, 'locationX': 46.16742, 'stopName': 'Vélodrome'}, {'titleName': 'Vernier', 'subTitleName': 'Marché', 'idTransportAPI': '008593176', 'stopCode': 'VEMA', 'locationY': 6.081867, 'locationX': 46.215242, 'stopName': 'Vernier Marché'}, {'titleName': 'Verbant', 'subTitleName': '', 'idTransportAPI': '008595038', 'stopCode': 'VERB', 'locationY': 6.125681, 'locationX': 46.15728, 'stopName': 'Verbant'}, {'titleName': 'Vernes', 'subTitleName': '', 'idTransportAPI': '008593023', 'stopCode': 'VERN', 'locationY': 6.075629, 'locationX': 46.234398, 'stopName': 'Vernes'}, {'titleName': 'Vessy', 'subTitleName': '', 'idTransportAPI': '008593214', 'stopCode': 'VESY', 'locationY': 6.169063, 'locationX': 46.173874, 'stopName': 'Vessy'}, {'titleName': 'Verseuse', 'subTitleName': '', 'idTransportAPI': '008593178', 'stopCode': 'VEUS', 'locationY': 6.096753, 'locationX': 46.195745, 'stopName': 'Verseuse'}, {'titleName': 'Vernier', 'subTitleName': 'Village', 'idTransportAPI': '008593177', 'stopCode': 'VEVI', 'locationY': 6.079099, 'locationX': 46.212698, 'stopName': 'Vernier Village'}, {'titleName': 'Veigy', 'subTitleName': 'Ecole', 'idTransportAPI': '008595049', 'stopCode': 'VGEC', 'locationY': 6.258739, 'locationX': 46.272495, 'stopName': 'Veigy Ecole'}, {'titleName': 'Via Monnet', 'subTitleName': '', 'idTransportAPI': '008593179', 'stopCode': 'VIAM', 'locationY': 6.082694, 'locationX': 46.217022, 'stopName': 'Via Monnet'}, {'titleName': 'Vy des Champs', 'subTitleName': '', 'idTransportAPI': '008592926', 'stopCode': 'VICH', 'locationY': 6.132405, 'locationX': 46.231477, 'stopName': 'Vy des Champs'}, {'titleName': 'Vidollet', 'subTitleName': '', 'idTransportAPI': '008592921', 'stopCode': 'VIDO', 'locationY': 6.136414, 'locationX': 46.217624, 'stopName': 'Vidollet'}, {'titleName': 'Villereuse', 'subTitleName': '', 'idTransportAPI': '008592924', 'stopCode': 'VILL', 'locationY': 6.158536, 'locationX': 46.200617, 'stopName': 'Villereuse'}, {'titleName': 'Vieux Moulins', 'subTitleName': '', 'idTransportAPI': '008593232', 'stopCode': 'VIMO', 'locationY': 6.068338, 'locationX': 46.13967, 'stopName': 'Vieux Moulins'}, {'titleName': 'Neydens', 'subTitleName': 'Vitam', 'idTransportAPI': '008594960', 'stopCode': 'VIPA', 'locationY': 6.09572, 'locationX': 46.122743, 'stopName': 'Neydens Vitam'}, {'titleName': 'Viry', 'subTitleName': 'Chef Lieu', 'idTransportAPI': '008587392', 'stopCode': 'VIRY', 'locationY': 6.037101, 'locationX': 46.117952, 'stopName': 'Viry Chef Lieu'}, {'titleName': 'Vieusseux', 'subTitleName': '', 'idTransportAPI': '008592922', 'stopCode': 'VIUS', 'locationY': 6.125204, 'locationX': 46.215035, 'stopName': 'Vieusseux'}, {'titleName': 'Valais', 'subTitleName': '', 'idTransportAPI': '008592916', 'stopCode': 'VLAI', 'locationY': 6.141277, 'locationX': 46.216689, 'stopName': 'Valais'}, {'titleName': 'Villars', 'subTitleName': '', 'idTransportAPI': '008592958', 'stopCode': 'VLLA', 'locationY': 6.240626, 'locationX': 46.292666, 'stopName': 'Villars'}, {'titleName': 'Vallon', 'subTitleName': '', 'idTransportAPI': '008570413', 'stopCode': 'VLON', 'locationY': 6.952688, 'locationX': 46.881271, 'stopName': 'Vallon'}, {'titleName': 'Velours', 'subTitleName': '', 'idTransportAPI': '008592918', 'stopCode': 'VLRS', 'locationY': 6.167364, 'locationX': 46.18947, 'stopName': 'Velours'}, {'titleName': 'Voirets', 'subTitleName': '', 'idTransportAPI': '008592998', 'stopCode': 'VOIR', 'locationY': 6.114903, 'locationX': 46.174323, 'stopName': 'Voirets'}, {'titleName': 'Vollandes', 'subTitleName': '', 'idTransportAPI': '008592925', 'stopCode': 'VOLL', 'locationY': 6.159885, 'locationX': 46.205543, 'stopName': 'Vollandes'}, {'titleName': 'Veyrier', 'subTitleName': 'Rasses', 'idTransportAPI': '008593211', 'stopCode': 'VRAS', 'locationY': 6.177971, 'locationX': 46.166323, 'stopName': 'Veyrier Rasses'}, {'titleName': 'Varembé', 'subTitleName': '', 'idTransportAPI': '008592917', 'stopCode': 'VRBE', 'locationY': 6.140252, 'locationX': 46.22078, 'stopName': 'Varembé'}, {'titleName': 'Veyrier', 'subTitleName': 'Douane', 'idTransportAPI': '008587905', 'stopCode': 'VDOU', 'locationY': 6.186726, 'locationX': 46.167285, 'stopName': 'Veyrier Douane'}, {'titleName': 'Veyrier', 'subTitleName': 'Ecole', 'idTransportAPI': '008587906', 'stopCode': 'VREC', 'locationY': 6.182636, 'locationX': 46.167168, 'stopName': 'Veyrier Ecole'}, {'titleName': 'Vireloup', 'subTitleName': '', 'idTransportAPI': '008592723', 'stopCode': 'VRLP', 'locationY': 6.12471, 'locationX': 46.263775, 'stopName': 'Vireloup'}, {'titleName': 'Vermont', 'subTitleName': '', 'idTransportAPI': '008592919', 'stopCode': 'VRMT', 'locationY': 6.138257, 'locationX': 46.219305, 'stopName': 'Vermont'}, {'titleName': 'Vernets', 'subTitleName': '', 'idTransportAPI': '008592920', 'stopCode': 'VRNT', 'locationY': 6.133942, 'locationX': 46.19321, 'stopName': 'Vernets'}, {'titleName': 'Veyrot', 'subTitleName': '', 'idTransportAPI': '008593025', 'stopCode': 'VROT', 'locationY': 6.063556, 'locationX': 46.228196, 'stopName': 'Veyrot'}, {'titleName': 'Vertes Campagnes', 'subTitleName': '', 'idTransportAPI': '008593239', 'stopCode': 'VRTC', 'locationY': 6.055133, 'locationX': 46.326232, 'stopName': 'Vertes Campagnes'}, {'titleName': 'Vésenaz', 'subTitleName': 'Eglise', 'idTransportAPI': '008592733', 'stopCode': 'VSEG', 'locationY': 6.199176, 'locationX': 46.23785, 'stopName': 'Vésenaz Eglise'}, {'titleName': 'Vésenaz', 'subTitleName': '', 'idTransportAPI': '008587097', 'stopCode': 'VSNA', 'locationY': 6.197513, 'locationX': 46.239396, 'stopName': 'Vésenaz'}, {'titleName': 'Village Suisse', 'subTitleName': '', 'idTransportAPI': '008592923', 'stopCode': 'VSUI', 'locationY': 6.135587, 'locationX': 46.201318, 'stopName': 'Village Suisse'}, {'titleName': 'Veyrier', 'subTitleName': 'Tournettes', 'idTransportAPI': '008589097', 'stopCode': 'VTRN', 'locationY': 6.179418, 'locationX': 46.163285, 'stopName': 'Veyrier Tournettes'}, {'titleName': 'Villette', 'subTitleName': '', 'idTransportAPI': '008592702', 'stopCode': 'VTTE', 'locationY': 6.181585, 'locationX': 46.181614, 'stopName': 'Villette'}, {'titleName': 'Vuattes', 'subTitleName': '', 'idTransportAPI': '008593072', 'stopCode': 'VUAT', 'locationY': 6.121752, 'locationX': 46.168993, 'stopName': 'Vuattes'}, {'titleName': 'Vuillonnex', 'subTitleName': '', 'idTransportAPI': '008592665', 'stopCode': 'VUIL', 'locationY': 6.079323, 'locationX': 46.177838, 'stopName': 'Vuillonnex'}, {'titleName': 'Valavran', 'subTitleName': '', 'idTransportAPI': '008592649', 'stopCode': 'VVRA', 'locationY': 6.145223, 'locationX': 46.259703, 'stopName': 'Valavran'}, {'titleName': 'Versoix', 'subTitleName': 'Bourg', 'idTransportAPI': '008593191', 'stopCode': 'VXBO', 'locationY': 6.168308, 'locationX': 46.277151, 'stopName': 'Versoix Bourg'}, {'titleName': 'Versoix', 'subTitleName': 'Gare', 'idTransportAPI': '008587095', 'stopCode': 'VXGA', 'locationY': 6.165179, 'locationX': 46.279893, 'stopName': 'Versoix Gare'}, {'titleName': 'Vieux Valavran', 'subTitleName': '', 'idTransportAPI': '008592934', 'stopCode': 'VXVV', 'locationY': 6.145331, 'locationX': 46.259541, 'stopName': 'Vieux Valavran'}, {'titleName': 'Valleiry', 'subTitleName': 'Chef Lieu', 'idTransportAPI': '008594962', 'stopCode': 'VYCL', 'locationY': 5.968738, 'locationX': 46.107264, 'stopName': 'Valleiry Chef Lieu'}, {'titleName': 'Valleiry', 'subTitleName': 'Espace', 'idTransportAPI': '008594963', 'stopCode': 'VYFO', 'locationY': 5.971848, 'locationX': 46.10908, 'stopName': 'Valleiry Espace'}, {'titleName': 'Weber', 'subTitleName': '', 'idTransportAPI': '008592927', 'stopCode': 'WEBR', 'locationY': 6.163417, 'locationX': 46.196958, 'stopName': 'Weber'}, {'titleName': 'Wendt', 'subTitleName': '', 'idTransportAPI': '008592928', 'stopCode': 'WEND', 'locationY': 6.127353, 'locationX': 46.21144, 'stopName': 'Wendt'}, {'titleName': 'WTC', 'subTitleName': '', 'idTransportAPI': '008592929', 'stopCode': 'WTC0', 'locationY': 6.106426, 'locationX': 46.229364, 'stopName': 'WTC'}, {'titleName': 'ZIMOGA', 'subTitleName': '', 'idTransportAPI': '008593180', 'stopCode': 'ZIMO', 'locationY': 6.075665, 'locationX': 46.220321, 'stopName': 'ZIMOGA'}, {'titleName': 'ZIPLO', 'subTitleName': '', 'idTransportAPI': '008593073', 'stopCode': 'ZIPL', 'locationY': 6.102947, 'locationX': 46.166602, 'stopName': 'ZIPLO'}, {'titleName': 'Z.I. Les Moulins', 'subTitleName': '', 'idTransportAPI': '008595048', 'stopCode': 'ZMOU', 'locationY': 6.068527, 'locationX': 46.138456, 'stopName': 'Z.I. Les Moulins'}, {'titleName': 'Versoix', 'subTitleName': 'Canal', 'idTransportAPI': '008595663', 'stopCode': 'CAVX', 'locationY': 6.159345, 'locationX': 46.280522, 'stopName': 'Canal de Versoix'}, {'titleName': 'Chavannes des Bois', 'subTitleName': '', 'idTransportAPI': '008588298', 'stopCode': 'CHAV', 'locationY': 6.132818, 'locationX': 46.314744, 'stopName': 'Chavannes des Bois'}, {'titleName': 'Collège du Léman', 'subTitleName': '', 'idTransportAPI': '008595665', 'stopCode': 'COLE', 'locationY': 6.157395, 'locationX': 46.290023, 'stopName': 'Collège du Léman'}, {'titleName': 'Combes Chapuis', 'subTitleName': '', 'idTransportAPI': '008595669', 'stopCode': 'COMC', 'locationY': 6.1256, 'locationX': 46.307445, 'stopName': 'Combes Chapuis'}, {'titleName': 'Cynodrome', 'subTitleName': '', 'idTransportAPI': '008595664', 'stopCode': 'CYNO', 'locationY': 6.143596, 'locationX': 46.297538, 'stopName': 'Cynodrome'}, {'titleName': 'Observatoire de Genève', 'subTitleName': '', 'idTransportAPI': '008595668', 'stopCode': 'OBGE', 'locationY': 6.132324, 'locationX': 46.303777, 'stopName': 'Observatoire de Genève'}, {'titleName': 'Ornex', 'subTitleName': 'Les Roussets', 'idTransportAPI': '008570805', 'stopCode': 'ORRO', 'locationY': 7.437486, 'locationX': 46.332641, 'stopName': 'Ornex Les Roussets'}, {'titleName': 'Sauverny', 'subTitleName': 'Douane', 'idTransportAPI': '008595670', 'stopCode': 'SADN', 'locationY': 6.120467, 'locationX': 46.311382, 'stopName': 'Sauverny Douane'}, {'titleName': 'Sauverny', 'subTitleName': 'Martinet', 'idTransportAPI': '008595671', 'stopCode': 'SAMA', 'locationY': 6.123343, 'locationX': 46.314034, 'stopName': 'Sauverny Martinet'}, {'titleName': 'Saint Loup', 'subTitleName': '', 'idTransportAPI': '008595666', 'stopCode': 'STLO', 'locationY': 6.154248, 'locationX': 46.282625, 'stopName': 'Versoix Saint Loup'}]}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r" - ] - } - ], - "source": [ - "import requests, json\n", - "from tqdm import tqdm\n", - "r = requests.get(\"https://raw.githubusercontent.com/RemyDCF/tpg-offline/master/iOS/arrets.json\").json()\n", - "for x in tqdm(r[\"stops\"]): \n", - " s = requests.get(\"http://prod.ivtr-od.tpg.ch/v1/GetNextDepartures.json?key=d95be980-0830-11e5-a039-0002a5d5c51b&stopCode=\" + x[\"stopCode\"]).json()\n", - " x[\"connections\"] = []\n", - " print(x[\"stopCode\"])\n", - " for p in s[\"stop\"][\"connections\"]:\n", - " if p[\"lineCode\"] in x[\"connections\"] == False:\n", - " x[\"connections\"].append(p[\"lineCode\"]) \n", - "print(r)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.0" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/iOS/fastlane/Fastfile b/iOS/fastlane/Fastfile index 192f6a4d..d05fe358 100755 --- a/iOS/fastlane/Fastfile +++ b/iOS/fastlane/Fastfile @@ -30,26 +30,21 @@ platform :ios do scan end - lane :snapshot do + lane :screenshot do snapshot( erase_simulator: true, clear_previous_screenshots: true, - languages: ["fr-FR"], + languages: ["fr-FR", "en-US"], devices: [ "iPhone 6s", "iPhone 6s Plus", "iPhone 5", "iPhone 4s", "iPad Retina", - "iPad Pro" - ] + ] ) end - lane :frameit do - frameit - end - desc "Submit a new Beta Build to Apple TestFlight" desc "This will also make sure the profile is up to date" lane :testflight do diff --git a/iOS/fastlane/README.md b/iOS/fastlane/README.md index 7a0efee1..7f9297a7 100755 --- a/iOS/fastlane/README.md +++ b/iOS/fastlane/README.md @@ -11,14 +11,9 @@ sudo gem install fastlane fastlane ios test ``` Runs all the tests -### ios snapshot +### ios screenshot ``` -fastlane ios snapshot -``` - -### ios frameit -``` -fastlane ios frameit +fastlane ios screenshot ``` ### ios testflight diff --git a/iOS/fastlane/report.xml b/iOS/fastlane/report.xml index 9ebd9497..45b020a1 100755 --- a/iOS/fastlane/report.xml +++ b/iOS/fastlane/report.xml @@ -3,24 +3,22 @@ - + - + - + - - - + diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Arrets.png b/iOS/fastlane/screenshots/fr-FR/iPhone4s-Arrets.png deleted file mode 100755 index 9a846dd7..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Arrets.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Departs.png b/iOS/fastlane/screenshots/fr-FR/iPhone4s-Departs.png deleted file mode 100755 index 1c189178..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Departs.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Incidents.png b/iOS/fastlane/screenshots/fr-FR/iPhone4s-Incidents.png deleted file mode 100755 index b3169ac5..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Incidents.png and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Itin\303\251raires.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone4s-Itin\303\251raires.png" deleted file mode 100755 index a3cfc1be..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Itin\303\251raires.png" and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Param\303\250tres.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone4s-Param\303\250tres.png" deleted file mode 100755 index d77e5bab..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Param\303\250tres.png" and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Plans.png b/iOS/fastlane/screenshots/fr-FR/iPhone4s-Plans.png deleted file mode 100755 index a07d52b6..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone4s-Plans.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone5-Arrets.png b/iOS/fastlane/screenshots/fr-FR/iPhone5-Arrets.png deleted file mode 100755 index fdd109da..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone5-Arrets.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone5-Departs.png b/iOS/fastlane/screenshots/fr-FR/iPhone5-Departs.png deleted file mode 100755 index 2eb0c8f0..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone5-Departs.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone5-Incidents.png b/iOS/fastlane/screenshots/fr-FR/iPhone5-Incidents.png deleted file mode 100755 index ec2912c8..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone5-Incidents.png and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone5-Itin\303\251raires.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone5-Itin\303\251raires.png" deleted file mode 100755 index e08fc317..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone5-Itin\303\251raires.png" and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone5-Param\303\250tres.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone5-Param\303\250tres.png" deleted file mode 100755 index cc998c63..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone5-Param\303\250tres.png" and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone5-Plans.png b/iOS/fastlane/screenshots/fr-FR/iPhone5-Plans.png deleted file mode 100755 index 3a205463..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone5-Plans.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Arrets.png b/iOS/fastlane/screenshots/fr-FR/iPhone6s-Arrets.png deleted file mode 100755 index 79abf667..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Arrets.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Departs.png b/iOS/fastlane/screenshots/fr-FR/iPhone6s-Departs.png deleted file mode 100755 index 4f08b942..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Departs.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Incidents.png b/iOS/fastlane/screenshots/fr-FR/iPhone6s-Incidents.png deleted file mode 100755 index 7035b04a..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Incidents.png and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Itin\303\251raires.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone6s-Itin\303\251raires.png" deleted file mode 100755 index 97d4b549..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Itin\303\251raires.png" and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Param\303\250tres.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone6s-Param\303\250tres.png" deleted file mode 100755 index 468b90be..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Param\303\250tres.png" and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Plans.png b/iOS/fastlane/screenshots/fr-FR/iPhone6s-Plans.png deleted file mode 100755 index 21eb3791..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6s-Plans.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Arrets.png b/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Arrets.png deleted file mode 100755 index a973a354..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Arrets.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Departs.png b/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Departs.png deleted file mode 100755 index 004fb08c..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Departs.png and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Incidents.png b/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Incidents.png deleted file mode 100755 index 26796ca3..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Incidents.png and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Itin\303\251raires.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Itin\303\251raires.png" deleted file mode 100755 index 861146d9..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Itin\303\251raires.png" and /dev/null differ diff --git "a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Param\303\250tres.png" "b/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Param\303\250tres.png" deleted file mode 100755 index 0bfd409c..00000000 Binary files "a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Param\303\250tres.png" and /dev/null differ diff --git a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Plans.png b/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Plans.png deleted file mode 100755 index 423858ea..00000000 Binary files a/iOS/fastlane/screenshots/fr-FR/iPhone6sPlus-Plans.png and /dev/null differ diff --git a/iOS/tpg offline UITests/SnapshotHelper.swift b/iOS/tpg offline UITests/SnapshotHelper.swift index 65a481d5..070cdc44 100755 --- a/iOS/tpg offline UITests/SnapshotHelper.swift +++ b/iOS/tpg offline UITests/SnapshotHelper.swift @@ -25,21 +25,21 @@ func snapshot(name: String, waitForLoadingIndicator: Bool = true) { Snapshot.snapshot(name, waitForLoadingIndicator: waitForLoadingIndicator) } -class Snapshot: NSObject { - - class func setupSnapshot(app: XCUIApplication) { +public class Snapshot: NSObject { + + public class func setupSnapshot(app: XCUIApplication) { setLanguage(app) setLocale(app) setLaunchArguments(app) } - + class func setLanguage(app: XCUIApplication) { guard let prefix = pathPrefix() else { return } - + let path = prefix.stringByAppendingPathComponent("language.txt") - + do { let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() deviceLanguage = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String @@ -48,14 +48,14 @@ class Snapshot: NSObject { print("Couldn't detect/set language...") } } - + class func setLocale(app: XCUIApplication) { guard let prefix = pathPrefix() else { return } - + let path = prefix.stringByAppendingPathComponent("locale.txt") - + do { let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() locale = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String @@ -67,15 +67,15 @@ class Snapshot: NSObject { } app.launchArguments += ["-AppleLocale", "\"\(locale)\""] } - + class func setLaunchArguments(app: XCUIApplication) { guard let prefix = pathPrefix() else { return } - + let path = prefix.stringByAppendingPathComponent("snapshot-launch_arguments.txt") app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"] - + do { let launchArguments = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) as String let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: []) @@ -88,27 +88,27 @@ class Snapshot: NSObject { print("Couldn't detect/set launch_arguments...") } } - - class func snapshot(name: String, waitForLoadingIndicator: Bool = true) { + + public class func snapshot(name: String, waitForLoadingIndicator: Bool = true) { if waitForLoadingIndicator { waitForLoadingIndicatorToDisappear() } - - print("snapshot: \(name)") // more information about this, check out https://github.com/fastlane/snapshot - + + print("snapshot: \(name)") // more information about this, check out https://github.com/fastlane/fastlane/tree/master/snapshot + sleep(1) // Waiting for the animation to be finished (kind of) XCUIDevice.sharedDevice().orientation = .Unknown } - + class func waitForLoadingIndicatorToDisappear() { let query = XCUIApplication().statusBars.childrenMatchingType(.Other).elementBoundByIndex(1).childrenMatchingType(.Other) - + while (0.. NSString? { if let path = NSProcessInfo().environment["SIMULATOR_HOST_HOME"] as NSString? { return path.stringByAppendingPathComponent("Library/Caches/tools.fastlane") @@ -126,4 +126,4 @@ extension XCUIElement { // Please don't remove the lines below // They are used to detect outdated configuration files -// SnapshotHelperVersion [1.2] +// SnapshotHelperVersion [1.2] \ No newline at end of file diff --git a/iOS/tpg offline UITests/tpg_offline_UITests.swift b/iOS/tpg offline UITests/tpg_offline_UITests.swift index 75fe5313..a1c9ce0a 100755 --- a/iOS/tpg offline UITests/tpg_offline_UITests.swift +++ b/iOS/tpg offline UITests/tpg_offline_UITests.swift @@ -20,7 +20,7 @@ class tpg_offline_UITests: XCTestCase { continueAfterFailure = false // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. let app = XCUIApplication() - app.launchArguments = ["-donotask", "-premium", "-takeScreenshot"] + app.launchArguments = ["-donotask"] setupSnapshot(app) app.launch() diff --git a/iOS/tpg offline Watch Extension-Bridging-Header.h b/iOS/tpg offline Watch Extension-Bridging-Header.h new file mode 100644 index 00000000..687e1dc8 --- /dev/null +++ b/iOS/tpg offline Watch Extension-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import "FontAwesomeKit.h" \ No newline at end of file diff --git a/iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/Contents.json b/iOS/tpg offline Watch Extension/Assets.xcassets/Contents.json similarity index 100% rename from iOS/Pods/SwiftTweaks/SwiftTweaks/Media.xcassets/Contents.json rename to iOS/tpg offline Watch Extension/Assets.xcassets/Contents.json diff --git a/iOS/tpg offline Watch Extension/Assets.xcassets/README__ignoredByTemplate__ b/iOS/tpg offline Watch Extension/Assets.xcassets/README__ignoredByTemplate__ new file mode 100644 index 00000000..b601d383 --- /dev/null +++ b/iOS/tpg offline Watch Extension/Assets.xcassets/README__ignoredByTemplate__ @@ -0,0 +1 @@ +Did you know that git does not support storing empty directories? diff --git a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Contents.json b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Contents.json old mode 100755 new mode 100644 similarity index 71% rename from iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Contents.json rename to iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Contents.json index 55fbc4c8..8cad50cf --- a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Contents.json +++ b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Contents.json @@ -2,17 +2,17 @@ "images" : [ { "idiom" : "universal", - "filename" : "Rappels.png", + "filename" : "Star.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "Rappels@2x.png", + "filename" : "Star@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "Rappels@3x.png", + "filename" : "Star@3x.png", "scale" : "3x" } ], diff --git a/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star.png b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star.png new file mode 100644 index 00000000..3b1931aa Binary files /dev/null and b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star.png differ diff --git a/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star@2x.png b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star@2x.png new file mode 100644 index 00000000..7684ea27 Binary files /dev/null and b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star@2x.png differ diff --git a/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star@3x.png b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star@3x.png new file mode 100644 index 00000000..98e7cd73 Binary files /dev/null and b/iOS/tpg offline Watch Extension/Assets.xcassets/Star.imageset/Star@3x.png differ diff --git a/iOS/tpg offline Watch Extension/Base.lproj/Localizable.strings b/iOS/tpg offline Watch Extension/Base.lproj/Localizable.strings new file mode 100644 index 00000000..adb26fee --- /dev/null +++ b/iOS/tpg offline Watch Extension/Base.lproj/Localizable.strings @@ -0,0 +1,9 @@ +/* + Localizable.strings + tpg offline + + Created by Rémy Da Costa Faro on 03/07/2016. + Copyright © 2016 dacostafaro. All rights reserved. +*/ + +"Mode hors ligne" = "Mode hors ligne"; \ No newline at end of file diff --git a/iOS/tpg offline Watch Extension/DeparturesInterfaceController.swift b/iOS/tpg offline Watch Extension/DeparturesInterfaceController.swift new file mode 100644 index 00000000..911d3814 --- /dev/null +++ b/iOS/tpg offline Watch Extension/DeparturesInterfaceController.swift @@ -0,0 +1,180 @@ + +// +// DeparturesInterfaceController.swift +// tpg offline +// +// Created by Alice on 10/06/2016. +// Copyright © 2016 dacostafaro. All rights reserved. +// + +import WatchKit +import Foundation +import Alamofire +import SwiftyJSON + +class DeparturesInterfaceController: WKInterfaceController { + + var stop: Stop? = nil + var departuresList: [Departures]! = [] + var offline = false + @IBOutlet weak var loadingImage: WKInterfaceImage! + @IBOutlet weak var departuresTable: WKInterfaceTable! + + override func awakeWithContext(context: AnyObject?) { + super.awakeWithContext(context) + loadingImage.setHidden(false) + departuresTable.setHidden(true) + stop = (context as! Stop) + refreshDepartures() + // Configure interface objects here. + } + + override func willActivate() { + // This method is called when watch view controller is about to be visible to user + super.willActivate() + } + + override func didDeactivate() { + // This method is called when watch view controller is no longer visible + super.didDeactivate() + } + + func refreshDepartures() { + departuresList = [] + offline = false + Alamofire.request(.GET, "http://prod.ivtr-od.tpg.ch/v1/GetNextDepartures.json", parameters: ["key": "d95be980-0830-11e5-a039-0002a5d5c51b", "stopCode": stop!.stopCode]) + .responseJSON { response in + if let data = response.result.value { + let departs = JSON(data) + for (_, subjson) in departs["departures"] { + if AppValues.linesColor[subjson["line"]["lineCode"].string!] == nil { + self.departuresList.append(Departures( + line: subjson["line"]["lineCode"].string!, + direction: subjson["line"]["destinationName"].string!, + destinationCode: subjson["line"]["destinationCode"].string!, + lineColor: UIColor.whiteColor(), + lineBackgroundColor: UIColor.whiteColor(), + + code: String(subjson["departureCode"].intValue ?? 0), + leftTime: subjson["waitingTime"].string!, + timestamp: subjson["timestamp"].string + )) + } + else { + self.departuresList.append(Departures( + line: subjson["line"]["lineCode"].string!, + direction: subjson["line"]["destinationName"].string!, + destinationCode: subjson["line"]["destinationCode"].string!, + lineColor: AppValues.linesColor[subjson["line"]["lineCode"].string!]!, + lineBackgroundColor: AppValues.linesBackgroundColor[subjson["line"]["lineCode"].string!]!, + + code: String(subjson["departureCode"].intValue ?? 0), + leftTime: subjson["waitingTime"].string!, + timestamp: subjson["timestamp"].string + )) + } + } + } + else { + self.offline = true + let day: String! + + switch NSCalendar.currentCalendar().components([.Weekday], fromDate: NSDate()).weekday { + case 7: + day = "SAM" + break + case 1: + day = "DIM" + break + default: + day = "LUN" + break + } + + if let departuresString = AppValues.offlineDepartures[(self.stop?.stopCode)!] { + var json = JSON(data: departuresString.dataUsingEncoding(NSUTF8StringEncoding)!) + if json[day].string != nil { + json = JSON(data: json[day].stringValue.dataUsingEncoding(NSUTF8StringEncoding)!) + for (_, subJson) in json { + if AppValues.linesColor[subJson["ligne"].string!] != nil { + self.departuresList.append(Departures( + line: subJson["ligne"].string!, + direction: subJson["destination"].string!, + destinationCode: "", + lineColor: AppValues.linesColor[subJson["ligne"].string!]!, + lineBackgroundColor: AppValues.linesBackgroundColor[subJson["ligne"].string!]!, + code: nil, + leftTime: "0", + timestamp: subJson["timestamp"].string! + )) + } + else { + self.departuresList.append(Departures( + line: subJson["ligne"].string!, + direction: subJson["destination"].string!, + destinationCode: "", + lineColor: UIColor.whiteColor(), + lineBackgroundColor: UIColor.grayColor(), + code: nil, + leftTime: "0", + timestamp: subJson["timestamp"].string! + )) + } + self.departuresList.last?.calculerTempsRestant() + } + + self.departuresList = self.departuresList.filter({ (depart) -> Bool in + if depart.leftTime != "-1" && Int(depart.leftTime) <= 60 { + return true + } + return false + }) + + self.departuresList.sortInPlace({ (depart1, depart2) -> Bool in + if Int(depart1.leftTime) < Int(depart2.leftTime) { + return true + } + return false + }) + } + } + + } + self.refreshTable() + self.loadingImage.setHidden(true) + self.departuresTable.setHidden(false) + } + } + + func refreshTable() { + if offline { + departuresTable.setNumberOfRows(self.departuresList.count + 1, withRowType: "DeparturesRow") + if let controller = departuresTable.rowControllerAtIndex(0) as? DeparturesRowController { + controller.departure = Departures( + line: "", + direction: NSLocalizedString("Mode hors ligne", comment: ""), + destinationCode: "", + lineColor: UIColor.whiteColor(), + lineBackgroundColor: UIColor.orangeColor(), + code: nil, + leftTime: "offline", + timestamp: "" + ) + } + for index in 0..1h") + } + else if (departure.leftTime == "0") { + let attrStr = NSAttributedString(string: "\u{f207}", attributes: [NSFontAttributeName: UIFont(name: "FontAwesome", size: 16)!]) + leftTimeLabel.setAttributedText(attrStr) + } + else { + leftTimeLabel.setText(departure.leftTime + "'") + } + } + } + } +} diff --git a/iOS/tpg offline Watch Extension/ExtensionDelegate.swift b/iOS/tpg offline Watch Extension/ExtensionDelegate.swift new file mode 100644 index 00000000..533943ca --- /dev/null +++ b/iOS/tpg offline Watch Extension/ExtensionDelegate.swift @@ -0,0 +1,69 @@ +// +// ExtensionDelegate.swift +// tpg offline Watch Extension +// +// Created by Alice on 05/06/2016. +// Copyright © 2016 dacostafaro. All rights reserved. +// + +import WatchKit +import SwiftyJSON + +class ExtensionDelegate: NSObject, WKExtensionDelegate { + + func applicationDidFinishLaunching() { + let defaults = NSUserDefaults.standardUserDefaults() + + var decoded = defaults.objectForKey("arretsFavoris") + if decoded != nil { + let unarchivedData = NSKeyedUnarchiver.unarchiveObjectWithData(decoded as! NSData) as? [String:Stop] + AppValues.favoritesStops = unarchivedData + } + + decoded = defaults.objectForKey("offlineDepartures") + if decoded != nil { + let unarchivedData = NSKeyedUnarchiver.unarchiveObjectWithData(decoded as! NSData) as? [String:String] + AppValues.offlineDepartures = unarchivedData! + } + + let dataCouleurs = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("couleursLignes", ofType: "json")!) + let couleurs = JSON(data: dataCouleurs!) + for (_, j) in couleurs["colors"] { + AppValues.linesBackgroundColor[j["lineCode"].string!] = UIColor(hexString: j["background"].string!) + AppValues.linesColor[j["lineCode"].string!] = UIColor(hexString: j["text"].string!) + } + + WatchSessionManager.sharedManager.startSession() + // Perform any final initialization of your application. + } + + func applicationDidBecomeActive() { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillResignActive() { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, etc. + } + +} + +extension UIColor { + convenience init(hexString: String) { + let hex = hexString.stringByTrimmingCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet) + var int = UInt32() + NSScanner(string: hex).scanHexInt(&int) + let a, r, g, b: UInt32 + switch hex.characters.count { + case 3: // RGB (12-bit) + (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) + case 6: // RGB (24-bit) + (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF) + case 8: // ARGB (32-bit) + (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) + default: + (a, r, g, b) = (1, 1, 1, 0) + } + self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255) + } +} diff --git a/iOS/tpg offline Watch Extension/Info.plist b/iOS/tpg offline Watch Extension/Info.plist new file mode 100644 index 00000000..66b3d815 --- /dev/null +++ b/iOS/tpg offline Watch Extension/Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + tpg offline + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 4 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSExtension + + NSExtensionAttributes + + WKAppBundleIdentifier + com.dacostafaro.tpgoffline.watchkitapp + + NSExtensionPointIdentifier + com.apple.watchkit + + UIAppFonts + + FontAwesome.otf + + WKExtensionDelegateClassName + $(PRODUCT_MODULE_NAME).ExtensionDelegate + + diff --git a/iOS/tpg offline Watch Extension/NotificationController.swift b/iOS/tpg offline Watch Extension/NotificationController.swift new file mode 100644 index 00000000..50452576 --- /dev/null +++ b/iOS/tpg offline Watch Extension/NotificationController.swift @@ -0,0 +1,35 @@ +// +// NotificationController.swift +// tpg offline Watch Extension +// +// Created by Alice on 05/06/2016. +// Copyright © 2016 dacostafaro. All rights reserved. +// + +import WatchKit +import Foundation + + +class NotificationController: WKUserNotificationInterfaceController { + + override init() { + // Initialize variables here. + super.init() + // Configure interface objects here. + } + + override func willActivate() { + // This method is called when watch view controller is about to be visible to user + super.willActivate() + } + + override func didDeactivate() { + // This method is called when watch view controller is no longer visible + super.didDeactivate() + } + + + override func didReceiveLocalNotification(localNotification: UILocalNotification, withCompletion completionHandler: ((WKUserNotificationInterfaceType) -> Void)) { + completionHandler(.Default) + } +} diff --git a/iOS/tpg offline Watch Extension/PushNotificationPayload.apns b/iOS/tpg offline Watch Extension/PushNotificationPayload.apns new file mode 100644 index 00000000..c0c973c3 --- /dev/null +++ b/iOS/tpg offline Watch Extension/PushNotificationPayload.apns @@ -0,0 +1,18 @@ +{ + "aps": { + "alert": { + "body": "Test message", + "title": "Optional title" + }, + "category": "myCategory" + }, + + "WatchKit Simulator Actions": [ + { + "title": "Remind in 5 mins", + "identifier": "remind" + } + ], + + "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App." +} diff --git a/iOS/tpg offline Watch Extension/StopsInterfaceController.swift b/iOS/tpg offline Watch Extension/StopsInterfaceController.swift new file mode 100644 index 00000000..99b8ef2a --- /dev/null +++ b/iOS/tpg offline Watch Extension/StopsInterfaceController.swift @@ -0,0 +1,73 @@ +// +// InterfaceController.swift +// tpg offline Watch Extension +// +// Created by Alice on 05/06/2016. +// Copyright © 2016 dacostafaro. All rights reserved. +// + +import WatchKit +import Foundation +import WatchConnectivity + +class StopsInterfaceController: WKInterfaceController { + + @IBOutlet weak var stopsTable: WKInterfaceTable! + @IBOutlet weak var noFavoritesLabel: WKInterfaceLabel! + + override func awakeWithContext(context: AnyObject?) { + super.awakeWithContext(context) + if AppValues.favoritesStops.count == 0 { + noFavoritesLabel.setHidden(false) + stopsTable.setHidden(true) + } + else { + noFavoritesLabel.setHidden(true) + stopsTable.setHidden(false) + refresh() + } + } + + override func willActivate() { + super.willActivate() + + } + + override func didDeactivate() { + super.didDeactivate() + } + + @IBAction func reloadButtonTaped(sender: AnyObject!) { + if AppValues.favoritesStops.count == 0 { + noFavoritesLabel.setHidden(false) + stopsTable.setHidden(true) + } + else { + noFavoritesLabel.setHidden(true) + stopsTable.setHidden(false) + refresh() + } + } + + func refresh() { + stopsTable.setNumberOfRows(AppValues.favoritesStops.count, withRowType: "StopsRow") + var favortesStopsKeys = Array(AppValues.favoritesStops.keys) + favortesStopsKeys.sortInPlace({ (string1, string2) -> Bool in + let stringA = String((AppValues.favoritesStops[string1]?.title)! + (AppValues.favoritesStops[string1]?.subTitle)!) + let stringB = String((AppValues.favoritesStops[string2]?.title)! + (AppValues.favoritesStops[string2]?.subTitle)!) + if stringA.lowercaseString < stringB.lowercaseString { + return true + } + return false + }) + for index in 0.. + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/iOS/tpg offline Watch/Info.plist b/iOS/tpg offline Watch/Info.plist new file mode 100644 index 00000000..69eeafc7 --- /dev/null +++ b/iOS/tpg offline Watch/Info.plist @@ -0,0 +1,39 @@ + + + + + UIAppFonts + + FontAwesome.otf + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + tpg offline + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 4 + CFBundleSignature + ???? + CFBundleVersion + 1 + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + WKCompanionAppBundleIdentifier + com.dacostafaro.tpgoffline + WKWatchKitApp + + + diff --git a/iOS/tpg offline Watch/WatchSessionManager.swift b/iOS/tpg offline Watch/WatchSessionManager.swift new file mode 100644 index 00000000..6e973149 --- /dev/null +++ b/iOS/tpg offline Watch/WatchSessionManager.swift @@ -0,0 +1,53 @@ +// +// WatchSessionDelegate.swift +// tpg offline +// +// Created by Alice on 05/06/2016. +// Copyright © 2016 dacostafaro. All rights reserved. +// + +import WatchConnectivity +import Foundation + +class WatchSessionManager: NSObject, WCSessionDelegate { + + static let sharedManager = WatchSessionManager() + + private override init() { + super.init() + } + + private let session: WCSession = WCSession.defaultSession() + + func startSession() { + session.delegate = self + session.activateSession() + } + + func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) { + if applicationContext["favoritesStops"] != nil { + var favoritesStops = [String:Stop]() + + let tempUnarchive = NSKeyedUnarchiver.unarchiveObjectWithData(applicationContext["favoritesStops"] as! NSData) as! [String:[String:AnyObject]] + for (x, y) in tempUnarchive { + favoritesStops[x] = Stop(dictionnary: y) + } + + AppValues.favoritesStops = favoritesStops + + let defaults = NSUserDefaults.standardUserDefaults() + let encodedData = NSKeyedArchiver.archivedDataWithRootObject(favoritesStops) + defaults.setObject(encodedData, forKey: "favoritesStops") + } + + if applicationContext["offlineDepartures"] != nil { + let offlineDepartures = applicationContext["offlineDepartures"] as! [String: String] + + AppValues.offlineDepartures = offlineDepartures + + let defaults = NSUserDefaults.standardUserDefaults() + let encodedData = NSKeyedArchiver.archivedDataWithRootObject(offlineDepartures) + defaults.setObject(encodedData, forKey: "offlineDepartures") + } + } +} \ No newline at end of file diff --git a/iOS/tpg offline Watch/en.lproj/Interface.strings b/iOS/tpg offline Watch/en.lproj/Interface.strings new file mode 100644 index 00000000..d66d60d7 --- /dev/null +++ b/iOS/tpg offline Watch/en.lproj/Interface.strings @@ -0,0 +1,27 @@ + +/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "0Da-nU-3OS"; */ +"0Da-nU-3OS.text" = "Label"; + +/* Class = "WKInterfaceController"; title = "tpg offline"; ObjectID = "AgC-eL-Hgc"; */ +"AgC-eL-Hgc.title" = "tpg offline"; + +/* Class = "WKInterfaceLabel"; text = "99"; ObjectID = "Fqu-4e-vfY"; */ +"Fqu-4e-vfY.text" = "99"; + +/* Class = "WKInterfaceLabel"; text = "Alert Label"; ObjectID = "IdU-wH-bcW"; */ +"IdU-wH-bcW.text" = "Alert Label"; + +/* Class = "WKInterfaceMenuItem"; title = "Reload"; ObjectID = "TjG-6E-awh"; */ +"TjG-6E-awh.title" = "Reload"; + +/* Class = "WKInterfaceLabel"; text = ">1h"; ObjectID = "f5t-Yr-2AM"; */ +"f5t-Yr-2AM.text" = ">1h"; + +/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "hHj-ef-TlO"; */ +"hHj-ef-TlO.text" = "Label"; + +/* Class = "WKInterfaceLabel"; text = "No favorites detected. You can add favorite in iOS application and press depper for refresh."; ObjectID = "tDI-1N-7lN"; */ +"tDI-1N-7lN.text" = "No favorites detected. You can add favorite in iOS application and press depper for refresh."; + +/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zYc-On-u4e"; */ +"zYc-On-u4e.text" = "Label"; diff --git a/iOS/tpg offline Watch/fr.lproj/Interface.strings b/iOS/tpg offline Watch/fr.lproj/Interface.strings new file mode 100644 index 00000000..ff955d8a --- /dev/null +++ b/iOS/tpg offline Watch/fr.lproj/Interface.strings @@ -0,0 +1,27 @@ + +/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "0Da-nU-3OS"; */ +"0Da-nU-3OS.text" = "Label"; + +/* Class = "WKInterfaceController"; title = "tpg offline"; ObjectID = "AgC-eL-Hgc"; */ +"AgC-eL-Hgc.title" = "tpg offline"; + +/* Class = "WKInterfaceLabel"; text = "99"; ObjectID = "Fqu-4e-vfY"; */ +"Fqu-4e-vfY.text" = "99"; + +/* Class = "WKInterfaceLabel"; text = "Alert Label"; ObjectID = "IdU-wH-bcW"; */ +"IdU-wH-bcW.text" = "Alert Label"; + +/* Class = "WKInterfaceMenuItem"; title = "Reload"; ObjectID = "TjG-6E-awh"; */ +"TjG-6E-awh.title" = "Actualiser"; + +/* Class = "WKInterfaceLabel"; text = ">1h"; ObjectID = "f5t-Yr-2AM"; */ +"f5t-Yr-2AM.text" = ">1h"; + +/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "hHj-ef-TlO"; */ +"hHj-ef-TlO.text" = "Label"; + +/* Class = "WKInterfaceLabel"; text = "No favorites detected. You can add favorite in iOS application and press depper for refresh."; ObjectID = "tDI-1N-7lN"; */ +"tDI-1N-7lN.text" = "Aucun favori. Vous pouvez ajouter des favoris dans l'application iOS et appuyer plus fort pour rafraichir."; + +/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zYc-On-u4e"; */ +"zYc-On-u4e.text" = "Label"; diff --git a/iOS/tpg offline.xcodeproj/project.pbxproj b/iOS/tpg offline.xcodeproj/project.pbxproj index 1b03e2eb..88b83400 100755 --- a/iOS/tpg offline.xcodeproj/project.pbxproj +++ b/iOS/tpg offline.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 000ECABD1C469A3500E4FC92 /* RouteToStopViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 000ECABC1C469A3500E4FC92 /* RouteToStopViewController.swift */; }; 002149151C5BDDC5009C0264 /* CreditsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002149141C5BDDC5009C0264 /* CreditsTableViewController.swift */; }; + 0021FE3A1D29499300A29A0B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0021FE3C1D29499300A29A0B /* Localizable.strings */; }; 002B47E11C01FA6F000BF3E8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002B47E01C01FA6F000BF3E8 /* AppDelegate.swift */; }; 002B47E61C01FA6F000BF3E8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 002B47E41C01FA6F000BF3E8 /* Main.storyboard */; }; 002B47E81C01FA6F000BF3E8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 002B47E71C01FA6F000BF3E8 /* Assets.xcassets */; }; @@ -18,22 +19,39 @@ 002B47F71C01FA87000BF3E8 /* DeparturesTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002B47F41C01FA87000BF3E8 /* DeparturesTableViewCell.swift */; }; 002E5C761C132A680008623D /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002E5C751C132A680008623D /* MapKit.framework */; }; 002E5C781C1337DD0008623D /* NSUserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002E5C771C1337DD0008623D /* NSUserDefaultsExtension.swift */; }; + 002EC5DF1D0D949D005E6365 /* DeparturesRowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002EC5DE1D0D949D005E6365 /* DeparturesRowController.swift */; }; + 002EC5E01D0D9EB8005E6365 /* couleursLignes.json in Resources */ = {isa = PBXBuildFile; fileRef = 00C8DD551C0CCACC004743A5 /* couleursLignes.json */; }; + 002EC5E41D0DA1FB005E6365 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002EC5E31D0DA1FB005E6365 /* CoreText.framework */; }; + 002EC6371D0DAB70005E6365 /* FontAwesome.otf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B5B1C9B23C700C71A06 /* FontAwesome.otf */; }; 00391C471C271D1E005250D4 /* SettingsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00391C461C271D1E005250D4 /* SettingsTableViewController.swift */; }; 00391C491C271DA6005250D4 /* SelectDefaultTabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00391C481C271DA6005250D4 /* SelectDefaultTabBarItem.swift */; }; 003D10EE1C21A47400F9857E /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 003D10ED1C21A46800F9857E /* Ionicons.ttf */; }; 00430B541C9B1EAD00C71A06 /* arrets.json in Resources */ = {isa = PBXBuildFile; fileRef = 00430B531C9B1EAD00C71A06 /* arrets.json */; }; 00430B611C9B23C700C71A06 /* FontAwesome.otf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B5B1C9B23C700C71A06 /* FontAwesome.otf */; }; 00430B621C9B23C700C71A06 /* foundation-icons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B5C1C9B23C700C71A06 /* foundation-icons.ttf */; }; - 00430B641C9B23C700C71A06 /* Material-Design-Iconic-Font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B5E1C9B23C700C71A06 /* Material-Design-Iconic-Font.ttf */; }; - 00430B651C9B23C700C71A06 /* octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B5F1C9B23C700C71A06 /* octicons.ttf */; }; - 00430B661C9B23C700C71A06 /* zocial-regular-webfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B601C9B23C700C71A06 /* zocial-regular-webfont.ttf */; }; 004D812B1C24737800C6AD55 /* Perturbations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004D812A1C24737800C6AD55 /* Perturbations.swift */; }; 004D812D1C2476BD00C6AD55 /* UIKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004D812C1C2476BD00C6AD55 /* UIKitExtension.swift */; }; 004E8BD61C6E23840055006B /* ThemesCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004E8BD51C6E23840055006B /* ThemesCollectionViewController.swift */; }; 004E8BD81C6E24870055006B /* ThemeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004E8BD71C6E24870055006B /* ThemeCollectionViewCell.swift */; }; 00500AF41C1B396F00341F7A /* Stop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00500AF31C1B396F00341F7A /* Stop.swift */; }; + 0053F5631D09D5C500E45632 /* StopsRowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0053F5621D09D5C500E45632 /* StopsRowController.swift */; }; 005572591CE0FE5A00B70D26 /* Route.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005572581CE0FE5A00B70D26 /* Route.swift */; }; 0055725B1CE0FEB500B70D26 /* RoutesConnections.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0055725A1CE0FEB500B70D26 /* RoutesConnections.swift */; }; + 005B44281D18518B009EE12E /* FontAwesome.otf in Resources */ = {isa = PBXBuildFile; fileRef = 00430B5B1C9B23C700C71A06 /* FontAwesome.otf */; }; + 005BAE941D0452FB00F73C8A /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 005BAE921D0452FB00F73C8A /* Interface.storyboard */; }; + 005BAE961D0452FB00F73C8A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 005BAE951D0452FB00F73C8A /* Assets.xcassets */; }; + 005BAE9D1D0452FC00F73C8A /* tpg offline Watch Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 005BAE9C1D0452FB00F73C8A /* tpg offline Watch Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 005BAEA41D0452FC00F73C8A /* StopsInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005BAEA31D0452FC00F73C8A /* StopsInterfaceController.swift */; }; + 005BAEA61D0452FC00F73C8A /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005BAEA51D0452FC00F73C8A /* ExtensionDelegate.swift */; }; + 005BAEA81D0452FC00F73C8A /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005BAEA71D0452FC00F73C8A /* NotificationController.swift */; }; + 005BAEAA1D0452FC00F73C8A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 005BAEA91D0452FC00F73C8A /* Assets.xcassets */; }; + 005BAEAE1D0452FC00F73C8A /* tpg offline Watch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 005BAE901D0452FB00F73C8A /* tpg offline Watch.app */; }; + 005BAEC01D04569800F73C8A /* WatchConnectivity.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 005BAEBF1D04569800F73C8A /* WatchConnectivity.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 005BAEC21D04591800F73C8A /* WatchSessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005BAEC11D04591800F73C8A /* WatchSessionManager.swift */; }; + 005BAEC51D045A5A00F73C8A /* Stop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00500AF31C1B396F00341F7A /* Stop.swift */; }; + 005BAEC61D045A5C00F73C8A /* Departures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00ABBE141C29C81B00479FF4 /* Departures.swift */; }; + 005BAEC71D045BA000F73C8A /* WatchSessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005BAEC31D045A4F00F73C8A /* WatchSessionManager.swift */; }; + 005BAEC91D045C2E00F73C8A /* AppValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005BAEC81D045C2E00F73C8A /* AppValues.swift */; }; 005DF8111C0DF74E00377031 /* StopImageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005DF8101C0DF74E00377031 /* StopImageTableViewCell.swift */; }; 0067FB261CD3B1AD007EFDE6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6D91C7A1BFD0023718F /* Localizable.strings */; }; 0068B63D1CC7C0C1005815CE /* LoadingCellTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0068B63C1CC7C0C1005815CE /* LoadingCellTableViewCell.swift */; }; @@ -47,6 +65,7 @@ 008F53191C18744500127BDA /* AppValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 008F53181C18744500127BDA /* AppValues.swift */; }; 00ABBE151C29C81B00479FF4 /* Departures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00ABBE141C29C81B00479FF4 /* Departures.swift */; }; 00B7CBC71C4A5A6400BB85CC /* TimeSelectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B7CBC61C4A5A6400BB85CC /* TimeSelectionViewController.swift */; }; + 00B870A91D0B2598001027E5 /* DeparturesInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B870A81D0B2598001027E5 /* DeparturesInterfaceController.swift */; }; 00BEB4371CBD61AA00DDD313 /* Thermometer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00BEB4361CBD61AA00DDD313 /* Thermometer.swift */; }; 00C8DD561C0CCACC004743A5 /* couleursLignes.json in Resources */ = {isa = PBXBuildFile; fileRef = 00C8DD551C0CCACC004743A5 /* couleursLignes.json */; }; 00C98C461C480E6E008E8B2A /* RoutesStopsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C98C451C480E6E008E8B2A /* RoutesStopsTableViewController.swift */; }; @@ -62,19 +81,31 @@ 00DD017B1CEE0E2F00F92EAD /* AllDeparturesCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00DD017A1CEE0E2F00F92EAD /* AllDeparturesCollectionViewCell.swift */; }; 00DDC0B21C255CED002B288E /* MapsListTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00DDC0B11C255CED002B288E /* MapsListTableViewController.swift */; }; 00E20C301C4429D6007BAD3D /* LocationSettingsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E20C2F1C4429D6007BAD3D /* LocationSettingsTableViewController.swift */; }; - 6AA6F721BA82513EE3E37063 /* Pods_tpg_offline.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 139EB3711623A6181C3C3BE8 /* Pods_tpg_offline.framework */; }; - AD00CEA21C7D903500527EC7 /* PremiumTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD00CEA11C7D903500527EC7 /* PremiumTableViewController.swift */; }; + 8F6520FDD3B9D2E54EBAA4CA /* Pods_tpg_offline_Watch_Extension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3F8508D901F460022127623 /* Pods_tpg_offline_Watch_Extension.framework */; }; AD0148131C7F6CDE0057E884 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0148121C7F6CDE0057E884 /* WebViewController.swift */; }; AD11CD861C8336AA00DFF4AA /* tpg_offline_UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD11CD851C8336AA00DFF4AA /* tpg_offline_UITests.swift */; }; AD11CD8E1C83373300DFF4AA /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD11CD8D1C83373300DFF4AA /* SnapshotHelper.swift */; }; AD13B1061C78A09500ECCDFD /* FavoriteRouteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD13B1051C78A09500ECCDFD /* FavoriteRouteTableViewCell.swift */; }; AD3F41E21C7DB011009113F0 /* PremiumTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3F41E11C7DB011009113F0 /* PremiumTableViewCell.swift */; }; - AD3F41E41C7DB31A009113F0 /* BuyPremiumTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3F41E31C7DB31A009113F0 /* BuyPremiumTableViewCell.swift */; }; - AD3F41E61C7DBB8A009113F0 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD3F41E51C7DBB8A009113F0 /* StoreKit.framework */; }; ADB2D6D71C7A1BFD0023718F /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6D91C7A1BFD0023718F /* Localizable.strings */; }; + F670C8159862DE0952B72A37 /* Pods_tpg_offline.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27C1A2456E8A9AF7B38F9C1E /* Pods_tpg_offline.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 005BAE9E1D0452FC00F73C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 002B47D51C01FA6F000BF3E8 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 005BAE9B1D0452FB00F73C8A; + remoteInfo = "tpg offline Watch Extension"; + }; + 005BAEAC1D0452FC00F73C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 002B47D51C01FA6F000BF3E8 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 005BAE8F1D0452FB00F73C8A; + remoteInfo = "tpg offline Watch"; + }; AD11CD881C8336AA00DFF4AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 002B47D51C01FA6F000BF3E8 /* Project object */; @@ -85,6 +116,38 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 002EC5FE1D0DA3F1005E6365 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 005BAEB41D0452FC00F73C8A /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 005BAE9D1D0452FC00F73C8A /* tpg offline Watch Extension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; + 005BAEB61D0452FC00F73C8A /* Embed Watch Content */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; + dstSubfolderSpec = 16; + files = ( + 005BAEAE1D0452FC00F73C8A /* tpg offline Watch.app in Embed Watch Content */, + ); + name = "Embed Watch Content"; + runOnlyForDeploymentPostprocessing = 0; + }; 00C6C3111CF5DA17000C1CF7 /* Embed App Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -100,6 +163,11 @@ /* Begin PBXFileReference section */ 000ECABC1C469A3500E4FC92 /* RouteToStopViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RouteToStopViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 002149141C5BDDC5009C0264 /* CreditsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CreditsTableViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; + 0021FE351D2944A400A29A0B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Interface.strings; sourceTree = ""; }; + 0021FE371D2944A600A29A0B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Interface.strings; sourceTree = ""; }; + 0021FE3B1D29499300A29A0B /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; + 0021FE3D1D29499B00A29A0B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; + 0021FE3E1D29499D00A29A0B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 002B47DD1C01FA6F000BF3E8 /* tpg offline.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tpg offline.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 002B47E01C01FA6F000BF3E8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AppDelegate.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 002B47E51C01FA6F000BF3E8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -111,22 +179,37 @@ 002B47F41C01FA87000BF3E8 /* DeparturesTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeparturesTableViewCell.swift; sourceTree = ""; }; 002E5C751C132A680008623D /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 002E5C771C1337DD0008623D /* NSUserDefaultsExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSUserDefaultsExtension.swift; sourceTree = ""; }; + 002EC5DE1D0D949D005E6365 /* DeparturesRowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeparturesRowController.swift; sourceTree = ""; }; + 002EC5E31D0DA1FB005E6365 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS2.2.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; 00391C461C271D1E005250D4 /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SettingsTableViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 00391C481C271DA6005250D4 /* SelectDefaultTabBarItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SelectDefaultTabBarItem.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 003D10ED1C21A46800F9857E /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ionicons.ttf; sourceTree = ""; }; 00430B531C9B1EAD00C71A06 /* arrets.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = arrets.json; sourceTree = ""; }; 00430B5B1C9B23C700C71A06 /* FontAwesome.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome.otf; path = Pods/FontAwesomeKit/FontAwesomeKit/FontAwesome.otf; sourceTree = ""; }; 00430B5C1C9B23C700C71A06 /* foundation-icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "foundation-icons.ttf"; path = "Pods/FontAwesomeKit/FontAwesomeKit/foundation-icons.ttf"; sourceTree = ""; }; - 00430B5E1C9B23C700C71A06 /* Material-Design-Iconic-Font.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Material-Design-Iconic-Font.ttf"; path = "Pods/FontAwesomeKit/FontAwesomeKit/Material-Design-Iconic-Font.ttf"; sourceTree = ""; }; - 00430B5F1C9B23C700C71A06 /* octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = octicons.ttf; path = Pods/FontAwesomeKit/FontAwesomeKit/octicons.ttf; sourceTree = ""; }; - 00430B601C9B23C700C71A06 /* zocial-regular-webfont.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "zocial-regular-webfont.ttf"; path = "Pods/FontAwesomeKit/FontAwesomeKit/zocial-regular-webfont.ttf"; sourceTree = ""; }; 004D812A1C24737800C6AD55 /* Perturbations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Perturbations.swift; sourceTree = ""; }; 004D812C1C2476BD00C6AD55 /* UIKitExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIKitExtension.swift; sourceTree = ""; }; 004E8BD51C6E23840055006B /* ThemesCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ThemesCollectionViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 004E8BD71C6E24870055006B /* ThemeCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeCollectionViewCell.swift; sourceTree = ""; }; 00500AF31C1B396F00341F7A /* Stop.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Stop.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; + 0053F5621D09D5C500E45632 /* StopsRowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StopsRowController.swift; sourceTree = ""; }; 005572581CE0FE5A00B70D26 /* Route.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Route.swift; sourceTree = ""; }; 0055725A1CE0FEB500B70D26 /* RoutesConnections.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoutesConnections.swift; sourceTree = ""; }; + 005BAE901D0452FB00F73C8A /* tpg offline Watch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tpg offline Watch.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 005BAE931D0452FB00F73C8A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = ""; }; + 005BAE951D0452FB00F73C8A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 005BAE971D0452FB00F73C8A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 005BAE9C1D0452FB00F73C8A /* tpg offline Watch Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "tpg offline Watch Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 005BAEA21D0452FC00F73C8A /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = ""; }; + 005BAEA31D0452FC00F73C8A /* StopsInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StopsInterfaceController.swift; sourceTree = ""; }; + 005BAEA51D0452FC00F73C8A /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = ""; }; + 005BAEA71D0452FC00F73C8A /* NotificationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationController.swift; sourceTree = ""; }; + 005BAEA91D0452FC00F73C8A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 005BAEAB1D0452FC00F73C8A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 005BAEBF1D04569800F73C8A /* WatchConnectivity.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WatchConnectivity.framework; path = System/Library/Frameworks/WatchConnectivity.framework; sourceTree = SDKROOT; }; + 005BAEC11D04591800F73C8A /* WatchSessionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchSessionManager.swift; sourceTree = ""; }; + 005BAEC31D045A4F00F73C8A /* WatchSessionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WatchSessionManager.swift; path = "../tpg offline Watch/WatchSessionManager.swift"; sourceTree = ""; }; + 005BAEC81D045C2E00F73C8A /* AppValues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppValues.swift; path = "../tpg offline Watch/AppValues.swift"; sourceTree = ""; }; 005DF8101C0DF74E00377031 /* StopImageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = StopImageTableViewCell.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 0068B63C1CC7C0C1005815CE /* LoadingCellTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadingCellTableViewCell.swift; sourceTree = ""; }; 007266271C259191009EFEB5 /* MapViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = MapViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; @@ -141,6 +224,7 @@ 00ABBE141C29C81B00479FF4 /* Departures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Departures.swift; sourceTree = ""; }; 00B7CBBF1C4A531B00BB85CC /* tpg offline-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "tpg offline-Bridging-Header.h"; sourceTree = ""; }; 00B7CBC61C4A5A6400BB85CC /* TimeSelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = TimeSelectionViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; + 00B870A81D0B2598001027E5 /* DeparturesInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeparturesInterfaceController.swift; sourceTree = ""; }; 00BEB4361CBD61AA00DDD313 /* Thermometer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Thermometer.swift; sourceTree = ""; }; 00C6C3021CF5DA16000C1CF7 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; 00C8DD551C0CCACC004743A5 /* couleursLignes.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = couleursLignes.json; sourceTree = ""; }; @@ -160,24 +244,23 @@ 00DD017A1CEE0E2F00F92EAD /* AllDeparturesCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AllDeparturesCollectionViewCell.swift; sourceTree = ""; }; 00DDC0B11C255CED002B288E /* MapsListTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = MapsListTableViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 00E20C2F1C4429D6007BAD3D /* LocationSettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = LocationSettingsTableViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; - 139EB3711623A6181C3C3BE8 /* Pods_tpg_offline.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tpg_offline.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0CBA50C07BBC5B44B48B8F11 /* Pods-tpg offline Watch Extension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tpg offline Watch Extension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.debug.xcconfig"; sourceTree = ""; }; + 11D8520CFA99930E118500BB /* Pods-tpg offline.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tpg offline.release.xcconfig"; path = "Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.release.xcconfig"; sourceTree = ""; }; 253CE6CB67EE399CF499A811 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 539FFD61F5A22907B10CDAB0 /* Pods-tpg offline.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tpg offline.debug.xcconfig"; path = "Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.debug.xcconfig"; sourceTree = ""; }; - 5D5BB7521D54A8A7E8FAD5FF /* Pods_tpg_offline_Widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tpg_offline_Widget.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AD00CEA11C7D903500527EC7 /* PremiumTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PremiumTableViewController.swift; sourceTree = ""; }; + 27C1A2456E8A9AF7B38F9C1E /* Pods_tpg_offline.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tpg_offline.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AD0148121C7F6CDE0057E884 /* WebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; AD11CD831C8336AA00DFF4AA /* tpg offline UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "tpg offline UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; AD11CD851C8336AA00DFF4AA /* tpg_offline_UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tpg_offline_UITests.swift; sourceTree = ""; }; AD11CD871C8336AA00DFF4AA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AD11CD8D1C83373300DFF4AA /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = ""; }; + AD11CD8D1C83373300DFF4AA /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = ""; usesTabs = 0; }; AD13B1051C78A09500ECCDFD /* FavoriteRouteTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FavoriteRouteTableViewCell.swift; sourceTree = ""; }; AD3F41E11C7DB011009113F0 /* PremiumTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PremiumTableViewCell.swift; sourceTree = ""; }; - AD3F41E31C7DB31A009113F0 /* BuyPremiumTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BuyPremiumTableViewCell.swift; sourceTree = ""; }; - AD3F41E51C7DBB8A009113F0 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; ADB2D6D31C7A1BC30023718F /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Main.strings; sourceTree = ""; }; ADB2D6D41C7A1BC30023718F /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/LaunchScreen.strings; sourceTree = ""; }; ADB2D6D81C7A1BFD0023718F /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; - E73220C66195349E002695C1 /* Pods-tpg offline.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tpg offline.release.xcconfig"; path = "Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.release.xcconfig"; sourceTree = ""; }; + B1B98CE9FCFF7F8966643507 /* Pods-tpg offline.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tpg offline.debug.xcconfig"; path = "Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline.debug.xcconfig"; sourceTree = ""; }; + B37EFC05092C7ED1B6515408 /* Pods-tpg offline Watch Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tpg offline Watch Extension.release.xcconfig"; path = "Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension.release.xcconfig"; sourceTree = ""; }; + D3F8508D901F460022127623 /* Pods_tpg_offline_Watch_Extension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tpg_offline_Watch_Extension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -185,10 +268,26 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 005BAEC01D04569800F73C8A /* WatchConnectivity.framework in Frameworks */, 00D0355C1C0E25D600B3697D /* CoreLocation.framework in Frameworks */, 002E5C761C132A680008623D /* MapKit.framework in Frameworks */, - AD3F41E61C7DBB8A009113F0 /* StoreKit.framework in Frameworks */, - 6AA6F721BA82513EE3E37063 /* Pods_tpg_offline.framework in Frameworks */, + F670C8159862DE0952B72A37 /* Pods_tpg_offline.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 005BAE991D0452FB00F73C8A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8F6520FDD3B9D2E54EBAA4CA /* Pods_tpg_offline_Watch_Extension.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3F73D9D9A88D6A87DE0352F6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 002EC5E41D0DA1FB005E6365 /* CoreText.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -209,16 +308,15 @@ 003D10ED1C21A46800F9857E /* Ionicons.ttf */, 00430B5B1C9B23C700C71A06 /* FontAwesome.otf */, 00430B5C1C9B23C700C71A06 /* foundation-icons.ttf */, - 00430B5E1C9B23C700C71A06 /* Material-Design-Iconic-Font.ttf */, - 00430B5F1C9B23C700C71A06 /* octicons.ttf */, - 00430B601C9B23C700C71A06 /* zocial-regular-webfont.ttf */, 00430B531C9B1EAD00C71A06 /* arrets.json */, 002B47DF1C01FA6F000BF3E8 /* tpg offline */, AD11CD841C8336AA00DFF4AA /* tpg offline UITests */, + 005BAE911D0452FB00F73C8A /* tpg offline Watch */, + 005BAEA01D0452FC00F73C8A /* tpg offline Watch Extension */, 002B47DE1C01FA6F000BF3E8 /* Products */, A65315FEF759993751E0088F /* Frameworks */, 00B7CBBF1C4A531B00BB85CC /* tpg offline-Bridging-Header.h */, - F1EC4FF71627F150B69628C0 /* Pods */, + 40676B7323B0F34A87EAE820 /* Pods */, ); sourceTree = ""; }; @@ -227,6 +325,8 @@ children = ( 002B47DD1C01FA6F000BF3E8 /* tpg offline.app */, AD11CD831C8336AA00DFF4AA /* tpg offline UITests.xctest */, + 005BAE901D0452FB00F73C8A /* tpg offline Watch.app */, + 005BAE9C1D0452FB00F73C8A /* tpg offline Watch Extension.appex */, ); name = Products; sourceTree = ""; @@ -259,12 +359,46 @@ 00E20C2F1C4429D6007BAD3D /* LocationSettingsTableViewController.swift */, 002149141C5BDDC5009C0264 /* CreditsTableViewController.swift */, 004E8BD51C6E23840055006B /* ThemesCollectionViewController.swift */, - AD00CEA11C7D903500527EC7 /* PremiumTableViewController.swift */, AD0148121C7F6CDE0057E884 /* WebViewController.swift */, ); name = Settings; sourceTree = ""; }; + 005BAE911D0452FB00F73C8A /* tpg offline Watch */ = { + isa = PBXGroup; + children = ( + 005BAE921D0452FB00F73C8A /* Interface.storyboard */, + 005BAE951D0452FB00F73C8A /* Assets.xcassets */, + 005BAE971D0452FB00F73C8A /* Info.plist */, + ); + path = "tpg offline Watch"; + sourceTree = ""; + }; + 005BAEA01D0452FC00F73C8A /* tpg offline Watch Extension */ = { + isa = PBXGroup; + children = ( + 00B870A71D0B255A001027E5 /* InterfacesControllers */, + 005BAEC31D045A4F00F73C8A /* WatchSessionManager.swift */, + 005BAEC81D045C2E00F73C8A /* AppValues.swift */, + 005BAEA51D0452FC00F73C8A /* ExtensionDelegate.swift */, + 005BAEA71D0452FC00F73C8A /* NotificationController.swift */, + 005BAEA91D0452FC00F73C8A /* Assets.xcassets */, + 005BAEAB1D0452FC00F73C8A /* Info.plist */, + 005BAEA11D0452FC00F73C8A /* Supporting Files */, + 00B870A61D0B24C5001027E5 /* RowsControllers */, + 0021FE3C1D29499300A29A0B /* Localizable.strings */, + ); + path = "tpg offline Watch Extension"; + sourceTree = ""; + }; + 005BAEA11D0452FC00F73C8A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 005BAEA21D0452FC00F73C8A /* PushNotificationPayload.apns */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; 005DF8121C0DF75300377031 /* Cells */ = { isa = PBXGroup; children = ( @@ -272,7 +406,6 @@ 005DF8101C0DF74E00377031 /* StopImageTableViewCell.swift */, 004E8BD71C6E24870055006B /* ThemeCollectionViewCell.swift */, AD3F41E11C7DB011009113F0 /* PremiumTableViewCell.swift */, - AD3F41E31C7DB31A009113F0 /* BuyPremiumTableViewCell.swift */, 00DA802E1CBAA9090006ADB3 /* SeeLineTableViewCell.swift */, 0068B63C1CC7C0C1005815CE /* LoadingCellTableViewCell.swift */, 00DD017A1CEE0E2F00F92EAD /* AllDeparturesCollectionViewCell.swift */, @@ -306,6 +439,24 @@ name = Routes; sourceTree = ""; }; + 00B870A61D0B24C5001027E5 /* RowsControllers */ = { + isa = PBXGroup; + children = ( + 0053F5621D09D5C500E45632 /* StopsRowController.swift */, + 002EC5DE1D0D949D005E6365 /* DeparturesRowController.swift */, + ); + name = RowsControllers; + sourceTree = ""; + }; + 00B870A71D0B255A001027E5 /* InterfacesControllers */ = { + isa = PBXGroup; + children = ( + 005BAEA31D0452FC00F73C8A /* StopsInterfaceController.swift */, + 00B870A81D0B2598001027E5 /* DeparturesInterfaceController.swift */, + ); + name = InterfacesControllers; + sourceTree = ""; + }; 00DDC0AC1C254FD7002B288E /* Departures */ = { isa = PBXGroup; children = ( @@ -339,6 +490,7 @@ 00C98C491C4810E1008E8B2A /* SearchRoute.swift */, 00BEB4361CBD61AA00DDD313 /* Thermometer.swift */, 0055725A1CE0FEB500B70D26 /* RoutesConnections.swift */, + 005BAEC11D04591800F73C8A /* WatchSessionManager.swift */, ); name = App; sourceTree = ""; @@ -361,16 +513,28 @@ name = Maps; sourceTree = ""; }; + 40676B7323B0F34A87EAE820 /* Pods */ = { + isa = PBXGroup; + children = ( + B1B98CE9FCFF7F8966643507 /* Pods-tpg offline.debug.xcconfig */, + 11D8520CFA99930E118500BB /* Pods-tpg offline.release.xcconfig */, + 0CBA50C07BBC5B44B48B8F11 /* Pods-tpg offline Watch Extension.debug.xcconfig */, + B37EFC05092C7ED1B6515408 /* Pods-tpg offline Watch Extension.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; A65315FEF759993751E0088F /* Frameworks */ = { isa = PBXGroup; children = ( - AD3F41E51C7DBB8A009113F0 /* StoreKit.framework */, + 002EC5E31D0DA1FB005E6365 /* CoreText.framework */, + 005BAEBF1D04569800F73C8A /* WatchConnectivity.framework */, 002E5C751C132A680008623D /* MapKit.framework */, 00D0355B1C0E25D600B3697D /* CoreLocation.framework */, 253CE6CB67EE399CF499A811 /* Pods.framework */, - 139EB3711623A6181C3C3BE8 /* Pods_tpg_offline.framework */, 00C6C3021CF5DA16000C1CF7 /* NotificationCenter.framework */, - 5D5BB7521D54A8A7E8FAD5FF /* Pods_tpg_offline_Widget.framework */, + 27C1A2456E8A9AF7B38F9C1E /* Pods_tpg_offline.framework */, + D3F8508D901F460022127623 /* Pods_tpg_offline_Watch_Extension.framework */, ); name = Frameworks; sourceTree = ""; @@ -385,15 +549,6 @@ path = "tpg offline UITests"; sourceTree = ""; }; - F1EC4FF71627F150B69628C0 /* Pods */ = { - isa = PBXGroup; - children = ( - 539FFD61F5A22907B10CDAB0 /* Pods-tpg offline.debug.xcconfig */, - E73220C66195349E002695C1 /* Pods-tpg offline.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -401,27 +556,65 @@ isa = PBXNativeTarget; buildConfigurationList = 002B47EF1C01FA6F000BF3E8 /* Build configuration list for PBXNativeTarget "tpg offline" */; buildPhases = ( - 3257DBC54C85AECC59F63B1F /* 📦 Check Pods Manifest.lock */, - 819CE82D7E4E10B8611CB691 /* uD83DuDCE6 Check Pods Manifest.lock */, + 819CE82D7E4E10B8611CB691 /* [CP] Check Pods Manifest.lock */, 002B47D91C01FA6F000BF3E8 /* Sources */, 002B47DA1C01FA6F000BF3E8 /* Frameworks */, 002B47DB1C01FA6F000BF3E8 /* Resources */, 0000AA101CEC98F4002E6B9A /* uD83DuDCE6 Fabric */, - 42DA7807C14FFD31F49FDE75 /* uD83DuDCE6 Embed Pods Frameworks */, - 81EA3E643D789D91F73619C7 /* uD83DuDCE6 Copy Pods Resources */, + 42DA7807C14FFD31F49FDE75 /* [CP] Embed Pods Frameworks */, + 81EA3E643D789D91F73619C7 /* [CP] Copy Pods Resources */, 00C6C3111CF5DA17000C1CF7 /* Embed App Extensions */, - 907F31B0A98F9474746F6C74 /* 📦 Embed Pods Frameworks */, - 9884B974D93DE1FAAE2FC0C4 /* 📦 Copy Pods Resources */, + 005BAEB61D0452FC00F73C8A /* Embed Watch Content */, ); buildRules = ( ); dependencies = ( + 005BAEAD1D0452FC00F73C8A /* PBXTargetDependency */, ); name = "tpg offline"; productName = "tpg offline"; productReference = 002B47DD1C01FA6F000BF3E8 /* tpg offline.app */; productType = "com.apple.product-type.application"; }; + 005BAE8F1D0452FB00F73C8A /* tpg offline Watch */ = { + isa = PBXNativeTarget; + buildConfigurationList = 005BAEB51D0452FC00F73C8A /* Build configuration list for PBXNativeTarget "tpg offline Watch" */; + buildPhases = ( + 005BAE8E1D0452FB00F73C8A /* Resources */, + 005BAEB41D0452FC00F73C8A /* Embed App Extensions */, + 3F73D9D9A88D6A87DE0352F6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 005BAE9F1D0452FC00F73C8A /* PBXTargetDependency */, + ); + name = "tpg offline Watch"; + productName = "tpg offline Watch"; + productReference = 005BAE901D0452FB00F73C8A /* tpg offline Watch.app */; + productType = "com.apple.product-type.application.watchapp2"; + }; + 005BAE9B1D0452FB00F73C8A /* tpg offline Watch Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 005BAEB31D0452FC00F73C8A /* Build configuration list for PBXNativeTarget "tpg offline Watch Extension" */; + buildPhases = ( + 11680781195D29544EC0DFCC /* [CP] Check Pods Manifest.lock */, + 005BAE981D0452FB00F73C8A /* Sources */, + 005BAE991D0452FB00F73C8A /* Frameworks */, + 005BAE9A1D0452FB00F73C8A /* Resources */, + 002EC5FE1D0DA3F1005E6365 /* Embed Frameworks */, + BFEF9BDFA598FDEE5E3351FB /* [CP] Embed Pods Frameworks */, + 4E13F8F49DD58B9F5EBC7F0B /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "tpg offline Watch Extension"; + productName = "tpg offline Watch Extension"; + productReference = 005BAE9C1D0452FB00F73C8A /* tpg offline Watch Extension.appex */; + productType = "com.apple.product-type.watchkit2-extension"; + }; AD11CD821C8336AA00DFF4AA /* tpg offline UITests */ = { isa = PBXNativeTarget; buildConfigurationList = AD11CD8C1C8336AA00DFF4AA /* Build configuration list for PBXNativeTarget "tpg offline UITests" */; @@ -447,24 +640,34 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0710; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = dacostafaro; TargetAttributes = { 002B47DC1C01FA6F000BF3E8 = { CreatedOnToolsVersion = 7.1.1; DevelopmentTeam = 767R4Y4A3U; + LastSwiftMigration = 0800; SystemCapabilities = { com.apple.BackgroundModes = { enabled = 1; }; com.apple.InAppPurchase = { - enabled = 1; + enabled = 0; }; com.apple.Maps.iOS = { enabled = 1; }; }; }; + 005BAE8F1D0452FB00F73C8A = { + CreatedOnToolsVersion = 7.3.1; + DevelopmentTeam = 767R4Y4A3U; + }; + 005BAE9B1D0452FB00F73C8A = { + CreatedOnToolsVersion = 7.3.1; + DevelopmentTeam = 767R4Y4A3U; + LastSwiftMigration = 0800; + }; AD11CD821C8336AA00DFF4AA = { CreatedOnToolsVersion = 7.3; TestTargetID = 002B47DC1C01FA6F000BF3E8; @@ -487,6 +690,8 @@ targets = ( 002B47DC1C01FA6F000BF3E8 /* tpg offline */, AD11CD821C8336AA00DFF4AA /* tpg offline UITests */, + 005BAE8F1D0452FB00F73C8A /* tpg offline Watch */, + 005BAE9B1D0452FB00F73C8A /* tpg offline Watch Extension */, ); }; /* End PBXProject section */ @@ -498,19 +703,37 @@ files = ( 003D10EE1C21A47400F9857E /* Ionicons.ttf in Resources */, 00430B611C9B23C700C71A06 /* FontAwesome.otf in Resources */, - 00430B661C9B23C700C71A06 /* zocial-regular-webfont.ttf in Resources */, - 00430B641C9B23C700C71A06 /* Material-Design-Iconic-Font.ttf in Resources */, 00430B621C9B23C700C71A06 /* foundation-icons.ttf in Resources */, 002B47EB1C01FA6F000BF3E8 /* LaunchScreen.storyboard in Resources */, 002B47E81C01FA6F000BF3E8 /* Assets.xcassets in Resources */, ADB2D6D71C7A1BFD0023718F /* Localizable.strings in Resources */, - 00430B651C9B23C700C71A06 /* octicons.ttf in Resources */, 00430B541C9B1EAD00C71A06 /* arrets.json in Resources */, 002B47E61C01FA6F000BF3E8 /* Main.storyboard in Resources */, 00C8DD561C0CCACC004743A5 /* couleursLignes.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; + 005BAE8E1D0452FB00F73C8A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 005BAE961D0452FB00F73C8A /* Assets.xcassets in Resources */, + 005BAE941D0452FB00F73C8A /* Interface.storyboard in Resources */, + 005B44281D18518B009EE12E /* FontAwesome.otf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 005BAE9A1D0452FB00F73C8A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 005BAEAA1D0452FC00F73C8A /* Assets.xcassets in Resources */, + 0021FE3A1D29499300A29A0B /* Localizable.strings in Resources */, + 002EC5E01D0D9EB8005E6365 /* couleursLignes.json in Resources */, + 002EC6371D0DAB70005E6365 /* FontAwesome.otf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AD11CD811C8336AA00DFF4AA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -536,14 +759,14 @@ shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Fabric/run\" 75b8798b16086f8a41d0d9fbe73703be77a9706c 598a875e80bdece5e37bb2c05ba976b83626e6d2ac1016c6335b76beadf12eca"; }; - 3257DBC54C85AECC59F63B1F /* 📦 Check Pods Manifest.lock */ = { + 11680781195D29544EC0DFCC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Check Pods Manifest.lock"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -551,14 +774,14 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - 42DA7807C14FFD31F49FDE75 /* uD83DuDCE6 Embed Pods Frameworks */ = { + 42DA7807C14FFD31F49FDE75 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "uD83DuDCE6 Embed Pods Frameworks"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -566,64 +789,64 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 819CE82D7E4E10B8611CB691 /* uD83DuDCE6 Check Pods Manifest.lock */ = { + 4E13F8F49DD58B9F5EBC7F0B /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "uD83DuDCE6 Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 81EA3E643D789D91F73619C7 /* uD83DuDCE6 Copy Pods Resources */ = { + 819CE82D7E4E10B8611CB691 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "uD83DuDCE6 Copy Pods Resources"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh\"\n"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - 907F31B0A98F9474746F6C74 /* 📦 Embed Pods Frameworks */ = { + 81EA3E643D789D91F73619C7 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-frameworks.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 9884B974D93DE1FAAE2FC0C4 /* 📦 Copy Pods Resources */ = { + BFEF9BDFA598FDEE5E3351FB /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline/Pods-tpg offline-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-tpg offline Watch Extension/Pods-tpg offline Watch Extension-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -655,7 +878,6 @@ 00391C471C271D1E005250D4 /* SettingsTableViewController.swift in Sources */, 00ABBE151C29C81B00479FF4 /* Departures.swift in Sources */, 005572591CE0FE5A00B70D26 /* Route.swift in Sources */, - AD3F41E41C7DB31A009113F0 /* BuyPremiumTableViewCell.swift in Sources */, 002B47F51C01FA87000BF3E8 /* StopsTableViewController.swift in Sources */, 00E20C301C4429D6007BAD3D /* LocationSettingsTableViewController.swift in Sources */, AD0148131C7F6CDE0057E884 /* WebViewController.swift in Sources */, @@ -667,13 +889,13 @@ 007778FA1CEB5089007C5630 /* SeeAllDeparturesViewController.swift in Sources */, 007D924B1C4A989F0036BEE6 /* SwitchTableViewCell.swift in Sources */, 0055725B1CE0FEB500B70D26 /* RoutesConnections.swift in Sources */, - AD00CEA21C7D903500527EC7 /* PremiumTableViewController.swift in Sources */, 002B47E11C01FA6F000BF3E8 /* AppDelegate.swift in Sources */, 00B7CBC71C4A5A6400BB85CC /* TimeSelectionViewController.swift in Sources */, 00DCD9591C285EBB0094C0EB /* Ticket.swift in Sources */, 0068B63D1CC7C0C1005815CE /* LoadingCellTableViewCell.swift in Sources */, 004D812B1C24737800C6AD55 /* Perturbations.swift in Sources */, 005DF8111C0DF74E00377031 /* StopImageTableViewCell.swift in Sources */, + 005BAEC21D04591800F73C8A /* WatchSessionManager.swift in Sources */, 008B84441C232D84007BE1B3 /* IncidentsTableViewController.swift in Sources */, 007D924D1C4A98A80036BEE6 /* ButtonTableViewCell.swift in Sources */, 00DDC0B21C255CED002B288E /* MapsListTableViewController.swift in Sources */, @@ -682,6 +904,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 005BAE981D0452FB00F73C8A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0053F5631D09D5C500E45632 /* StopsRowController.swift in Sources */, + 002EC5DF1D0D949D005E6365 /* DeparturesRowController.swift in Sources */, + 005BAEA81D0452FC00F73C8A /* NotificationController.swift in Sources */, + 00B870A91D0B2598001027E5 /* DeparturesInterfaceController.swift in Sources */, + 005BAEA61D0452FC00F73C8A /* ExtensionDelegate.swift in Sources */, + 005BAEC71D045BA000F73C8A /* WatchSessionManager.swift in Sources */, + 005BAEA41D0452FC00F73C8A /* StopsInterfaceController.swift in Sources */, + 005BAEC91D045C2E00F73C8A /* AppValues.swift in Sources */, + 005BAEC51D045A5A00F73C8A /* Stop.swift in Sources */, + 005BAEC61D045A5C00F73C8A /* Departures.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AD11CD7F1C8336AA00DFF4AA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -694,6 +933,16 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 005BAE9F1D0452FC00F73C8A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 005BAE9B1D0452FB00F73C8A /* tpg offline Watch Extension */; + targetProxy = 005BAE9E1D0452FC00F73C8A /* PBXContainerItemProxy */; + }; + 005BAEAD1D0452FC00F73C8A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 005BAE8F1D0452FB00F73C8A /* tpg offline Watch */; + targetProxy = 005BAEAC1D0452FC00F73C8A /* PBXContainerItemProxy */; + }; AD11CD891C8336AA00DFF4AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 002B47DC1C01FA6F000BF3E8 /* tpg offline */; @@ -702,6 +951,16 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ + 0021FE3C1D29499300A29A0B /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 0021FE3B1D29499300A29A0B /* Base */, + 0021FE3D1D29499B00A29A0B /* fr */, + 0021FE3E1D29499D00A29A0B /* en */, + ); + name = Localizable.strings; + sourceTree = ""; + }; 002B47E41C01FA6F000BF3E8 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -722,6 +981,16 @@ name = LaunchScreen.storyboard; sourceTree = ""; }; + 005BAE921D0452FB00F73C8A /* Interface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 005BAE931D0452FB00F73C8A /* Base */, + 0021FE351D2944A400A29A0B /* fr */, + 0021FE371D2944A600A29A0B /* en */, + ); + name = Interface.storyboard; + sourceTree = ""; + }; ADB2D6D91C7A1BFD0023718F /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( @@ -739,6 +1008,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -784,6 +1054,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -820,8 +1091,9 @@ }; 002B47F01C01FA6F000BF3E8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 539FFD61F5A22907B10CDAB0 /* Pods-tpg offline.debug.xcconfig */; + baseConfigurationReference = B1B98CE9FCFF7F8966643507 /* Pods-tpg offline.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -843,20 +1115,22 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MACH_O_TYPE = mh_execute; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\""; + OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -D DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.dacostafaro.tpgoffline; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; SWIFT_OBJC_BRIDGING_HEADER = "tpg offline-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 2.3; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; 002B47F11C01FA6F000BF3E8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E73220C66195349E002695C1 /* Pods-tpg offline.release.xcconfig */; + baseConfigurationReference = 11D8520CFA99930E118500BB /* Pods-tpg offline.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -877,16 +1151,96 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MACH_O_TYPE = mh_execute; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\""; + OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -D DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.dacostafaro.tpgoffline; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; SWIFT_OBJC_BRIDGING_HEADER = "tpg offline-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 2.3; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; + 005BAEAF1D0452FC00F73C8A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + IBSC_MODULE = tpg_offline_Watch_Extension; + INFOPLIST_FILE = "tpg offline Watch/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = com.dacostafaro.tpgoffline.watchkitapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.2; + }; + name = Debug; + }; + 005BAEB01D0452FC00F73C8A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + IBSC_MODULE = tpg_offline_Watch_Extension; + INFOPLIST_FILE = "tpg offline Watch/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = com.dacostafaro.tpgoffline.watchkitapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.2; + }; + name = Release; + }; + 005BAEB11D0452FC00F73C8A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0CBA50C07BBC5B44B48B8F11 /* Pods-tpg offline Watch Extension.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ANALYZER_NONNULL = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "tpg offline Watch Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.dacostafaro.tpgoffline.watchkitapp.watchkitextension; + PRODUCT_NAME = "${TARGET_NAME}"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.2; + }; + name = Debug; + }; + 005BAEB21D0452FC00F73C8A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B37EFC05092C7ED1B6515408 /* Pods-tpg offline Watch Extension.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ANALYZER_NONNULL = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "tpg offline Watch Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.dacostafaro.tpgoffline.watchkitapp.watchkitextension; + PRODUCT_NAME = "${TARGET_NAME}"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 2.3; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.2; + }; + name = Release; + }; AD11CD8A1C8336AA00DFF4AA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -896,7 +1250,6 @@ "$(PROJECT_DIR)", ); INFOPLIST_FILE = "tpg offline UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.dacostafaro.tpg-offline-UITests"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -913,10 +1266,10 @@ "$(PROJECT_DIR)", ); INFOPLIST_FILE = "tpg offline UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.dacostafaro.tpg-offline-UITests"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TEST_TARGET_NAME = "tpg offline"; }; name = Release; @@ -942,6 +1295,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 005BAEB31D0452FC00F73C8A /* Build configuration list for PBXNativeTarget "tpg offline Watch Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 005BAEB11D0452FC00F73C8A /* Debug */, + 005BAEB21D0452FC00F73C8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 005BAEB51D0452FC00F73C8A /* Build configuration list for PBXNativeTarget "tpg offline Watch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 005BAEAF1D0452FC00F73C8A /* Debug */, + 005BAEB01D0452FC00F73C8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; AD11CD8C1C8336AA00DFF4AA /* Build configuration list for PBXNativeTarget "tpg offline UITests" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/iOS/tpg offline.xcodeproj/xcshareddata/xcschemes/tpg offline Travis CI.xcscheme b/iOS/tpg offline.xcodeproj/xcshareddata/xcschemes/tpg offline Travis CI.xcscheme index a760c49f..bf0ab21a 100644 --- a/iOS/tpg offline.xcodeproj/xcshareddata/xcschemes/tpg offline Travis CI.xcscheme +++ b/iOS/tpg offline.xcodeproj/xcshareddata/xcschemes/tpg offline Travis CI.xcscheme @@ -1,6 +1,6 @@ @@ -34,6 +34,20 @@ ReferencedContainer = "container:tpg offline.xcodeproj"> + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline Watch.xcscheme b/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline Watch.xcscheme new file mode 100644 index 00000000..15f5c2d0 --- /dev/null +++ b/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline Watch.xcscheme @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline.xcscheme b/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline.xcscheme index 224afdd0..51c60504 100644 --- a/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline.xcscheme +++ b/iOS/tpg offline.xcodeproj/xcuserdata/Alice.xcuserdatad/xcschemes/tpg offline.xcscheme @@ -1,6 +1,6 @@ orderHint 2
+ tpg offline Watch (Notification).xcscheme + + orderHint + 4 + + tpg offline Watch.xcscheme + + orderHint + 3 + tpg offline.xcscheme orderHint @@ -37,6 +47,11 @@ primary + 005BAE8F1D0452FB00F73C8A + + primary + + 00AAA5791CB963D2002C6509 primary diff --git a/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/tpg offline Watch.xcscheme b/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/tpg offline Watch.xcscheme new file mode 100644 index 00000000..f31d9039 --- /dev/null +++ b/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/tpg offline Watch.xcscheme @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist b/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist index b412c7e3..20f11676 100755 --- a/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/iOS/tpg offline.xcodeproj/xcuserdata/remy.xcuserdatad/xcschemes/xcschememanagement.plist @@ -9,10 +9,20 @@ orderHint 1 + tpg offline Travis CI.xcscheme_^#shared#^_ + + orderHint + 3 + tpg offline UITests.xcscheme orderHint - 15 + 2 + + tpg offline Watch.xcscheme + + orderHint + 4 tpg offline.xcscheme @@ -32,6 +42,11 @@ primary + 005BAE8F1D0452FB00F73C8A + + primary + + AD11CD821C8336AA00DFF4AA primary diff --git a/iOS/tpg offline.xcworkspace/contents.xcworkspacedata b/iOS/tpg offline.xcworkspace/contents.xcworkspacedata old mode 100755 new mode 100644 index 40978e22..05ea5be7 --- a/iOS/tpg offline.xcworkspace/contents.xcworkspacedata +++ b/iOS/tpg offline.xcworkspace/contents.xcworkspacedata @@ -1,9 +1,6 @@ - - diff --git a/iOS/tpg offline.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/iOS/tpg offline.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100755 index 08de0be8..00000000 --- a/iOS/tpg offline.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded - - - diff --git a/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/UserInterfaceState.xcuserstate old mode 100755 new mode 100644 index d4ab2c14..b7a22a28 Binary files a/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/UserInterfaceState.xcuserstate and b/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist old mode 100755 new mode 100644 index 337d1fdd..ed9a9b4d --- a/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/iOS/tpg offline.xcworkspace/xcuserdata/Alice.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -2,40 +2,4 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/tpg offline.xcworkspace/xcuserdata/bnet.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/tpg offline.xcworkspace/xcuserdata/bnet.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index d9f180e4..00000000 Binary files a/iOS/tpg offline.xcworkspace/xcuserdata/bnet.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/iOS/tpg offline.xcworkspace/xcuserdata/bnet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/iOS/tpg offline.xcworkspace/xcuserdata/bnet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100755 index ed9a9b4d..00000000 --- a/iOS/tpg offline.xcworkspace/xcuserdata/bnet.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/UserInterfaceState.xcuserstate old mode 100755 new mode 100644 index 67414f6b..0369c703 Binary files a/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/UserInterfaceState.xcuserstate and b/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100755 index 08eafd1c..00000000 --- a/iOS/tpg offline.xcworkspace/xcuserdata/remy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/tpg offline/AppDelegate.swift b/iOS/tpg offline/AppDelegate.swift index cec43f50..c8201d2f 100755 --- a/iOS/tpg offline/AppDelegate.swift +++ b/iOS/tpg offline/AppDelegate.swift @@ -14,7 +14,7 @@ import ChameleonFramework import Async import Fabric import Crashlytics -import SwiftTweaks +import SwiftyBeaver @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { @@ -23,13 +23,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate { let defaults = NSUserDefaults.standardUserDefaults() func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { - /*let rootVc = window?.rootViewController - window = TweakWindow(frame: UIScreen.mainScreen().bounds, tweakStore: TpgOfflineTweaks.defaultStore) - window!.rootViewController = rootVc - window!.makeKeyAndVisible()*/ + let console = ConsoleDestination() + AppValues.logger.addDestination(console) + #if DEBUG + AppValues.logger.info("Debug mode") + #else + AppValues.logger.info("Release mode") + Fabric.with([Crashlytics.self]) + #endif - AppValues.logger.enabled = true - //Fabric.with([Crashlytics.self]) + if #available(iOS 9.0, *) { + WatchSessionManager.sharedManager.startSession() + } getDefaults() setTabBar() @@ -67,14 +72,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { tabBarController.tabBar.tintColor = AppValues.textColor let view = UIView(frame: CGRect(x: 0, y: 0, width: 64, height: 49)) - if ContrastColorOf(AppValues.secondaryColor, returnFlat: true) == FlatWhite() { - tabBarController.tabBar.barTintColor = AppValues.secondaryColor - view.backgroundColor = AppValues.secondaryColor.darkenByPercentage(0.1) - } - else { - tabBarController.tabBar.barTintColor = AppValues.secondaryColor.darkenByPercentage(0.1) - view.backgroundColor = AppValues.secondaryColor - } + tabBarController.tabBar.barTintColor = AppValues.primaryColor + view.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.05) + UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0) view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) let image = UIGraphicsGetImageFromCurrentImageContext() @@ -105,8 +105,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { iconeParametre.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) tabBarController.tabBar.items![4].image = iconeParametre.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) tabBarController.tabBar.items![4].selectedImage = iconeParametre.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - - if !defaults.boolForKey("tutorial") { + + if !defaults.boolForKey("tutorial") && !(NSProcessInfo.processInfo().arguments.contains("-donotask")) { + tabBarController.selectedIndex = 4 + } + else if !defaults.boolForKey("version4") && !(NSProcessInfo.processInfo().arguments.contains("-donotask")) { tabBarController.selectedIndex = 4 } else { @@ -116,6 +119,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func getDefaults() { let group = AsyncGroup() + group.background { let dataArrets = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("arrets", ofType: "json")!) let arrets = JSON(data: dataArrets!) @@ -145,6 +149,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return false }) } + + group.background { if self.defaults.objectForKey("arretsFavoris") == nil { AppValues.favoritesStops = [:] @@ -178,15 +184,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } } + group.background { let dataCouleurs = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("couleursLignes", ofType: "json")!) let couleurs = JSON(data: dataCouleurs!) - for i in 0 ..< couleurs["colors"].count { - AppValues.linesBackgroundColor[couleurs["colors"][i]["lineCode"].string!] = UIColor(hexString: couleurs["colors"][i]["background"].string, withAlpha: 1) - AppValues.linesColor[couleurs["colors"][i]["lineCode"].string!] = UIColor(hexString: couleurs["colors"][i]["text"].string, withAlpha: 1) + for (_, j) in couleurs["colors"] { + AppValues.linesBackgroundColor[j["lineCode"].string!] = UIColor(hexString: j["background"].string, withAlpha: 1) + AppValues.linesColor[j["lineCode"].string!] = UIColor(hexString: j["text"].string, withAlpha: 1) } } + group.background { var decoded = self.defaults.objectForKey("itinerairesFavoris") if decoded == nil { @@ -229,27 +237,21 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } } - if (NSProcessInfo.processInfo().arguments.contains("-premium")) { - AppValues.premium = true - } - else { - AppValues.premium = self.defaults.boolForKey("premium") - } - if self.defaults.colorForKey("primaryColor") == nil { self.defaults.setColor(AppValues.primaryColor, forKey: "primaryColor") } else { AppValues.primaryColor = self.defaults.colorForKey("primaryColor") + AppValues.primaryColor = self.defaults.colorForKey("primaryColor") } - if self.defaults.colorForKey("secondaryColor") == nil { - self.defaults.setColor(AppValues.secondaryColor, forKey: "secondaryColor") - } - else { - AppValues.secondaryColor = self.defaults.colorForKey("secondaryColor") - } + /*if self.defaults.colorForKey("primaryColor") == nil { + self.defaults.setColor(AppValues.primaryColor, forKey: "primaryColor") + } + else { + AppValues.primaryColor = self.defaults.colorForKey("primaryColor") + }*/ if self.defaults.colorForKey("textColor") == nil { self.defaults.setColor(AppValues.textColor, forKey: "textColor") diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Contents.json index 2915894c..a53566ba 100755 --- a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -81,6 +81,7 @@ { "size" : "24x24", "idiom" : "watch", + "filename" : "Icon-24@2x.png", "scale" : "2x", "role" : "notificationCenter", "subtype" : "38mm" @@ -88,6 +89,7 @@ { "size" : "27.5x27.5", "idiom" : "watch", + "filename" : "Icon-27_5@2x.png", "scale" : "2x", "role" : "notificationCenter", "subtype" : "42mm" @@ -95,18 +97,21 @@ { "size" : "29x29", "idiom" : "watch", + "filename" : "Icon-29@2x.png", "role" : "companionSettings", "scale" : "2x" }, { "size" : "29x29", "idiom" : "watch", + "filename" : "Icon-29@3x.png", "role" : "companionSettings", "scale" : "3x" }, { "size" : "40x40", "idiom" : "watch", + "filename" : "Icon-40@2x.png", "scale" : "2x", "role" : "appLauncher", "subtype" : "38mm" @@ -114,6 +119,7 @@ { "size" : "86x86", "idiom" : "watch", + "filename" : "Icon-86@2x.png", "scale" : "2x", "role" : "quickLook", "subtype" : "38mm" @@ -121,6 +127,7 @@ { "size" : "98x98", "idiom" : "watch", + "filename" : "Icon-98@2x.png", "scale" : "2x", "role" : "quickLook", "subtype" : "42mm" diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-24@2x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-24@2x.png new file mode 100644 index 00000000..65a8b7ac Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-24@2x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-27_5@2x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-27_5@2x.png new file mode 100644 index 00000000..91d8b132 Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-27_5@2x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png new file mode 100644 index 00000000..d604889b Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png new file mode 100644 index 00000000..b983fb5e Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png new file mode 100644 index 00000000..bd044cc7 Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-86@2x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-86@2x.png new file mode 100644 index 00000000..7e16836b Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-86@2x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-98@2x.png b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-98@2x.png new file mode 100644 index 00000000..2450832f Binary files /dev/null and b/iOS/tpg offline/Assets.xcassets/AppIcon.appiconset/Icon-98@2x.png differ diff --git a/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight.png b/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight.png deleted file mode 100755 index 0d81daf3..00000000 Binary files a/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight.png and /dev/null differ diff --git a/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight@2x.png b/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight@2x.png deleted file mode 100755 index 148abb18..00000000 Binary files a/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight@2x.png and /dev/null differ diff --git a/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight@3x.png b/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight@3x.png deleted file mode 100755 index 98483b41..00000000 Binary files a/iOS/tpg offline/Assets.xcassets/TestFlight.imageset/TestFlight@3x.png and /dev/null differ diff --git a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels.png b/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels.png deleted file mode 100755 index 04be2860..00000000 Binary files a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels.png and /dev/null differ diff --git a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels@2x.png b/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels@2x.png deleted file mode 100755 index 100b93a5..00000000 Binary files a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels@2x.png and /dev/null differ diff --git a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels@3x.png b/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels@3x.png deleted file mode 100755 index e5158d38..00000000 Binary files a/iOS/tpg offline/Assets.xcassets/TutRappels.imageset/Rappels@3x.png and /dev/null differ diff --git a/iOS/tpg offline/Base.lproj/Localizable.strings b/iOS/tpg offline/Base.lproj/Localizable.strings index e326300c..c8fbab1f 100755 --- a/iOS/tpg offline/Base.lproj/Localizable.strings +++ b/iOS/tpg offline/Base.lproj/Localizable.strings @@ -21,48 +21,6 @@ "Notifications" = "Notifications"; "Bonjour" = "Bonjour"; -/* - * ./tpg offline/PremiumTableViewController.swift - */ - -"Mode offline des départs" = "Mode offline des départs"; - -"Pas de réseau ? Pas de problème avec le mode offline, vous pouvez accéder aux horaires hors ligne. Attetion : Les horaires du mode offline ne peuvent pas prévoir les évantuels retards, avances, perturbation en cours sur le réseau tpg." = "Pas de réseau ? Pas de problème avec le mode offline, vous pouvez accéder aux horaires hors ligne. Attetion : Les horaires du mode offline ne peuvent pas prévoir les évantuels retards, avances, perturbation en cours sur le réseau tpg."; - -"Avec le premium, vous pouvez accéder à une multitude de thèmes pour personnaliser votre application." = "Avec le premium, vous pouvez accéder à une multitude de thèmes pour personnaliser votre application."; - -"Favoris des itinéraires" = "Favoris des itinéraires"; - -"Avec les favoris des itinéraires, vous pouvez en un seul appui voir les prochains itinéraires de un point à un autre." = "Avec les favoris des itinéraires, vous pouvez en un seul appui voir les prochains itinéraires de un point à un autre."; - -"Fonctionnalités futures" = "Fonctionnalités futures"; - -"Un seul achat et vous aurez toutes les merveilles à venir. Pour toujours !" = "Un seul achat et vous aurez toutes les merveilles à venir. Pour toujours !"; - -"Acheter" = "Acheter"; - -"Restaurer les achats" = "Restaurer les achats"; - -"L'achat a réussi" = "L'achat a réussi"; - -"Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres." = "Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres."; - -"Fermer" = "Fermer"; - -"Échec" = "Échec"; - -"L'achat n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions." = "L'achat n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions."; - -"La restauration à réussi" = "La restauration à réussi"; - -"La restauration n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions." = "La restauration n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions."; - - - - - - - /* * ./tpg offline/RouteToStopViewController.swift */ @@ -117,7 +75,7 @@ "Projet maintenu sur GitHub par malcommac - Projet en licence MIT" = "Projet maintenu sur GitHub par malcommac - Projet en licence MIT"; -"Projet maintenu sur GitHub par delba - Projet en licence MIT" = "Projet maintenu sur GitHub par delba - Projet en licence MIT"; +"Projet maintenu sur GitHub par SwiftyBeaver - Projet en licence MIT" = "Projet maintenu sur GitHub par SwiftyBeaver - Projet en licence MIT"; "Projet maintenu sur GitHub par ninjaprox - Projet en licence MIT" = "Projet maintenu sur GitHub par ninjaprox - Projet en licence MIT"; @@ -175,7 +133,11 @@ "Vert" = "Vert"; +"Noir" = "Noir"; +"Mauve" = "Mauve"; + +"Forêt" = "Forest"; @@ -255,8 +217,6 @@ "Actualiser les départs (Offline)" = "Actualiser les départs (Offline)"; -"Premium" = "Premium"; - "Bienvenue dans tpg offline" = "Bienvenue dans tpg offline"; "tpg offline est une application qui facilite vos déplacements avec les transports publics genevois, même sans réseau." = "tpg offline est une application qui facilite vos déplacements avec les transports publics genevois, même sans réseau."; @@ -301,8 +261,17 @@ "Passer" = "Passer"; +"Merci d'avoir mis à jour tpg offline. Nous allons vous expliquer les grandes nouveautés de cette version." = "Merci d'avoir mis à jour tpg offline. Nous allons vous expliquer les grandes nouveautés de cette version."; + +"Gratuit\rEt pour toujours !" = "Gratuit\rEt pour toujours !"; + +"Le premium n'existe plus. Désormais, tout le monde peut accéder aux départs en mode hors ligne (sous réserve de les avoir au préalable téléchargés dans les paramètres), aux thèmes, etc..." = "Le premium n'existe plus. Désormais, tout le monde peut accéder aux départs en mode hors ligne (sous réserve de les avoir au préalable téléchargés dans les paramètres), aux thèmes, etc..."; + +"Vous avez une Apple Watch ? Super, car tpg offline a désormais une extension pour Apple Watch qui vous permettra de visualiser les départs des arrêts favoris en un clin d'œil." = "Vous avez une Apple Watch ? Super, car tpg offline a désormais une extension pour Apple Watch qui vous permettra de visualiser les départs des arrêts favoris en un clin d'œil."; +"Encore plus. Bientôt" = "Encore plus. Bientôt"; +"D'autres surprises vont arriver dans les prochaines versions." = "D'autres surprises vont arriver dans les prochaines versions."; @@ -337,7 +306,9 @@ "Plus aucun départ n'est prévu pour la totalité des lignes desservants cet arrêt." = "Plus aucun départ n'est prévu pour la totalité des lignes desservants cet arrêt."; +"Non téléchargé" = "Non téléchargé"; +"Vous pouvez télécharger les départs dans les paramètres afin d'y avoir accès en mode hors-ligne." = "Vous pouvez télécharger les départs dans les paramètres afin d'y avoir accès en mode hors-ligne."; diff --git a/iOS/tpg offline/Base.lproj/Main.storyboard b/iOS/tpg offline/Base.lproj/Main.storyboard index 283f9f4d..1187ebc6 100755 --- a/iOS/tpg offline/Base.lproj/Main.storyboard +++ b/iOS/tpg offline/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - - + + @@ -74,7 +74,7 @@ - + @@ -1682,7 +1573,7 @@ - + @@ -1724,7 +1615,7 @@ - + @@ -2249,11 +2140,11 @@ - - + - + + - + diff --git a/iOS/tpg offline/BuyPremiumTableViewCell.swift b/iOS/tpg offline/BuyPremiumTableViewCell.swift deleted file mode 100755 index 03a73806..00000000 --- a/iOS/tpg offline/BuyPremiumTableViewCell.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// buyPremiumTableViewCell.swift -// tpg offline -// -// Created by remy on 24/02/16. -// Copyright © 2016 dacostafaro. All rights reserved. -// - -import UIKit - -class BuyPremiumTableViewCell: UITableViewCell { - - @IBOutlet weak var buyButton: UIButton! - - override func awakeFromNib() { - super.awakeFromNib() - // Initialization code - } - - override func setSelected(selected: Bool, animated: Bool) { - super.setSelected(selected, animated: animated) - - // Configure the view for the selected state - } - -} diff --git a/iOS/tpg offline/CalendarSelectionViewController.swift b/iOS/tpg offline/CalendarSelectionViewController.swift index ecacfe0b..455f2287 100755 --- a/iOS/tpg offline/CalendarSelectionViewController.swift +++ b/iOS/tpg offline/CalendarSelectionViewController.swift @@ -16,9 +16,10 @@ class CalendarSelectionViewController: UIViewController { @IBOutlet weak var calendar: FSCalendar! override func viewDidLoad() { super.viewDidLoad() + refreshTheme() - - calendar.selectionColor = AppValues.secondaryColor + + calendar.selectionColor = AppValues.primaryColor.darkenByPercentage(0.1) calendar.todayColor = AppValues.primaryColor.lightenByPercentage(0.2) calendar.backgroundColor = AppValues.primaryColor calendar.tintColor = AppValues.textColor @@ -30,16 +31,17 @@ class CalendarSelectionViewController: UIViewController { calendar.titleSelectionColor = AppValues.textColor calendar.selectDate(NSCalendar(identifier: NSCalendarIdentifierGregorian)!.dateFromComponents(ActualRoutes.route.date!)!, scrollToDate: true) } - + override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) + refreshTheme() - - calendar.selectionColor = AppValues.secondaryColor + + calendar.selectionColor = AppValues.primaryColor.darkenByPercentage(0.1) calendar.todayColor = AppValues.primaryColor.lightenByPercentage(0.2) calendar.backgroundColor = AppValues.primaryColor calendar.tintColor = AppValues.textColor diff --git a/iOS/tpg offline/CreditsTableViewController.swift b/iOS/tpg offline/CreditsTableViewController.swift index 130a19ef..bcbdce30 100755 --- a/iOS/tpg offline/CreditsTableViewController.swift +++ b/iOS/tpg offline/CreditsTableViewController.swift @@ -31,11 +31,10 @@ class CreditsTableViewController: UITableViewController { ["Alamofire", "Projet maintenu sur GitHub par Alamofire - Projet en licence MIT".localized(), "https://github.com/Alamofire/Alamofire.git"], ["EFCircularSlider", "Projet maintenu sur GitHub par eliotfowler et modifié par RemyDCF - Projet en licence MIT".localized(), "https://github.com/RemyDCF/EFCircularSlider.git"], ["SwiftDate", "Projet maintenu sur GitHub par malcommac - Projet en licence MIT".localized(), "https://github.com/malcommac/SwiftDate"], - ["Log", "Projet maintenu sur GitHub par delba - Projet en licence MIT".localized(), "https://github.com/delba/Log.git"], + ["SwiftyBeaver", "Projet maintenu sur GitHub par SwiftyBeaver - Projet en licence MIT".localized(), "https://github.com/SwiftyBeaver/SwiftyBeaver.git"], ["NVActivityIndicatorView", "Projet maintenu sur GitHub par ninjaprox - Projet en licence MIT".localized(), "https://github.com/ninjaprox/NVActivityIndicatorView.git"], ["AsyncSwift", "Projet maintenu sur GitHub par duemunk - Projet en licence MIT".localized(), "https://github.com/duemunk/Async.git"], ["AKPickerView-Swift", "Projet maintenu sur GitHub par Akkyie - Projet en licence MIT".localized(), "https://github.com/Akkyie/AKPickerView-Swift.git"], - ["SwiftTweaks", "Projet maintenu sur GitHub par Khan Academy - Projet en licence MIT".localized(), "https://github.com/Khan/SwiftTweaks.git"], ["Fabric - Crashlytics", "Projet maintenu sur GitHub par Twitter - Projet en licence MIT".localized(), "https://fabric.io"] ] override func viewDidLoad() { @@ -70,7 +69,7 @@ class CreditsTableViewController: UITableViewController { cell.backgroundColor = AppValues.primaryColor let view = UIView() - view.backgroundColor = AppValues.secondaryColor + view.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = view return cell diff --git a/iOS/tpg offline/DeparturesTableViewController.swift b/iOS/tpg offline/DeparturesTableViewController.swift index 98a2d188..eaff30c5 100755 --- a/iOS/tpg offline/DeparturesTableViewController.swift +++ b/iOS/tpg offline/DeparturesTableViewController.swift @@ -16,6 +16,7 @@ import MRProgress import SwiftDate import Alamofire import NVActivityIndicatorView +import WatchConnectivity class DeparturesTableViewController: UITableViewController { var stop: Stop? = nil @@ -24,6 +25,8 @@ class DeparturesTableViewController: UITableViewController { var offline = false var noMoreTransport = false var loading: Bool = false + var notDownloaded: Bool = false + override func viewDidLoad() { super.viewDidLoad() @@ -39,7 +42,7 @@ class DeparturesTableViewController: UITableViewController { }, loadingView: loadingView) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) title = stop?.fullName @@ -48,11 +51,11 @@ class DeparturesTableViewController: UITableViewController { refresh() } - + override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) refreshTheme() @@ -84,7 +87,7 @@ class DeparturesTableViewController: UITableViewController { UIGraphicsBeginImageContextWithOptions(label.bounds.size, false, 0) label.layer.renderInContext(UIGraphicsGetCurrentContext()!) - let image: UIImage = UIGraphicsGetImageFromCurrentImageContext() + let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return image } @@ -110,7 +113,62 @@ class DeparturesTableViewController: UITableViewController { let encodedData = NSKeyedArchiver.archivedDataWithRootObject(AppValues.favoritesStops!) defaults.setObject(encodedData, forKey: "favoritesStops") } - + + if #available(iOS 9.0, *) { + if WCSession.isSupported() { + do { + var a: [String:[String:AnyObject]] = [:] + for (x, y) in AppValues.favoritesStops { + a[x] = y.toDictionnary() + } + var offlineDepartures: [String:String] = [:] + var path = "" + for (_, y) in AppValues.favoritesStops { + var json = JSON(data: "{}".dataUsingEncoding(NSUTF8StringEncoding)!) + var departuresArray: [String:String] = [:] + if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { + path = dir.stringByAppendingPathComponent(y.stopCode + "departsSAM.json") + + if NSFileManager.defaultManager().fileExistsAtPath(path) { + do { + try departuresArray["SAM"] = String(contentsOfFile: path) + } catch { + print("Reading of \(path) is failed") + } + } + + path = dir.stringByAppendingPathComponent(y.stopCode + "departsDIM.json") + + if NSFileManager.defaultManager().fileExistsAtPath(path) { + do { + try departuresArray["DIM"] = String(contentsOfFile: path) + } catch { + print("Reading of \(path) is failed") + } + } + + path = dir.stringByAppendingPathComponent(y.stopCode + "departsLUN.json") + + if NSFileManager.defaultManager().fileExistsAtPath(path) { + do { + try departuresArray["LUN"] = String(contentsOfFile: path) + } catch { + print("Reading of \(path) is failed") + } + } + } + json.dictionaryObject = departuresArray + offlineDepartures[y.stopCode] = json.rawString() ?? "" + + } + try WatchSessionManager.sharedManager.updateApplicationContext(["favoritesStops": NSKeyedArchiver.archivedDataWithRootObject(a), "offlineDepartures": offlineDepartures]) + + } catch { + AppValues.logger.error("Update WatchConnectivity with application context failed") + } + } + } + var barButtonsItems: [UIBarButtonItem] = [] if ((AppValues.fullNameFavoritesStops.indexOf(stop!.fullName)) != nil) { @@ -208,9 +266,10 @@ class DeparturesTableViewController: UITableViewController { override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent } - + func refresh() { self.loading = true + self.notDownloaded = false self.tableView.reloadData() departuresList = [] Alamofire.request(.GET, "http://prod.ivtr-od.tpg.ch/v1/GetNextDepartures.json", parameters: ["key": "d95be980-0830-11e5-a039-0002a5d5c51b", "stopCode": stop!.stopCode]) @@ -259,57 +318,54 @@ class DeparturesTableViewController: UITableViewController { self.tableView.dg_stopLoading() } else { - if AppValues.premium == true { - let day = NSCalendar.currentCalendar().components([.Weekday], fromDate: NSDate()) - var path = "" - if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { - switch day.weekday { - case 7: - - path = dir.stringByAppendingPathComponent(self.stop!.stopCode + "departsSAM.json") - break - case 1: - path = dir.stringByAppendingPathComponent(self.stop!.stopCode + "departsDIM.json"); - break - default: - path = dir.stringByAppendingPathComponent(self.stop!.stopCode + "departsLUN.json"); - - break - } + let day = NSCalendar.currentCalendar().components([.Weekday], fromDate: NSDate()) + var path = "" + if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { + switch day.weekday { + case 7: + + path = dir.stringByAppendingPathComponent(self.stop!.stopCode + "departsSAM.json") + break + case 1: + path = dir.stringByAppendingPathComponent(self.stop!.stopCode + "departsDIM.json"); + break + default: + path = dir.stringByAppendingPathComponent(self.stop!.stopCode + "departsLUN.json"); + + break } - - if NSFileManager.defaultManager().fileExistsAtPath(path) { - let dataDeparts = NSData(contentsOfFile: path) - let departs = JSON(data: dataDeparts!) - for (_, subJson) in departs { - if AppValues.linesColor[subJson["ligne"].string!] != nil { - self.departuresList.append(Departures( - line: subJson["ligne"].string!, - direction: subJson["destination"].string!, - destinationCode: "", - lineColor: AppValues.linesColor[subJson["ligne"].string!]!, - lineBackgroundColor: AppValues.linesBackgroundColor[subJson["ligne"].string!]!, - code: nil, - leftTime: "0", - timestamp: subJson["timestamp"].string! - )) - } - else { - self.departuresList.append(Departures( - line: subJson["ligne"].string!, - direction: subJson["destination"].string!, - destinationCode: "", - lineColor: UIColor.whiteColor(), - lineBackgroundColor: UIColor.flatGrayColorDark(), - code: nil, - leftTime: "0", - timestamp: subJson["timestamp"].string! - )) - } - self.departuresList.last?.calculerTempsRestant() + } + + if NSFileManager.defaultManager().fileExistsAtPath(path) { + let dataDeparts = NSData(contentsOfFile: path) + let departs = JSON(data: dataDeparts!) + for (_, subJson) in departs { + if AppValues.linesColor[subJson["ligne"].string!] != nil { + self.departuresList.append(Departures( + line: subJson["ligne"].string!, + direction: subJson["destination"].string!, + destinationCode: "", + lineColor: AppValues.linesColor[subJson["ligne"].string!]!, + lineBackgroundColor: AppValues.linesBackgroundColor[subJson["ligne"].string!]!, + code: nil, + leftTime: "0", + timestamp: subJson["timestamp"].string! + )) } + else { + self.departuresList.append(Departures( + line: subJson["ligne"].string!, + direction: subJson["destination"].string!, + destinationCode: "", + lineColor: UIColor.whiteColor(), + lineBackgroundColor: UIColor.flatGrayColorDark(), + code: nil, + leftTime: "0", + timestamp: subJson["timestamp"].string! + )) + } + self.departuresList.last?.calculerTempsRestant() } - self.departuresList = self.departuresList.filter({ (depart) -> Bool in if depart.leftTime != "-1" { return true @@ -337,6 +393,7 @@ class DeparturesTableViewController: UITableViewController { self.tableView.allowsSelection = false self.tableView.reloadData() self.tableView.dg_stopLoading() + } else { self.offline = true @@ -344,9 +401,12 @@ class DeparturesTableViewController: UITableViewController { self.departuresList = [] self.noMoreTransport = false self.loading = false + self.notDownloaded = true self.tableView.reloadData() self.tableView.dg_stopLoading() } + + } } } @@ -359,7 +419,7 @@ extension DeparturesTableViewController { if loading == true { return 1 } - else if offline { + else if offline || notDownloaded { return 2 } return 1 @@ -369,6 +429,9 @@ extension DeparturesTableViewController { if loading == true { return 1 } + else if offline && notDownloaded { + return 1 + } else if offline && section == 0 { return 1 } @@ -387,6 +450,9 @@ extension DeparturesTableViewController { if loading == true { return 60 } + else if offline && notDownloaded { + return 60 + } else if offline && indexPath.section == 0 { return 60 } @@ -462,6 +528,9 @@ extension DeparturesTableViewController { if loading == true { return false } + else if offline && notDownloaded { + return false + } else if offline && indexPath.section == 0 { return false } @@ -500,13 +569,13 @@ extension DeparturesTableViewController { cell.accessoryView = nil cell.activityIndicator.startAnimation() - + return cell } else if indexPath.section == 0 && offline { let cell = tableView.dequeueReusableCellWithIdentifier("infoArretCell", forIndexPath: indexPath) - cell.backgroundColor = AppValues.secondaryColor + cell.backgroundColor = AppValues.primaryColor cell.textLabel?.textColor = AppValues.textColor cell.textLabel?.text = "Mode offline".localized() cell.detailTextLabel?.textColor = AppValues.textColor @@ -517,10 +586,24 @@ extension DeparturesTableViewController { cell.accessoryView = nil return cell } + else if offline && notDownloaded && indexPath.section == 1 { + let cell = tableView.dequeueReusableCellWithIdentifier("infoArretCell", forIndexPath: indexPath) + + cell.backgroundColor = AppValues.primaryColor + cell.textLabel?.textColor = AppValues.textColor + cell.textLabel?.text = "Non téléchargé".localized() + cell.detailTextLabel?.textColor = AppValues.textColor + cell.detailTextLabel?.text = "Vous pouvez télécharger les départs dans les paramètres afin d'y avoir accès en mode hors-ligne.".localized() + let icone = FAKFontAwesome.downloadIconWithSize(50) + icone.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + cell.imageView?.image = icone.imageWithSize(CGSize(width: 50, height: 50)) + cell.accessoryView = nil + return cell + } else if offline && indexPath.section == 1 && noMoreTransport { let cell = tableView.dequeueReusableCellWithIdentifier("infoArretCell", forIndexPath: indexPath) - cell.backgroundColor = AppValues.secondaryColor + cell.backgroundColor = AppValues.primaryColor cell.textLabel?.textColor = AppValues.textColor cell.textLabel?.text = "Service terminé".localized() cell.detailTextLabel?.textColor = AppValues.textColor @@ -534,7 +617,7 @@ extension DeparturesTableViewController { else if !offline && indexPath.section == 0 && noMoreTransport { let cell = tableView.dequeueReusableCellWithIdentifier("infoArretCell", forIndexPath: indexPath) - cell.backgroundColor = AppValues.secondaryColor + cell.backgroundColor = AppValues.primaryColor cell.textLabel?.textColor = AppValues.textColor cell.textLabel?.text = "Service terminé".localized() cell.detailTextLabel?.textColor = AppValues.textColor @@ -681,4 +764,4 @@ extension DeparturesTableViewController { return cell } } -} \ No newline at end of file +} diff --git a/iOS/tpg offline/IncidentsTableViewController.swift b/iOS/tpg offline/IncidentsTableViewController.swift index f6bb0409..1709ecd8 100755 --- a/iOS/tpg offline/IncidentsTableViewController.swift +++ b/iOS/tpg offline/IncidentsTableViewController.swift @@ -33,11 +33,17 @@ class IncidentsTableViewController: UITableViewController { }, loadingView: loadingView) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) navigationController?.navigationBar.barTintColor = UIColor.flatOrangeColorDark() navigationController?.navigationBar.tintColor = UIColor.whiteColor() + + var barButtonsItems: [UIBarButtonItem] = [] + + barButtonsItems.append(UIBarButtonItem(image: FAKIonIcons.refreshIconWithSize(20).imageWithSize(CGSize(width: 20, height: 20)), style: UIBarButtonItemStyle.Done, target: self, action: #selector(IncidentsTableViewController.refresh(_:)))) + + self.navigationItem.rightBarButtonItems = barButtonsItems refresh(self) } @@ -45,7 +51,7 @@ class IncidentsTableViewController: UITableViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) refreshTheme() @@ -81,6 +87,7 @@ class IncidentsTableViewController: UITableViewController { self.tableView.reloadData() } else { + AppValues.logger.error(response.result.error) self.error = true self.tableView.reloadData() } @@ -116,7 +123,7 @@ class IncidentsTableViewController: UITableViewController { UIGraphicsBeginImageContextWithOptions(label.bounds.size, false, 0) label.layer.renderInContext(UIGraphicsGetCurrentContext()!) - let image: UIImage = UIGraphicsGetImageFromCurrentImageContext() + let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return image } diff --git a/iOS/tpg offline/Info.plist b/iOS/tpg offline/Info.plist index 1a887b18..c617d4b3 100755 --- a/iOS/tpg offline/Info.plist +++ b/iOS/tpg offline/Info.plist @@ -61,8 +61,6 @@ NSAllowsArbitraryLoads - NSLocationAlwaysUsageDescription - tpg offline a besoin de votre localisation pour afficher les arrets à proximité. NSLocationUsageDescription tpg offline a besoin de votre localisation pour afficher les arrets à proximité. NSLocationWhenInUseUsageDescription diff --git a/iOS/tpg offline/LocationSettingsTableViewController.swift b/iOS/tpg offline/LocationSettingsTableViewController.swift index 0cf3edc3..3b827069 100755 --- a/iOS/tpg offline/LocationSettingsTableViewController.swift +++ b/iOS/tpg offline/LocationSettingsTableViewController.swift @@ -84,7 +84,7 @@ class LocationSettingsTableViewController: UITableViewController { } override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let returnedView = UIView() - returnedView.backgroundColor = AppValues.secondaryColor + returnedView.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.05) let label = UILabel(frame: CGRect(x: 20, y: 5, width: 500, height: 30)) label.text = headers[section] diff --git a/iOS/tpg offline/PremiumTableViewController.swift b/iOS/tpg offline/PremiumTableViewController.swift deleted file mode 100755 index 48ffa648..00000000 --- a/iOS/tpg offline/PremiumTableViewController.swift +++ /dev/null @@ -1,226 +0,0 @@ -// -// PremiumTableViewController.swift -// tpg offline -// -// Created by remy on 24/02/16. -// Copyright © 2016 dacostafaro. All rights reserved. -// - -import UIKit -import FontAwesomeKit -import ChameleonFramework -import SwiftInAppPurchase -import SCLAlertView - -class PremiumTableViewController: UITableViewController { - - var price = "" - var productKey = "B17EDFEA961F4680B88A309704032DA7" - let defaults = NSUserDefaults.standardUserDefaults() - let iap = SwiftInAppPurchase.sharedInstance - - let arguments = [ - [FAKFontAwesome.globeIconWithSize(20), "Mode offline des départs".localized(), "Pas de réseau ? Pas de problème avec le mode offline, vous pouvez accéder aux horaires hors ligne. Attetion : Les horaires du mode offline ne peuvent pas prévoir les évantuels retards, avances, perturbation en cours sur le réseau tpg.".localized()], - [FAKFontAwesome.paintBrushIconWithSize(20), "Thèmes".localized(), "Avec le premium, vous pouvez accéder à une multitude de thèmes pour personnaliser votre application.".localized()], - [FAKFontAwesome.mapSignsIconWithSize(20), "Favoris des itinéraires".localized(), "Avec les favoris des itinéraires, vous pouvez en un seul appui voir les prochains itinéraires de un point à un autre.".localized()], - [FAKFontAwesome.ellipsisHIconWithSize(20), "Fonctionnalités futures".localized(), "Un seul achat et vous aurez toutes les merveilles à venir. Pour toujours !".localized()] - ] - - let boutonsStoreKit = ["Acheter".localized(), "Restaurer les achats".localized()] - - override func viewDidLoad() { - super.viewDidLoad() - - refreshTheme() - - iap.setProductionMode(false) - var productIden = Set() - productIden.insert(productKey) - - self.iap.requestProducts(productIden) { (products, invalidIdentifiers, error) -> () in - if error == nil { - let product = products![0] - let numberFormatter = NSNumberFormatter() - numberFormatter.formatterBehavior = .Behavior10_4 - numberFormatter.numberStyle = .CurrencyStyle - numberFormatter.locale = product.priceLocale - let priceString = numberFormatter.stringFromNumber(product.price) - self.price = priceString! - self.tableView.reloadData() - } - else { - AppValues.logger.error(error) - } - } - - // Uncomment the following line to preserve selection between presentations - // self.clearsSelectionOnViewWillAppear = false - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem() - } - - override func viewDidAppear(animated: Bool) { - super.viewDidAppear(animated) - refreshTheme() - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - // MARK: - Table view data source - - override func numberOfSectionsInTableView(tableView: UITableView) -> Int { - return 3 - } - - override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch section { - case 0: - return 1 - case 1: - return arguments.count - case 2: - return boutonsStoreKit.count - default: - return 0 - } - } - - - override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - if indexPath.section == 0 { - let cell = tableView.dequeueReusableCellWithIdentifier("titrePremiumCell", forIndexPath: indexPath) as! PremiumTableViewCell - - let icone = FAKIonIcons.starIconWithSize(30) - icone.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - let attributedString = NSMutableAttributedString(attributedString: icone.attributedString()) - attributedString.appendAttributedString(NSAttributedString(string: " Premium")) - cell.titleLabel.attributedText = attributedString - cell.titleLabel.textColor = AppValues.textColor - - cell.backgroundColor = AppValues.primaryColor - let selectedView = UIView() - selectedView.backgroundColor = AppValues.secondaryColor - cell.selectedBackgroundView = selectedView - - return cell - } - else if indexPath.section == 1 { - let cell = tableView.dequeueReusableCellWithIdentifier("premiumCell", forIndexPath: indexPath) - - let icone = arguments[indexPath.row][0] as! FAKFontAwesome - icone.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - cell.imageView?.image = icone.imageWithSize(CGSize(width: 20, height: 20)) - - cell.textLabel!.text = arguments[indexPath.row][1] as? String - cell.textLabel?.textColor = AppValues.textColor - - cell.detailTextLabel?.text = arguments[indexPath.row][2] as? String - cell.detailTextLabel?.textColor = AppValues.textColor - - cell.backgroundColor = AppValues.primaryColor - let selectedView = UIView() - selectedView.backgroundColor = AppValues.secondaryColor - cell.selectedBackgroundView = selectedView - - return cell - } - else { - let cell = tableView.dequeueReusableCellWithIdentifier("acheterPremiumCell", forIndexPath: indexPath) as! BuyPremiumTableViewCell - - cell.buyButton.setTitle(boutonsStoreKit[indexPath.row], forState: .Normal) - cell.buyButton.backgroundColor = UIColor.flatGreenColor() - - if indexPath.row == 0 { - cell.buyButton.addTarget(self, action: #selector(PremiumTableViewController.acheter(_:)), forControlEvents: .TouchUpInside) - if price != "" { - cell.buyButton.setTitle("\(boutonsStoreKit[indexPath.row]) (\(price))", forState: .Normal) - } - } - else if indexPath.row == 1 { - cell.buyButton.addTarget(self, action: #selector(PremiumTableViewController.restaurerAchat(_:)), forControlEvents: .TouchUpInside) - } - - return cell - } - } - - func acheter(sender: AnyObject!) { - self.iap.addPayment(productKey, userIdentifier: nil) { (result) -> () in - - switch result{ - case .Purchased(let productId,let transaction,let paymentQueue): - paymentQueue.finishTransaction(transaction) - AppValues.logger.info("Purchase Success: \(productId)") - AppValues.premium = true - self.defaults.setBool(true, forKey: "premium") - let alerte = SCLAlertView() - alerte.showSuccess("L'achat a réussi".localized(), subTitle: "Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres.".localized(), closeButtonTitle: "Fermer".localized(), duration: 30).setDismissBlock({ - if ((self.navigationController?.viewControllers[0].isKindOfClass(SettingsTableViewController)) == true) { - (self.navigationController?.viewControllers[0] as! SettingsTableViewController).tableView.reloadData() - } - self.navigationController?.popViewControllerAnimated(true) - }) - - case .Failed(let error): - AppValues.logger.error("Purchase Failed: \(error)") - let alerte = SCLAlertView() - alerte.showError("Échec".localized(), subTitle: "L'achat n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions.".localized(), closeButtonTitle: "Fermer".localized(), duration: 20) - - default: - break - } - } - } - - func restaurerAchat(sender: AnyObject!) { - - self.iap.restoreTransaction(nil) { (result) -> () in - switch result{ - case .Restored(let productId,let transaction,let paymentQueue) : - paymentQueue.finishTransaction(transaction) - AppValues.logger.info("Restore Success: \(productId)") - AppValues.premium = true - self.defaults.setBool(true, forKey: "premium") - let alerte = SCLAlertView() - alerte.showSuccess("La restauration à réussi".localized(), subTitle: "Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres.".localized(), closeButtonTitle: "Fermer".localized(), duration: 20).setDismissBlock({ - if ((self.navigationController?.viewControllers[0].isKindOfClass(SettingsTableViewController)) == true) { - (self.navigationController?.viewControllers[0] as! SettingsTableViewController).tableView.reloadData() - } - self.navigationController?.popViewControllerAnimated(true) - }) - - case .Failed(let error): - AppValues.logger.error("Restore Failed: \(error)") - let alerte = SCLAlertView() - alerte.showError("Échec", subTitle: "La restauration n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions.".localized(), closeButtonTitle: "Fermer".localized(), duration: 20) - - default: - break - } - } - } - - override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - if indexPath.section == 2 { - return 44 - } - else { - return 100 - } - } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ - -} diff --git a/iOS/tpg offline/RouteDetailTableViewController.swift b/iOS/tpg offline/RouteDetailTableViewController.swift index 9ba2a703..add8a2d6 100755 --- a/iOS/tpg offline/RouteDetailTableViewController.swift +++ b/iOS/tpg offline/RouteDetailTableViewController.swift @@ -24,7 +24,6 @@ class RouteDetailTableViewController: UITableViewController { var itemsList: [UIBarButtonItem] = [] - if AppValues.premium == true { for x in AppValues.favoritesRoutes { if x[0].fullName == ActualRoutes.route.departure?.fullName && x[1].fullName == ActualRoutes.route.arrival?.fullName { favorite = true @@ -37,7 +36,6 @@ class RouteDetailTableViewController: UITableViewController { else { itemsList.append(UIBarButtonItem(image: FAKFontAwesome.starOIconWithSize(20).imageWithSize(CGSize(width: 20,height: 20)), style: UIBarButtonItemStyle.Done, target: self, action: #selector(RouteDetailTableViewController.toggleFavorite(_:)))) } - } self.navigationItem.rightBarButtonItems = itemsList tableView.backgroundColor = AppValues.primaryColor } @@ -49,8 +47,8 @@ class RouteDetailTableViewController: UITableViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - refreshTheme() + refreshTheme() tableView.backgroundColor = AppValues.primaryColor tableView.reloadData() } @@ -67,7 +65,7 @@ class RouteDetailTableViewController: UITableViewController { UIGraphicsBeginImageContextWithOptions(label.bounds.size, false, 0) label.layer.renderInContext(UIGraphicsGetCurrentContext()!) - let image: UIImage = UIGraphicsGetImageFromCurrentImageContext() + let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return image } diff --git a/iOS/tpg offline/RouteToStopViewController.swift b/iOS/tpg offline/RouteToStopViewController.swift index 30b55fe1..8921186e 100755 --- a/iOS/tpg offline/RouteToStopViewController.swift +++ b/iOS/tpg offline/RouteToStopViewController.swift @@ -46,8 +46,8 @@ class RouteToStopViewController: UIViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - refreshTheme() - + + refreshTheme() if ContrastColorOf(AppValues.primaryColor, returnFlat: true) == FlatWhite() { map.tintColor = AppValues.primaryColor } diff --git a/iOS/tpg offline/RoutesListTableViewController.swift b/iOS/tpg offline/RoutesListTableViewController.swift index efc46ba1..e7228277 100755 --- a/iOS/tpg offline/RoutesListTableViewController.swift +++ b/iOS/tpg offline/RoutesListTableViewController.swift @@ -43,7 +43,6 @@ class RoutesListTableViewController: UITableViewController { if ActualRoutes.route.departure != nil && ActualRoutes.route.arrival != nil && ActualRoutes.route.date != nil { var listeItems: [UIBarButtonItem] = [] - if (AppValues.premium == true) { for x in AppValues.favoritesRoutes { if x[0].fullName == ActualRoutes.route.departure?.fullName && x[1].fullName == ActualRoutes.route.arrival?.fullName { favorite = true @@ -56,7 +55,6 @@ class RoutesListTableViewController: UITableViewController { else { listeItems.append(UIBarButtonItem(image: FAKFontAwesome.starOIconWithSize(20).imageWithSize(CGSize(width: 20,height: 20)), style: UIBarButtonItemStyle.Done, target: self, action: #selector(RoutesListTableViewController.toggleFavorite(_:)))) } - } self.navigationItem.rightBarButtonItems = listeItems } } @@ -174,6 +172,7 @@ class RoutesListTableViewController: UITableViewController { self.tableView.reloadData() } else { + AppValues.logger.error(response.result.error) self.noNetwork = true self.loading = false self.tableView.allowsSelection = false @@ -300,7 +299,7 @@ class RoutesListTableViewController: UITableViewController { cell.backgroundColor = AppValues.primaryColor let view = UIView() - view.backgroundColor = AppValues.secondaryColor + view.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = view return cell diff --git a/iOS/tpg offline/RoutesStopsTableViewController.swift b/iOS/tpg offline/RoutesStopsTableViewController.swift index 9946313e..e7d0878c 100755 --- a/iOS/tpg offline/RoutesStopsTableViewController.swift +++ b/iOS/tpg offline/RoutesStopsTableViewController.swift @@ -35,7 +35,7 @@ class RoutesStopsTableViewController: UITableViewController { }, loadingView: loadingView) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) // Result Search Controller @@ -44,7 +44,7 @@ class RoutesStopsTableViewController: UITableViewController { definesPresentationContext = true searchController.searchBar.placeholder = "Rechercher parmi les arrêts".localized() - navigationController?.navigationBar.barTintColor = AppValues.secondaryColor + navigationController?.navigationBar.barTintColor = AppValues.primaryColor navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: AppValues.textColor] navigationController?.navigationBar.tintColor = AppValues.textColor tableView.backgroundColor = AppValues.primaryColor @@ -69,11 +69,11 @@ class RoutesStopsTableViewController: UITableViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) - refreshTheme() + searchController.searchBar.barTintColor = AppValues.primaryColor searchController.searchBar.tintColor = AppValues.textColor } @@ -177,7 +177,7 @@ class RoutesStopsTableViewController: UITableViewController { } let backgroundView = UIView() - backgroundView.backgroundColor = AppValues.secondaryColor + backgroundView.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = backgroundView cell.backgroundColor = AppValues.primaryColor cell.textLabel?.textColor = AppValues.textColor @@ -192,7 +192,7 @@ class RoutesStopsTableViewController: UITableViewController { iconCheveron.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) let backgroundView = UIView() - backgroundView.backgroundColor = AppValues.secondaryColor + backgroundView.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = backgroundView cell.textLabel?.text = filtredResults[indexPath.row].title cell.detailTextLabel!.text = filtredResults[indexPath.row].subTitle @@ -237,13 +237,14 @@ class RoutesStopsTableViewController: UITableViewController { } func filterContentForSearchText(searchText: String) { + let espacapedSearchTextString = searchText.lowercaseString.stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "") filtredResults = [Stop](AppValues.stops.values).filter { arret in - return arret.fullName.lowercaseString.containsString(searchText.lowercaseString) + return arret.fullName.lowercaseString.stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "").containsString(espacapedSearchTextString) } filtredResults.sortInPlace { (arret1, arret2) -> Bool in - let stringA = String(arret1.title + arret1.subTitle) - let stringB = String(arret2.title + arret2.subTitle) - if stringA.lowercaseString < stringB.lowercaseString { + let stringA = String(arret1.title + arret1.subTitle).lowercaseString.stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "") + let stringB = String(arret2.title + arret2.subTitle).lowercaseString.stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "") + if stringA < stringB { return true } return false diff --git a/iOS/tpg offline/RoutesTableViewController.swift b/iOS/tpg offline/RoutesTableViewController.swift index 17e22b26..4d7a00a3 100755 --- a/iOS/tpg offline/RoutesTableViewController.swift +++ b/iOS/tpg offline/RoutesTableViewController.swift @@ -43,7 +43,7 @@ class RoutesTableViewController: UITableViewController { } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - + refreshTheme() ActualRoutes.canFavorite = true refreshTheme() } @@ -112,7 +112,7 @@ class RoutesTableViewController: UITableViewController { cell.backgroundColor = AppValues.primaryColor let view = UIView() - view.backgroundColor = AppValues.secondaryColor + view.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = view return cell } @@ -122,11 +122,11 @@ class RoutesTableViewController: UITableViewController { cell.switchObject.rightTitle = row[indexPath.row][2] as! String if ContrastColorOf(AppValues.primaryColor, returnFlat: true) == FlatWhite() { cell.switchObject.backgroundColor = AppValues.primaryColor.lightenByPercentage(0.1) - cell.switchObject.selectedBackgroundColor = AppValues.secondaryColor.darkenByPercentage(0.1) + cell.switchObject.selectedBackgroundColor = AppValues.primaryColor.darkenByPercentage(0.1) } else { cell.switchObject.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.1) - cell.switchObject.selectedBackgroundColor = AppValues.secondaryColor.lightenByPercentage(0.1) + cell.switchObject.selectedBackgroundColor = AppValues.primaryColor.lightenByPercentage(0.1) } cell.switchObject.titleColor = AppValues.textColor @@ -137,26 +137,26 @@ class RoutesTableViewController: UITableViewController { cell.switchObject.addTarget(self, action:#selector(RoutesTableViewController.dateArriveeChange(_:)), forControlEvents: .ValueChanged) cell.backgroundColor = AppValues.primaryColor let view = UIView() - view.backgroundColor = AppValues.secondaryColor + view.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = view return cell } else { let cell = tableView.dequeueReusableCellWithIdentifier("buttonCell", forIndexPath: indexPath) as! ButtonTableViewCell cell.button.setTitle((row[indexPath.row][1] as! String), forState: .Normal) - cell.button.backgroundColor = AppValues.secondaryColor + cell.button.backgroundColor = AppValues.primaryColor cell.button.tintColor = AppValues.textColor cell.button.addTarget(self, action: #selector(RoutesTableViewController.rechercher(_:)), forControlEvents: .TouchUpInside) - cell.backgroundColor = AppValues.secondaryColor + cell.backgroundColor = AppValues.primaryColor let view = UIView() - view.backgroundColor = AppValues.secondaryColor + view.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = view return cell } } else { let cell = tableView.dequeueReusableCellWithIdentifier("favorisCell", forIndexPath: indexPath) as! FavoriteRouteTableViewCell - cell.iconView.backgroundColor = AppValues.secondaryColor + cell.iconView.backgroundColor = AppValues.primaryColor let starIcon = FAKFontAwesome.starIconWithSize(20) starIcon.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) @@ -217,7 +217,7 @@ class RoutesTableViewController: UITableViewController { override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let returnedView = UIView() - returnedView.backgroundColor = AppValues.secondaryColor.darkenByPercentage(0.1) + returnedView.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.1) let label = UILabel(frame: CGRect(x: 20, y: 5, width: 500, height: 30)) label.text = headers[section] diff --git a/iOS/tpg offline/SeeAllDeparturesViewController.swift b/iOS/tpg offline/SeeAllDeparturesViewController.swift index 5b0bd930..0b7c2103 100755 --- a/iOS/tpg offline/SeeAllDeparturesViewController.swift +++ b/iOS/tpg offline/SeeAllDeparturesViewController.swift @@ -34,12 +34,32 @@ class SeeAllDeparturesViewController: UIViewController { super.viewDidLoad() lineLabel.text = line - lineLabel.textColor = AppValues.linesColor[line] - lineLabel.backgroundColor = AppValues.linesBackgroundColor[line] - directionLabel.text = direction - directionLabel.textColor = AppValues.linesColor[line] - directionLabel.backgroundColor = AppValues.linesBackgroundColor[line] + + if ContrastColorOf(AppValues.primaryColor, returnFlat: true) == FlatWhite() { + lineLabel.textColor = AppValues.linesColor[line] + lineLabel.backgroundColor = AppValues.linesBackgroundColor[line] + + directionLabel.textColor = AppValues.linesColor[line] + directionLabel.backgroundColor = AppValues.linesBackgroundColor[line] + } + else { + if ContrastColorOf(AppValues.linesBackgroundColor[line]!, returnFlat: true) == FlatWhite() { + lineLabel.textColor = AppValues.linesBackgroundColor[line] + lineLabel.backgroundColor = AppValues.primaryColor + + directionLabel.textColor = AppValues.linesBackgroundColor[line] + directionLabel.backgroundColor = AppValues.primaryColor + } + else { + lineLabel.textColor = AppValues.linesBackgroundColor[line]!.darkenByPercentage(0.2) + lineLabel.backgroundColor = AppValues.primaryColor + + directionLabel.textColor = AppValues.linesBackgroundColor[line]!.darkenByPercentage(0.2) + directionLabel.backgroundColor = AppValues.primaryColor + } + + } departuresCollectionView.allowsSelection = false departuresCollectionView.backgroundColor = AppValues.primaryColor @@ -57,9 +77,35 @@ class SeeAllDeparturesViewController: UIViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) + refreshTheme() + + if ContrastColorOf(AppValues.primaryColor, returnFlat: true) == FlatWhite() { + lineLabel.textColor = AppValues.linesColor[line] + lineLabel.backgroundColor = AppValues.linesBackgroundColor[line] + + directionLabel.textColor = AppValues.linesColor[line] + directionLabel.backgroundColor = AppValues.linesBackgroundColor[line] + } + else { + if ContrastColorOf(AppValues.linesBackgroundColor[line]!, returnFlat: true) == FlatWhite() { + lineLabel.textColor = AppValues.linesBackgroundColor[line] + lineLabel.backgroundColor = AppValues.primaryColor + + directionLabel.textColor = AppValues.linesBackgroundColor[line] + directionLabel.backgroundColor = AppValues.primaryColor + } + else { + lineLabel.textColor = AppValues.linesBackgroundColor[line]!.darkenByPercentage(0.2) + lineLabel.backgroundColor = AppValues.primaryColor + + directionLabel.textColor = AppValues.linesBackgroundColor[line]!.darkenByPercentage(0.2) + directionLabel.backgroundColor = AppValues.primaryColor + } + + } departuresCollectionView.backgroundColor = AppValues.primaryColor - refreshTheme() + departuresCollectionView.reloadData() hourPicker.backgroundColor = AppValues.primaryColor @@ -75,114 +121,115 @@ class SeeAllDeparturesViewController: UIViewController { func refresh() { Async.background { self.departuresList = [] - let day = NSCalendar.currentCalendar().components([.Weekday], fromDate: NSDate()) - var path = "" - if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { - switch day.weekday { - case 7: - path = dir.stringByAppendingPathComponent(self.stop.stopCode + "departsSAM.json") - break - case 1: - path = dir.stringByAppendingPathComponent(self.stop.stopCode + "departsDIM.json"); - break - default: - path = dir.stringByAppendingPathComponent(self.stop.stopCode + "departsLUN.json"); - - break - } - } - if NSFileManager.defaultManager().fileExistsAtPath(path) { - if self.initialDeparturesList.isEmpty { - let dataDeparts = NSData(contentsOfFile: path) - let departs = JSON(data: dataDeparts!) - for (_, subJson) in departs { - if AppValues.linesColor[subJson["ligne"].string!] != nil { - self.initialDeparturesList.append(Departures( - line: subJson["ligne"].string!, - direction: subJson["destination"].string!, - destinationCode: "", - lineColor: AppValues.linesColor[subJson["ligne"].string!]!, - lineBackgroundColor: AppValues.linesBackgroundColor[subJson["ligne"].string!]!, - code: nil, - leftTime: "0", - timestamp: subJson["timestamp"].string! - )) + if self.initialDeparturesList.isEmpty { + Alamofire.request(.GET, "http://prod.ivtr-od.tpg.ch/v1/GetAllNextDepartures.json", parameters: ["key": "d95be980-0830-11e5-a039-0002a5d5c51b", "stopCode": self.stop.stopCode, "lineCode": self.line, "destinationCode": self.destinationCode]).responseJSON { response in + if let data = response.result.value { + let departs = JSON(data) + for (_, subjson) in departs["departures"] { + if AppValues.linesColor[subjson["line"]["lineCode"].string!] == nil { + self.initialDeparturesList.append(Departures( + line: subjson["line"]["lineCode"].string!, + direction: subjson["line"]["destinationName"].string!, + destinationCode: subjson["line"]["destinationCode"].string!, + lineColor: UIColor.whiteColor(), + lineBackgroundColor: UIColor.flatGrayColor(), + + code: String(subjson["departureCode"].intValue ?? 0), + leftTime: subjson["waitingTime"].string!, + timestamp: subjson["timestamp"].string + )) + } + else { + self.initialDeparturesList.append(Departures( + line: subjson["line"]["lineCode"].string!, + direction: subjson["line"]["destinationName"].string!, + destinationCode: subjson["line"]["destinationCode"].string!, + lineColor: AppValues.linesColor[subjson["line"]["lineCode"].string!]!, + lineBackgroundColor: AppValues.linesBackgroundColor[subjson["line"]["lineCode"].string!]!, + + code: String(subjson["departureCode"].intValue ?? 0), + leftTime: subjson["waitingTime"].string!, + timestamp: subjson["timestamp"].string + )) + } + self.initialDeparturesList.last?.calculerTempsRestant() } - else { - self.initialDeparturesList.append(Departures( - line: subJson["ligne"].string!, - direction: subJson["destination"].string!, - destinationCode: subJson["line"]["destinationCode"].string!, - lineColor: UIColor.whiteColor(), - lineBackgroundColor: UIColor.flatGrayColorDark(), - code: nil, - leftTime: "0", - timestamp: subJson["timestamp"].string! - )) + + if self.hoursList.isEmpty { + for depart in self.initialDeparturesList { + if self.hoursList.indexOf((depart.dateCompenents?.hour)!) == nil { + self.hoursList.append((depart.dateCompenents?.hour)!) + } + } + + self.hourPicker.reloadData() + self.actualHour = self.hoursList[0] } - self.initialDeparturesList.last?.calculerTempsRestant() + + self.departuresList = self.initialDeparturesList.filter({ (depart) -> Bool in + if depart.dateCompenents?.hour == self.actualHour { + return true + } + return false + }) } - - self.initialDeparturesList = self.initialDeparturesList.filter({ (depart) -> Bool in - if depart.line == self.line && depart.direction == self.direction { - return true - } - return false - }) - } - - if self.hoursList.isEmpty { - for depart in self.initialDeparturesList { - if self.hoursList.indexOf((depart.dateCompenents?.hour)!) == nil { - self.hoursList.append((depart.dateCompenents?.hour)!) + else { + let day = NSCalendar.currentCalendar().components([.Weekday], fromDate: NSDate()) + var path = "" + if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { + switch day.weekday { + case 7: + path = dir.stringByAppendingPathComponent(self.stop.stopCode + "departsSAM.json") + break + case 1: + path = dir.stringByAppendingPathComponent(self.stop.stopCode + "departsDIM.json"); + break + default: + path = dir.stringByAppendingPathComponent(self.stop.stopCode + "departsLUN.json"); + + break + } } - } - - - self.actualHour = self.hoursList[0] - } - - self.departuresList = self.initialDeparturesList.filter({ (depart) -> Bool in - if depart.dateCompenents?.hour == self.actualHour { - return true - } - return false - }) - } - else { - if self.initialDeparturesList.isEmpty { - Alamofire.request(.GET, "http://prod.ivtr-od.tpg.ch/v1/GetAllNextDepartures.json", parameters: ["key": "d95be980-0830-11e5-a039-0002a5d5c51b", "stopCode": self.stop.stopCode, "lineCode": self.line, "destinationCode": self.destinationCode]).responseJSON { response in - if let data = response.result.value { - let departs = JSON(data) - for (_, subjson) in departs["departures"] { - if AppValues.linesColor[subjson["line"]["lineCode"].string!] == nil { - self.initialDeparturesList.append(Departures( - line: subjson["line"]["lineCode"].string!, - direction: subjson["line"]["destinationName"].string!, - destinationCode: subjson["line"]["destinationCode"].string!, - lineColor: UIColor.whiteColor(), - lineBackgroundColor: UIColor.flatGrayColor(), - - code: String(subjson["departureCode"].intValue ?? 0), - leftTime: subjson["waitingTime"].string!, - timestamp: subjson["timestamp"].string - )) - } - else { - self.initialDeparturesList.append(Departures( - line: subjson["line"]["lineCode"].string!, - direction: subjson["line"]["destinationName"].string!, - destinationCode: subjson["line"]["destinationCode"].string!, - lineColor: AppValues.linesColor[subjson["line"]["lineCode"].string!]!, - lineBackgroundColor: AppValues.linesBackgroundColor[subjson["line"]["lineCode"].string!]!, - - code: String(subjson["departureCode"].intValue ?? 0), - leftTime: subjson["waitingTime"].string!, - timestamp: subjson["timestamp"].string - )) + + if NSFileManager.defaultManager().fileExistsAtPath(path) { + if self.initialDeparturesList.isEmpty { + let dataDeparts = NSData(contentsOfFile: path) + let departs = JSON(data: dataDeparts!) + for (_, subJson) in departs { + if AppValues.linesColor[subJson["ligne"].string!] != nil { + self.initialDeparturesList.append(Departures( + line: subJson["ligne"].string!, + direction: subJson["destination"].string!, + destinationCode: "", + lineColor: AppValues.linesColor[subJson["ligne"].string!]!, + lineBackgroundColor: AppValues.linesBackgroundColor[subJson["ligne"].string!]!, + code: nil, + leftTime: "0", + timestamp: subJson["timestamp"].string! + )) + } + else { + self.initialDeparturesList.append(Departures( + line: subJson["ligne"].string!, + direction: subJson["destination"].string!, + destinationCode: subJson["line"]["destinationCode"].string!, + lineColor: UIColor.whiteColor(), + lineBackgroundColor: UIColor.flatGrayColorDark(), + code: nil, + leftTime: "0", + timestamp: subJson["timestamp"].string! + )) + } + self.initialDeparturesList.last?.calculerTempsRestant() } - self.initialDeparturesList.last?.calculerTempsRestant() + + self.initialDeparturesList = self.initialDeparturesList.filter({ (depart) -> Bool in + if depart.line == self.line && depart.direction == self.direction { + return true + } + return false + }) } if self.hoursList.isEmpty { @@ -192,8 +239,14 @@ class SeeAllDeparturesViewController: UIViewController { } } - self.hourPicker.reloadData() - self.actualHour = self.hoursList[0] + if self.hoursList.isEmpty { + SCLAlertView().showError("Pas de réseau", subTitle: "Nous ne pouvons charger la totalité des départs car vous n'avez pas télécharger les départs et vous n'êtes pas connecté à internet", closeButtonTitle: "OK").setDismissBlock({ + self.navigationController?.popViewControllerAnimated(true) + }) + } + else { + self.actualHour = self.hoursList[0] + } } self.departuresList = self.initialDeparturesList.filter({ (depart) -> Bool in @@ -204,20 +257,20 @@ class SeeAllDeparturesViewController: UIViewController { }) } else { - SCLAlertView().showError("Pas de réseau", subTitle: "Nous ne pouvons charger la totalité des départs car vous n'avez pas télécharger les départs (si vous avez acheté le mode premium) et vous n'êtes pas connecté à internet", closeButtonTitle: "OK").setDismissBlock({ + SCLAlertView().showError("Pas de réseau", subTitle: "Nous ne pouvons charger la totalité des départs car vous n'avez pas télécharger les départs et vous n'êtes pas connecté à internet", closeButtonTitle: "OK").setDismissBlock({ self.navigationController?.popViewControllerAnimated(true) }) } } } - else { - self.departuresList = self.initialDeparturesList.filter({ (depart) -> Bool in - if depart.dateCompenents?.hour == self.actualHour { - return true - } - return false - }) - } + } + else { + self.departuresList = self.initialDeparturesList.filter({ (depart) -> Bool in + if depart.dateCompenents?.hour == self.actualHour { + return true + } + return false + }) } }.main { self.hourPicker.reloadData() @@ -238,12 +291,7 @@ extension SeeAllDeparturesViewController: UICollectionViewDelegate, UICollection cell.title.text = NSDateFormatter.localizedStringFromDate(NSDate(components: departuresList[indexPath.row].dateCompenents!), dateStyle: .NoStyle, timeStyle: .ShortStyle) cell.title.textColor = AppValues.textColor - if ContrastColorOf(AppValues.primaryColor, returnFlat: true) == FlatWhite() { - cell.backgroundColor = AppValues.primaryColor.lightenByPercentage(0.1) - } - else { - cell.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.1) - } + cell.backgroundColor = AppValues.primaryColor.lightenByPercentage(0.1) return cell } diff --git a/iOS/tpg offline/SeeLineTableViewCell.swift b/iOS/tpg offline/SeeLineTableViewCell.swift index ee45671f..9196272e 100755 --- a/iOS/tpg offline/SeeLineTableViewCell.swift +++ b/iOS/tpg offline/SeeLineTableViewCell.swift @@ -30,4 +30,7 @@ class SeeLineTableViewCell: UITableViewCell { // Configure the view for the selected state } + override func didMoveToSuperview() { + layoutIfNeeded() + } } diff --git a/iOS/tpg offline/SettingsTableViewController.swift b/iOS/tpg offline/SettingsTableViewController.swift index 296f39d2..be6c852b 100755 --- a/iOS/tpg offline/SettingsTableViewController.swift +++ b/iOS/tpg offline/SettingsTableViewController.swift @@ -23,34 +23,24 @@ class SettingsTableViewController: UITableViewController { [FAKFontAwesome.locationArrowIconWithSize(20), "Localisation".localized(), "showLocationMenu"], [FAKFontAwesome.infoCircleIconWithSize(20), "Crédits".localized(), "showCredits"], [FAKFontAwesome.githubIconWithSize(20), "Page GitHub du projet".localized(), "showGitHub"], - [FAKFontAwesome.graduationCapIconWithSize(20), "Revoir le tutoriel".localized(), "showTutoriel"] - ] - - let premiumRowList = [ + [FAKFontAwesome.graduationCapIconWithSize(20), "Revoir le tutoriel".localized(), "showTutoriel"], [FAKFontAwesome.paintBrushIconWithSize(20), "Thèmes".localized(), "showThemesMenu"], [FAKFontAwesome.refreshIconWithSize(20), "Actualiser les départs (Offline)".localized(), "actualiserDeparts"] ] - let nonPremiumRowList = [ - [FAKFontAwesome.starIconWithSize(20), "Premium".localized(), "showPremium"] - ] - let defaults = NSUserDefaults.standardUserDefaults() override func viewDidLoad() { super.viewDidLoad() refreshTheme() - if (AppValues.premium == true) { - rowsList += premiumRowList - } - else { - rowsList += nonPremiumRowList - } - if !defaults.boolForKey("tutorial") { + if !defaults.boolForKey("tutorial") && !(NSProcessInfo.processInfo().arguments.contains("-donotask")) { afficherTutoriel() } + else if !defaults.boolForKey("version4") && !(NSProcessInfo.processInfo().arguments.contains("-donotask")) { + afficherMiseAJour() + } } override func viewDidAppear(animated: Bool) { @@ -88,7 +78,7 @@ class SettingsTableViewController: UITableViewController { cell.textLabel?.textColor = AppValues.textColor let view = UIView() - view.backgroundColor = AppValues.secondaryColor + view.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = view return cell @@ -127,9 +117,9 @@ class SettingsTableViewController: UITableViewController { CATransaction.begin() let progressBar = MRProgressOverlayView.showOverlayAddedTo(self.view.window, title: "Chargement", mode: .DeterminateCircular, animated: true) - if ContrastColorOf(AppValues.secondaryColor, returnFlat: true) == FlatWhite() { - progressBar.tintColor = AppValues.secondaryColor - progressBar.titleLabel!.textColor = AppValues.secondaryColor + if ContrastColorOf(AppValues.primaryColor, returnFlat: true) == FlatWhite() { + progressBar.tintColor = AppValues.primaryColor + progressBar.titleLabel!.textColor = AppValues.primaryColor } else { progressBar.tintColor = AppValues.textColor @@ -145,7 +135,8 @@ class SettingsTableViewController: UITableViewController { var ok = 0 let json = JSON(value) for (_, subJson) in json { - Alamofire.download(.GET, "https://raw.githubusercontent.com/RemyDCF/tpg-offline/master/iOS/Departs/\(subJson.stringValue)", destination: { (temporaryURL, response) -> NSURL in + let url = "https://raw.githubusercontent.com/RemyDCF/tpg-offline/master/iOS/Departs/\(subJson.stringValue)" + Alamofire.download(.GET, url, destination: { (temporaryURL, response) -> NSURL in let fileManager = NSFileManager.defaultManager() let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] let pathComponent = response.suggestedFilename @@ -157,7 +148,7 @@ class SettingsTableViewController: UITableViewController { return directoryURL.URLByAppendingPathComponent(pathComponent!) }).response { _, _, _, error in if error != nil { - Alamofire.download(.GET, "https://raw.githubusercontent.com/RemyDCF/tpg-offline/master/iOS/Departs/\(subJson.stringValue)", destination: { (temporaryURL, response) -> NSURL in + Alamofire.download(.GET, url, destination: { (temporaryURL, response) -> NSURL in let fileManager = NSFileManager.defaultManager() let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] let pathComponent = response.suggestedFilename @@ -169,7 +160,7 @@ class SettingsTableViewController: UITableViewController { return directoryURL.URLByAppendingPathComponent(pathComponent!) }).response { _, _, _, error in if error != nil { - Alamofire.download(.GET, "https://raw.githubusercontent.com/RemyDCF/tpg-offline/master/iOS/Departs/\(subJson.stringValue)", destination: { (temporaryURL, response) -> NSURL in + Alamofire.download(.GET, url, destination: { (temporaryURL, response) -> NSURL in let fileManager = NSFileManager.defaultManager() let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] let pathComponent = response.suggestedFilename @@ -181,7 +172,7 @@ class SettingsTableViewController: UITableViewController { return directoryURL.URLByAppendingPathComponent(pathComponent!) }).response { _, _, _, error in if error != nil { - Alamofire.download(.GET, "https://raw.githubusercontent.com/RemyDCF/tpg-offline/master/iOS/Departs/\(subJson.stringValue)", destination: { (temporaryURL, response) -> NSURL in + Alamofire.download(.GET, url, destination: { (temporaryURL, response) -> NSURL in let fileManager = NSFileManager.defaultManager() let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] let pathComponent = response.suggestedFilename @@ -283,9 +274,9 @@ class SettingsTableViewController: UITableViewController { UIGraphicsBeginImageContext(rect.size) let context = UIGraphicsGetCurrentContext() - CGContextSetFillColorWithColor(context, AppValues.primaryColor.CGColor) + CGContextSetFillColorWithColor(context!, AppValues.primaryColor.CGColor) - CGContextFillRect(context, rect) + CGContextFillRect(context!, rect) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() @@ -323,6 +314,7 @@ class SettingsTableViewController: UITableViewController { self.dismissViewControllerAnimated(true, completion: nil) if !self.defaults.boolForKey("tutorial") { self.defaults.setBool(true, forKey: "tutorial") + self.defaults.setBool(true, forKey: "version4") self.tabBarController?.selectedIndex = 0 } }) @@ -341,7 +333,7 @@ class SettingsTableViewController: UITableViewController { onboardingVC.titleTextColor = AppValues.textColor onboardingVC.bodyTextColor = AppValues.textColor onboardingVC.buttonTextColor = AppValues.textColor - onboardingVC.pageControl.pageIndicatorTintColor = AppValues.secondaryColor + onboardingVC.pageControl.pageIndicatorTintColor = AppValues.primaryColor.darkenByPercentage(0.1) onboardingVC.pageControl.currentPageIndicatorTintColor = AppValues.textColor onboardingVC.skipButton.setTitleColor(AppValues.textColor, forState: .Normal) onboardingVC.bodyFontSize = 18 @@ -353,11 +345,67 @@ class SettingsTableViewController: UITableViewController { self.dismissViewControllerAnimated(true, completion: nil) if !self.defaults.boolForKey("tutorial") { self.defaults.setBool(true, forKey: "tutorial") + self.defaults.setBool(true, forKey: "version4") self.tabBarController?.selectedIndex = 0 } } presentViewController(onboardingVC, animated: true, completion: nil) } + + func afficherMiseAJour() { + let rect = CGRectMake(0.0, 0.0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height) + UIGraphicsBeginImageContext(rect.size) + let context = UIGraphicsGetCurrentContext() + + CGContextSetFillColorWithColor(context!, AppValues.primaryColor.CGColor) + + CGContextFillRect(context!, rect) + + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + + let page1 = OnboardingContentViewController (title: "Bienvenue dans tpg offline".localized(), body: "Merci d'avoir mis à jour tpg offline. Nous allons vous expliquer les grandes nouveautés de cette version.".localized(), image: nil, buttonText: "Continuer".localized(), actionBlock: nil) + + var iconeF = FAKFontAwesome.dollarIconWithSize(50) + iconeF.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + let page2 = OnboardingContentViewController (title: "Gratuit\rEt pour toujours !".localized(), body: "Le premium n'existe plus. Désormais, tout le monde peut accéder aux départs en mode hors ligne (sous réserve de les avoir au préalable téléchargés dans les paramètres), aux thèmes, etc...".localized(), image: iconeF.imageWithSize(CGSize(width: 50, height: 50)), buttonText: "Continuer".localized(), actionBlock: nil) + + let iconeI = FAKIonIcons.androidWatchIconWithSize(50) + iconeI.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + let page3 = OnboardingContentViewController (title: "watchOS", body: "Vous avez une Apple Watch ? Super, car tpg offline a désormais une extension pour Apple Watch qui vous permettra de visualiser les départs des arrêts favoris en un clin d'œil.".localized(), image: iconeI.imageWithSize(CGSize(width: 50, height: 50)), buttonText: "Continuer".localized(), actionBlock: nil) + + iconeF = FAKFontAwesome.rocketIconWithSize(50) + iconeF.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + let page4 = OnboardingContentViewController (title: "Encore plus. Bientôt".localized(), body: "D'autres surprises vont arriver dans les prochaines versions.".localized(), image: iconeF.imageWithSize(CGSize(width: 50, height: 50)), buttonText: "Terminer".localized(), actionBlock: { (onboardingvc) in + self.dismissViewControllerAnimated(true, completion: nil) + self.defaults.setBool(true, forKey: "version4") + self.tabBarController?.selectedIndex = 0 + }) + + page1.movesToNextViewController = true + page2.movesToNextViewController = true + page3.movesToNextViewController = true + + let onboardingVC = OnboardingViewController(backgroundImage: image, contents: [page1, page2, page3, page4]) + onboardingVC.titleTextColor = AppValues.textColor + onboardingVC.bodyTextColor = AppValues.textColor + onboardingVC.buttonTextColor = AppValues.textColor + onboardingVC.pageControl.pageIndicatorTintColor = AppValues.primaryColor.darkenByPercentage(0.1) + onboardingVC.pageControl.currentPageIndicatorTintColor = AppValues.textColor + onboardingVC.titleFontSize = 30 + onboardingVC.bodyFontSize = 18 + onboardingVC.shouldMaskBackground = false + onboardingVC.shouldFadeTransitions = true + onboardingVC.allowSkipping = false + onboardingVC.skipButton.setTitle("Passer".localized(), forState: .Normal) + onboardingVC.skipHandler = { + self.dismissViewControllerAnimated(true, completion: nil) + self.defaults.setBool(true, forKey: "version4") + self.tabBarController?.selectedIndex = 0 + } + presentViewController(onboardingVC, animated: true, completion: nil) + } + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "showGitHub" { let destinationViewController: WebViewController = (segue.destinationViewController) as! WebViewController diff --git a/iOS/tpg offline/Stop.swift b/iOS/tpg offline/Stop.swift index 529fc083..f014d521 100755 --- a/iOS/tpg offline/Stop.swift +++ b/iOS/tpg offline/Stop.swift @@ -8,6 +8,7 @@ import UIKit import CoreLocation +import SwiftyJSON internal class Stop: NSObject, NSCoding { var fullName: String! @@ -63,6 +64,29 @@ internal class Stop: NSObject, NSCoding { transportAPIiD = stop.idTransportAPI connections = stop.connections } + + init(dictionnary: [String:AnyObject]) { + fullName = dictionnary["fullName"] as? String ?? "" + title = dictionnary["title"] as? String ?? "" + subTitle = dictionnary["subTitle"] as? String ?? "" + stopCode = dictionnary["stopCode"] as? String ?? "" + location = dictionnary["location"] as? CLLocation ?? CLLocation(latitude: 46.204705, longitude: 6.143060) + transportAPIiD = dictionnary["transportAPIiD"] as? String ?? "" + connections = dictionnary["connections"] as? [String] ?? [] + } + + func toDictionnary() -> [String:AnyObject] { + let attributes = [ + "fullName": fullName, + "title": title, + "subTitle": subTitle, + "stopCode": stopCode, + "transportAPIid": transportAPIiD, + "location": location, + "connections": connections + ] + return attributes + } } // WARNING : Old class. Use Stop instead diff --git a/iOS/tpg offline/StopsTableViewController.swift b/iOS/tpg offline/StopsTableViewController.swift index 9323389d..eb9cd41c 100755 --- a/iOS/tpg offline/StopsTableViewController.swift +++ b/iOS/tpg offline/StopsTableViewController.swift @@ -40,7 +40,7 @@ class StopsTableViewController: UITableViewController, UISplitViewControllerDele }, loadingView: loadingView) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) // Result Search Controller @@ -73,10 +73,10 @@ class StopsTableViewController: UITableViewController, UISplitViewControllerDele // thanks! return } - switch PermissionScope().statusLocationAlways() { + switch PermissionScope().statusLocationInUse() { case .Unknown: // ask - pscope.addPermission(LocationAlwaysPermission(), message: "Cette autorisation sert à indiquer les arrets les plus proches.".localized()) + pscope.addPermission(LocationWhileInUsePermission(), message: "Cette autorisation sert à indiquer les arrets les plus proches.".localized()) case .Unauthorized, .Disabled: // bummer return @@ -155,11 +155,12 @@ class StopsTableViewController: UITableViewController, UISplitViewControllerDele override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - refreshTheme() searchController.searchBar.barTintColor = AppValues.primaryColor searchController.searchBar.tintColor = AppValues.textColor - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + refreshTheme() + + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) if !(NSProcessInfo.processInfo().arguments.contains("-donotask")) { @@ -255,7 +256,7 @@ class StopsTableViewController: UITableViewController, UISplitViewControllerDele } let backgroundView = UIView() - backgroundView.backgroundColor = AppValues.secondaryColor + backgroundView.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = backgroundView cell.backgroundColor = AppValues.primaryColor cell.textLabel?.textColor = AppValues.textColor @@ -270,7 +271,7 @@ class StopsTableViewController: UITableViewController, UISplitViewControllerDele iconCheveron.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) let backgroundView = UIView() - backgroundView.backgroundColor = AppValues.secondaryColor + backgroundView.backgroundColor = AppValues.primaryColor cell.selectedBackgroundView = backgroundView cell.textLabel?.text = filtredResults[indexPath.row].title cell.textLabel?.textColor = AppValues.textColor @@ -318,13 +319,14 @@ class StopsTableViewController: UITableViewController, UISplitViewControllerDele } func filterContentForSearchText(searchText: String) { + let espacapedSearchTextString = searchText.lowercaseString.stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "") filtredResults = [Stop](AppValues.stops.values).filter { arret in - return arret.fullName.lowercaseString.containsString(searchText.lowercaseString) + return arret.fullName.lowercaseString.stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "").containsString(espacapedSearchTextString) } filtredResults.sortInPlace { (arret1, arret2) -> Bool in - let stringA = String(arret1.title + arret1.subTitle) - let stringB = String(arret2.title + arret2.subTitle) - if stringA.lowercaseString < stringB.lowercaseString { + let stringA = String(arret1.title + arret1.subTitle).stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "").lowercaseString + let stringB = String(arret2.title + arret2.subTitle).stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()).stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("+", withString: "").lowercaseString + if stringA < stringB { return true } return false diff --git a/iOS/tpg offline/ThemeCollectionViewCell.swift b/iOS/tpg offline/ThemeCollectionViewCell.swift index f6235801..b4bd4a25 100755 --- a/iOS/tpg offline/ThemeCollectionViewCell.swift +++ b/iOS/tpg offline/ThemeCollectionViewCell.swift @@ -10,7 +10,6 @@ import UIKit class ThemeCollectionViewCell: UICollectionViewCell { @IBOutlet weak var primaryColorView: UIView! - @IBOutlet weak var secondaryColorView: UIView! @IBOutlet weak var textColorLabel: UILabel! override func awakeFromNib() { diff --git a/iOS/tpg offline/ThemesCollectionViewController.swift b/iOS/tpg offline/ThemesCollectionViewController.swift index 72d75310..123f7d92 100755 --- a/iOS/tpg offline/ThemesCollectionViewController.swift +++ b/iOS/tpg offline/ThemesCollectionViewController.swift @@ -14,12 +14,15 @@ private let reuseIdentifier = "ThemesCell" class ThemesCollectionViewController: UICollectionViewController { let themes = [ - "Défaut".localized() : [UIColor.flatOrangeColor(), UIColor.flatOrangeColorDark(), UIColor.whiteColor()], - "Inversé".localized() : [UIColor.flatWhiteColor(), UIColor.flatWhiteColor().darkenByPercentage(0.1), UIColor.flatOrangeColorDark()], - "Nuit".localized() : [UIColor.flatNavyBlueColor(), UIColor.flatNavyBlueColorDark(), UIColor.flatWhiteColor()], - "Menthe".localized() : [UIColor.flatWhiteColor(), UIColor.flatWhiteColor().darkenByPercentage(0.1), UIColor.flatMintColorDark()], - "Bleu".localized() : [UIColor.flatWhiteColor(), UIColor.flatWhiteColor().darkenByPercentage(0.1), UIColor.flatSkyBlueColor()], - "Vert".localized() : [UIColor.flatWhiteColor(), UIColor.flatWhiteColor().darkenByPercentage(0.1), UIColor.flatGreenColorDark()] + "Défaut".localized() : [UIColor.flatOrangeColor(), UIColor.whiteColor()], + "Inversé".localized() : [UIColor.flatWhiteColor(), UIColor.flatOrangeColorDark()], + "Nuit".localized() : [UIColor.flatNavyBlueColor(), UIColor.flatWhiteColor()], + "Menthe".localized() : [UIColor.flatWhiteColor(), UIColor.flatMintColorDark()], + "Bleu".localized() : [UIColor.flatWhiteColor(), UIColor.flatSkyBlueColor()], + "Vert".localized() : [UIColor.flatWhiteColor(), UIColor.flatGreenColorDark()], + "Noir".localized() : [UIColor.flatWhiteColor(), UIColor.flatBlackColorDark()], + "Forêt".localized() : [UIColor.flatWhiteColor(), UIColor.flatForestGreenColor()], + "Mauve".localized() : [UIColor.flatWhiteColor(), UIColor.flatMagentaColor()] ] let defaults = NSUserDefaults.standardUserDefaults() @@ -34,7 +37,7 @@ class ThemesCollectionViewController: UICollectionViewController { } return false }) - collectionView!.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.2) + collectionView!.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.1) } override func didReceiveMemoryWarning() { @@ -59,8 +62,7 @@ class ThemesCollectionViewController: UICollectionViewController { let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ThemeCollectionViewCell cell.primaryColorView.backgroundColor = themes[keys[indexPath.row]]![0] - cell.secondaryColorView.backgroundColor = themes[keys[indexPath.row]]![1] - cell.textColorLabel.textColor = themes[keys[indexPath.row]]![2] + cell.textColorLabel.textColor = themes[keys[indexPath.row]]![1] cell.textColorLabel.text = keys[indexPath.row] return cell @@ -74,13 +76,11 @@ class ThemesCollectionViewController: UICollectionViewController { override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { AppValues.primaryColor = themes[keys[indexPath.row]]![0] - AppValues.secondaryColor = themes[keys[indexPath.row]]![1] - AppValues.textColor = themes[keys[indexPath.row]]![2] + AppValues.textColor = themes[keys[indexPath.row]]![1] refreshTheme() - collectionView.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.2) + collectionView.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.1) defaults.setColor(AppValues.primaryColor, forKey: "primaryColor") - defaults.setColor(AppValues.secondaryColor, forKey: "secondaryColor") defaults.setColor(AppValues.textColor, forKey: "textColor") setTabBar() @@ -94,51 +94,44 @@ class ThemesCollectionViewController: UICollectionViewController { } func setTabBar() { - UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : AppValues.textColor], forState: .Selected) - UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : AppValues.textColor], forState: .Normal) - - tabBarController!.tabBar.barTintColor = AppValues.secondaryColor - tabBarController!.tabBar.tintColor = AppValues.textColor - let view = UIView(frame: CGRect(x: 0, y: 0, width: 64, height: 49)) - - if ContrastColorOf(AppValues.secondaryColor, returnFlat: true) == FlatWhite() { - tabBarController!.tabBar.barTintColor = AppValues.secondaryColor - view.backgroundColor = AppValues.secondaryColor.darkenByPercentage(0.1) - } - else { - tabBarController!.tabBar.barTintColor = AppValues.secondaryColor.darkenByPercentage(0.1) - view.backgroundColor = AppValues.secondaryColor - } - - UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0) - view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) - let image = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - tabBarController!.tabBar.selectionIndicatorImage = image - - let iconeHorloge = FAKIonIcons.iosClockIconWithSize(20) - iconeHorloge.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - tabBarController!.tabBar.items![0].image = iconeHorloge.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - tabBarController!.tabBar.items![0].selectedImage = iconeHorloge.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - - let iconeAttention = FAKFontAwesome.warningIconWithSize(20) - iconeAttention.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - tabBarController!.tabBar.items![1].image = iconeAttention.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - tabBarController!.tabBar.items![1].selectedImage = iconeAttention.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - - let iconeItineraire = FAKFontAwesome.mapSignsIconWithSize(20) - iconeItineraire.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - tabBarController!.tabBar.items![2].image = iconeItineraire.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - tabBarController!.tabBar.items![2].selectedImage = iconeItineraire.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - - let iconePlan = FAKFontAwesome.mapIconWithSize(20) - iconePlan.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - tabBarController!.tabBar.items![3].image = iconePlan.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - tabBarController!.tabBar.items![3].selectedImage = iconePlan.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - - let iconeParametre = FAKFontAwesome.cogIconWithSize(20) - iconeParametre.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) - tabBarController!.tabBar.items![4].image = iconeParametre.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - tabBarController!.tabBar.items![4].selectedImage = iconeParametre.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) - } + UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : AppValues.textColor], forState: .Selected) + UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : AppValues.textColor], forState: .Normal) + + tabBarController!.tabBar.tintColor = AppValues.textColor + let view = UIView(frame: CGRect(x: 0, y: 0, width: 64, height: 49)) + + tabBarController!.tabBar.barTintColor = AppValues.primaryColor + view.backgroundColor = AppValues.primaryColor.darkenByPercentage(0.05) + + UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0) + view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + tabBarController!.tabBar.selectionIndicatorImage = image + + let iconeHorloge = FAKIonIcons.iosClockIconWithSize(20) + iconeHorloge.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + tabBarController!.tabBar.items![0].image = iconeHorloge.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + tabBarController!.tabBar.items![0].selectedImage = iconeHorloge.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + + let iconeAttention = FAKFontAwesome.warningIconWithSize(20) + iconeAttention.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + tabBarController!.tabBar.items![1].image = iconeAttention.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + tabBarController!.tabBar.items![1].selectedImage = iconeAttention.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + + let iconeItineraire = FAKFontAwesome.mapSignsIconWithSize(20) + iconeItineraire.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + tabBarController!.tabBar.items![2].image = iconeItineraire.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + tabBarController!.tabBar.items![2].selectedImage = iconeItineraire.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + + let iconePlan = FAKFontAwesome.mapIconWithSize(20) + iconePlan.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + tabBarController!.tabBar.items![3].image = iconePlan.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + tabBarController!.tabBar.items![3].selectedImage = iconePlan.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + + let iconeParametre = FAKFontAwesome.cogIconWithSize(20) + iconeParametre.addAttribute(NSForegroundColorAttributeName, value: AppValues.textColor) + tabBarController!.tabBar.items![4].image = iconeParametre.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + tabBarController!.tabBar.items![4].selectedImage = iconeParametre.imageWithSize(CGSize(width: 20, height: 20)).imageWithRenderingMode(.AlwaysOriginal) + } } \ No newline at end of file diff --git a/iOS/tpg offline/ThermometerTableViewController.swift b/iOS/tpg offline/ThermometerTableViewController.swift index 2fbebf20..811f53c0 100755 --- a/iOS/tpg offline/ThermometerTableViewController.swift +++ b/iOS/tpg offline/ThermometerTableViewController.swift @@ -35,7 +35,7 @@ class ThermometerTableViewController: UITableViewController { self!.refresh() }, loadingView: loadingView) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) self.refreshTheme() @@ -44,7 +44,7 @@ class ThermometerTableViewController: UITableViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - tableView.dg_setPullToRefreshFillColor(AppValues.secondaryColor) + tableView.dg_setPullToRefreshFillColor(AppValues.primaryColor.darkenByPercentage(0.1)) tableView.dg_setPullToRefreshBackgroundColor(AppValues.primaryColor) self.refreshTheme() @@ -300,7 +300,7 @@ class ThermometerTableViewController: UITableViewController { } override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - return 70 + return 70.00 } func refresh() { @@ -353,6 +353,7 @@ class ThermometerTableViewController: UITableViewController { } } else { + AppValues.logger.error(response.result.error) self.thermometerList = [] self.tableView.allowsSelection = false self.loading = false @@ -368,6 +369,10 @@ class ThermometerTableViewController: UITableViewController { } } + override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { + return 70.00 + } + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "showLigneArret" { let departArretTableViewController: DeparturesTableViewController = (segue.destinationViewController) as! DeparturesTableViewController diff --git a/iOS/tpg offline/TimeSelectionViewController.swift b/iOS/tpg offline/TimeSelectionViewController.swift index 08935bf4..a07a3187 100755 --- a/iOS/tpg offline/TimeSelectionViewController.swift +++ b/iOS/tpg offline/TimeSelectionViewController.swift @@ -51,7 +51,7 @@ class TimeSelectionViewController: UIViewController { minuteSlider.handleColor = minuteSlider.filledColor hourSlider.handleColor = hourSlider.filledColor - boutonValider.backgroundColor = AppValues.secondaryColor + boutonValider.backgroundColor = AppValues.primaryColor.lightenByPercentage(0.1) boutonValider.setTitle("Valider", forState: .Normal) boutonValider.setTitleColor(AppValues.textColor, forState: .Normal) } @@ -62,9 +62,9 @@ class TimeSelectionViewController: UIViewController { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) - refreshTheme() - boutonValider.backgroundColor = AppValues.secondaryColor + refreshTheme() + boutonValider.backgroundColor = AppValues.primaryColor.lightenByPercentage(0.1) boutonValider.setTitleColor(AppValues.textColor, forState: .Normal) minuteSlider.unfilledColor = AppValues.primaryColor.darkenByPercentage(0.1) minuteSlider.filledColor = AppValues.primaryColor.lightenByPercentage(0.2) diff --git a/iOS/tpg offline/UIKitExtension.swift b/iOS/tpg offline/UIKitExtension.swift index 4259cc76..195c8952 100755 --- a/iOS/tpg offline/UIKitExtension.swift +++ b/iOS/tpg offline/UIKitExtension.swift @@ -11,7 +11,7 @@ import ChameleonFramework extension UIViewController { func refreshTheme() { - navigationController?.navigationBar.barTintColor = AppValues.secondaryColor + navigationController?.navigationBar.barTintColor = AppValues.primaryColor navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: AppValues.textColor] navigationController?.navigationBar.tintColor = AppValues.textColor view.backgroundColor = AppValues.primaryColor @@ -24,13 +24,13 @@ extension UIViewController { } if self.splitViewController != nil { if ((self.splitViewController?.viewControllers[0].isKindOfClass(UINavigationController)) == true) { - (self.splitViewController?.viewControllers[0] as! UINavigationController).navigationBar.barTintColor = AppValues.secondaryColor + (self.splitViewController?.viewControllers[0] as! UINavigationController).navigationBar.barTintColor = AppValues.primaryColor (self.splitViewController?.viewControllers[0] as! UINavigationController).navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: AppValues.textColor] (self.splitViewController?.viewControllers[0] as! UINavigationController).navigationBar.tintColor = AppValues.textColor } if self.splitViewController?.viewControllers.count != 1 { if ((self.splitViewController?.viewControllers[1].isKindOfClass(UINavigationController)) == true) { - (self.splitViewController?.viewControllers[1] as! UINavigationController).navigationBar.barTintColor = AppValues.secondaryColor + (self.splitViewController?.viewControllers[1] as! UINavigationController).navigationBar.barTintColor = AppValues.primaryColor (self.splitViewController?.viewControllers[1] as! UINavigationController).navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: AppValues.textColor] (self.splitViewController?.viewControllers[1] as! UINavigationController).navigationBar.tintColor = AppValues.textColor } diff --git a/iOS/tpg offline/WatchSessionManager.swift b/iOS/tpg offline/WatchSessionManager.swift new file mode 100644 index 00000000..43c86bce --- /dev/null +++ b/iOS/tpg offline/WatchSessionManager.swift @@ -0,0 +1,41 @@ +// +// WatchSessionManager.swift +// tpg offline +// +// Created by Alice on 05/06/2016. +// Copyright © 2016 dacostafaro. All rights reserved. +// + +import WatchConnectivity + +@available(iOS 9.0, *) +class WatchSessionManager: NSObject, WCSessionDelegate { + + static let sharedManager = WatchSessionManager() + private override init() { + super.init() + } + + private let watchSession: WCSession? = WCSession.isSupported() ? WCSession.defaultSession() : nil + + private var validSession: WCSession? { + if let session = watchSession where session.paired && session.watchAppInstalled { + return session + } + return nil + } + + func startSession() { + watchSession?.delegate = self + watchSession?.activateSession() + } + + func updateApplicationContext(applicationContext: [String : AnyObject]) throws { + do { + try watchSession!.updateApplicationContext(applicationContext) + } catch let error { + AppValues.logger.error("Error : \(error)") + throw error + } + } +} \ No newline at end of file diff --git a/iOS/tpg offline/en.lproj/Localizable.strings b/iOS/tpg offline/en.lproj/Localizable.strings index 627f025d..bf79e7ff 100755 --- a/iOS/tpg offline/en.lproj/Localizable.strings +++ b/iOS/tpg offline/en.lproj/Localizable.strings @@ -1,47 +1,5 @@ "Bonjour" = "Hello"; -/* - * ./tpg offline/PremiumTableViewController.swift - */ - -"Mode offline des départs" = "Departures offline mode"; - -"Pas de réseau ? Pas de problème avec le mode offline, vous pouvez accéder aux horaires hors ligne. Attetion : Les horaires du mode offline ne peuvent pas prévoir les évantuels retards, avances, perturbation en cours sur le réseau tpg." = "No network ? No problem with the offline mode, you can access the schedules offline. Attetion: the offline mode schedules can not predict delays, advances, current tpg disturbance on the network."; - -"Avec le premium, vous pouvez accéder à une multitude de thèmes pour personnaliser votre application." = "With the premium, you can access a multitude of themes to customize your application."; - -"Favoris des itinéraires" = "Favorites routes"; - -"Avec les favoris des itinéraires, vous pouvez en un seul appui voir les prochains itinéraires de un point à un autre." = "With favorites itineraries, you can see a single press of the next itineraries one point to another."; - -"Fonctionnalités futures" = "Future features"; - -"Un seul achat et vous aurez toutes les merveilles à venir. Pour toujours !" = "One purchase and you will all come to Wonderland. Forever !"; - -"Acheter" = "Buy"; - -"Restaurer les achats" = "Restore purchases"; - -"L'achat a réussi" = "The purchase was successful"; - -"Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres." = "All premium features are enabled. Thank you very much ! We recommend you to download the departures in offline settings."; - -"Fermer" = "Close"; - -"Échec" = "Failure"; - -"L'achat n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions." = "The purchase has not been finalized. Thank you to verify in-app purchases are allowed to Settings > General > Restrictions."; - -"La restauration à réussi" = "Restoring successful"; - -"La restauration n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions." = "The restoration has not been finalized. Thank you to verify in-app purchases are allowed to Settings > General > Restrictions."; - - - - - - - /* * ./tpg offline/RouteToStopViewController.swift */ @@ -96,7 +54,7 @@ "Projet maintenu sur GitHub par malcommac - Projet en licence MIT" = "Project on GitHub maintained by malcommac - Project MIT license"; -"Projet maintenu sur GitHub par delba - Projet en licence MIT" = "Project on GitHub maintained by delba - Project MIT license"; +"Projet maintenu sur GitHub par SwiftyBeaver - Projet en licence MIT" = "Project on GitHub maintained by SwiftyBeaver - Project MIT license"; "Projet maintenu sur GitHub par ninjaprox - Projet en licence MIT" = "Project on GitHub maintained by ninjaprox - Project MIT license"; @@ -154,6 +112,12 @@ "Vert" = "Green"; +"Noir" = "Black"; + +"Mauve" = "Magenta"; + +"Forest" = "Forest"; + @@ -234,13 +198,11 @@ "Actualiser les départs (Offline)" = "Refresh departures (Offline)"; -"Premium" = "Premium"; - "Bienvenue dans tpg offline" = "Welcome tpg offline"; "tpg offline est une application qui facilite vos déplacements avec les transports publics genevois, même sans réseau." = "tpg offline is an application that makes traveling with the Geneva public transport, even without network."; -"Continuer" = "Continuer"; +"Continuer" = "Next"; "Départs" = "Départs"; @@ -280,7 +242,17 @@ "Passer" = "Skip"; +"Merci d'avoir mis à jour tpg offline. Nous allons vous expliquer les grandes nouveautés de cette version." = "Thank you for updated tpg offline. We will explain the great innovations of this release."; + +"Gratuit\rEt pour toujours !" = "Free\rAnd forever !"; + +"Le premium n'existe plus. Désormais, tout le monde peut accéder aux départs en mode hors ligne (sous réserve de les avoir au préalable téléchargés dans les paramètres), aux thèmes, etc..." = "The premium is no more. Now everyone can access the departures offline (you have to download departures in the settings menu), themes, etc..."; + +"Vous avez une Apple Watch ? Super, car tpg offline a désormais une extension pour Apple Watch qui vous permettra de visualiser les départs des arrêts favoris en un clin d'œil." = "You have an Apple Watch? Great, because tpg offline now has an extension for Apple Watch will allow you to view the departures of favorite stops in an instant."; + +"Encore plus. Bientôt" = "Even more. Soon"; +"D'autres surprises vont arriver dans les prochaines versions." = "Other surprises will arrive in future releases."; @@ -316,7 +288,9 @@ "Plus aucun départ n'est prévu pour la totalité des lignes desservants cet arrêt." = "No more departure is planned for all lines."; +"Non téléchargé" = "Not downloaded"; +"Vous pouvez télécharger les départs dans les paramètres afin d'y avoir accès en mode hors-ligne." = "You can download the departures in settings menu to be accessed in offline mode."; diff --git a/iOS/tpg offline/fr.lproj/Localizable.strings b/iOS/tpg offline/fr.lproj/Localizable.strings index a86bfc28..7e432f3b 100755 --- a/iOS/tpg offline/fr.lproj/Localizable.strings +++ b/iOS/tpg offline/fr.lproj/Localizable.strings @@ -21,48 +21,6 @@ "Notifications" = "Notifications"; "Bonjour" = "Bonjour"; -/* - * ./tpg offline/PremiumTableViewController.swift - */ - -"Mode offline des départs" = "Mode offline des départs"; - -"Pas de réseau ? Pas de problème avec le mode offline, vous pouvez accéder aux horaires hors ligne. Attetion : Les horaires du mode offline ne peuvent pas prévoir les évantuels retards, avances, perturbation en cours sur le réseau tpg." = "Pas de réseau ? Pas de problème avec le mode offline, vous pouvez accéder aux horaires hors ligne. Attetion : Les horaires du mode offline ne peuvent pas prévoir les évantuels retards, avances, perturbation en cours sur le réseau tpg."; - -"Avec le premium, vous pouvez accéder à une multitude de thèmes pour personnaliser votre application." = "Avec le premium, vous pouvez accéder à une multitude de thèmes pour personnaliser votre application."; - -"Favoris des itinéraires" = "Favoris des itinéraires"; - -"Avec les favoris des itinéraires, vous pouvez en un seul appui voir les prochains itinéraires de un point à un autre." = "Avec les favoris des itinéraires, vous pouvez en un seul appui voir les prochains itinéraires de un point à un autre."; - -"Fonctionnalités futures" = "Fonctionnalités futures"; - -"Un seul achat et vous aurez toutes les merveilles à venir. Pour toujours !" = "Un seul achat et vous aurez toutes les merveilles à venir. Pour toujours !"; - -"Acheter" = "Acheter"; - -"Restaurer les achats" = "Restaurer les achats"; - -"L'achat a réussi" = "L'achat a réussi"; - -"Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres." = "Toutes les fonctions premium sont débloquées. Merci beaucoup ! Nous vous recommendons de télécharger les départs hors ligne dans les paramètres."; - -"Fermer" = "Fermer"; - -"Échec" = "Échec"; - -"L'achat n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions." = "L'achat n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions."; - -"La restauration à réussi" = "La restauration à réussi"; - -"La restauration n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions." = "La restauration n'a pas pu être finalisé. Merci de vérifier si les achats intégrés sont autorisés dans Réglages > Général > Restrictions."; - - - - - - - /* * ./tpg offline/RouteToStopViewController.swift */ @@ -117,7 +75,7 @@ "Projet maintenu sur GitHub par malcommac - Projet en licence MIT" = "Projet maintenu sur GitHub par malcommac - Projet en licence MIT"; -"Projet maintenu sur GitHub par delba - Projet en licence MIT" = "Projet maintenu sur GitHub par delba - Projet en licence MIT"; +"Projet maintenu sur GitHub par SwiftyBeaver - Projet en licence MIT" = "Projet maintenu sur GitHub par SwiftyBeaver - Projet en licence MIT"; "Projet maintenu sur GitHub par ninjaprox - Projet en licence MIT" = "Projet maintenu sur GitHub par ninjaprox - Projet en licence MIT"; @@ -175,6 +133,11 @@ "Vert" = "Vert"; +"Noir" = "Noir"; + +"Mauve" = "Mauve"; + +"Forêt" = "Forest"; @@ -255,8 +218,6 @@ "Actualiser les départs (Offline)" = "Actualiser les départs (Offline)"; -"Premium" = "Premium"; - "Bienvenue dans tpg offline" = "Bienvenue dans tpg offline"; "tpg offline est une application qui facilite vos déplacements avec les transports publics genevois, même sans réseau." = "tpg offline est une application qui facilite vos déplacements avec les transports publics genevois, même sans réseau."; @@ -301,8 +262,17 @@ "Passer" = "Passer"; +"Merci d'avoir mis à jour tpg offline. Nous allons vous expliquer les grandes nouveautés de cette version." = "Merci d'avoir mis à jour tpg offline. Nous allons vous expliquer les grandes nouveautés de cette version."; + +"Gratuit\rEt pour toujours !" = "Gratuit\rEt pour toujours !"; + +"Le premium n'existe plus. Désormais, tout le monde peut accéder aux départs en mode hors ligne (sous réserve de les avoir au préalable téléchargés dans les paramètres), aux thèmes, etc..." = "Le premium n'existe plus. Désormais, tout le monde peut accéder aux départs en mode hors ligne (sous réserve de les avoir au préalable téléchargés dans les paramètres), aux thèmes, etc..."; + +"Vous avez une Apple Watch ? Super, car tpg offline a désormais une extension pour Apple Watch qui vous permettra de visualiser les départs des arrêts favoris en un clin d'œil." = "Vous avez une Apple Watch ? Super, car tpg offline a désormais une extension pour Apple Watch qui vous permettra de visualiser les départs des arrêts favoris en un clin d'œil."; +"Encore plus. Bientôt" = "Encore plus. Bientôt"; +"D'autres surprises vont arriver dans les prochaines versions." = "D'autres surprises vont arriver dans les prochaines versions."; @@ -337,7 +307,9 @@ "Plus aucun départ n'est prévu pour la totalité des lignes desservants cet arrêt." = "Plus aucun départ n'est prévu pour la totalité des lignes desservants cet arrêt."; +"Non téléchargé" = "Non téléchargé"; +"Vous pouvez télécharger les départs dans les paramètres afin d'y avoir accès en mode hors-ligne." = "Vous pouvez télécharger les départs dans les paramètres afin d'y avoir accès en mode hors-ligne."; diff --git a/travisci.sh b/travisci.sh index 2b2079bb..a1cb4794 100644 --- a/travisci.sh +++ b/travisci.sh @@ -2,4 +2,5 @@ set -e -xcodebuild -workspace "iOS/tpg offline.xcworkspace" -scheme "tpg offline Travis CI" -destination "platform=iOS Simulator,name=iPhone 6" test +xcodebuild -workspace "iOS/tpg offline.xcworkspace" -scheme "tpg offline Travis CI" -destination "platform=iOS Simulator,name=iPhone 6" test | xcpretty -c +xcodebuild -workspace "iOS/tpg offline.xcworkspace" -scheme "tpg offline Travis CI" -destination "platform=iOS Simulator,name=iPhone 4s" test | xcpretty -c \ No newline at end of file