diff --git a/circle.yml b/circle.yml index 0e53284..25d10b3 100644 --- a/circle.yml +++ b/circle.yml @@ -3,7 +3,7 @@ machine: LANG: en_US.UTF-8 LC_CTYPE: en_US.UTF-8 xcode: - version: "6.3.1" + version: "7.0" dependencies: pre: - xcrun instruments -w "iPhone 6 (8.3 Simulator)" || exit 0 diff --git a/src/Bequest.xcodeproj/project.pbxproj b/src/Bequest.xcodeproj/project.pbxproj index 9bd4919..bf75b93 100644 --- a/src/Bequest.xcodeproj/project.pbxproj +++ b/src/Bequest.xcodeproj/project.pbxproj @@ -316,7 +316,8 @@ 5E6B02221A1D2DA500EB5CCC /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0610; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = BQST; TargetAttributes = { 5E6B02291A1D2DA500EB5CCC = { @@ -564,6 +565,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -705,6 +707,7 @@ GCC_WARN_PEDANTIC = YES; GCC_WARN_STRICT_SELECTOR_MATCH = YES; INFOPLIST_FILE = "Bequest/Supporting Files/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "net.splinesoft.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Bequest/Supporting Files/Bequest-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -729,6 +732,7 @@ GCC_WARN_PEDANTIC = YES; GCC_WARN_STRICT_SELECTOR_MATCH = YES; INFOPLIST_FILE = "Bequest/Supporting Files/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "net.splinesoft.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Bequest/Supporting Files/Bequest-Bridging-Header.h"; }; @@ -749,6 +753,7 @@ ); INFOPLIST_FILE = BequestTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "net.splinesoft.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/BequestTests/BequestTestsBridgingHeader.h"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Bequest.app/Bequest"; @@ -766,6 +771,7 @@ ); INFOPLIST_FILE = BequestTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "net.splinesoft.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/BequestTests/BequestTestsBridgingHeader.h"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Bequest.app/Bequest"; @@ -864,6 +870,7 @@ GCC_WARN_PEDANTIC = YES; GCC_WARN_STRICT_SELECTOR_MATCH = YES; INFOPLIST_FILE = "Bequest/Supporting Files/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "net.splinesoft.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Bequest/Supporting Files/Bequest-Bridging-Header.h"; }; @@ -880,6 +887,7 @@ ); INFOPLIST_FILE = BequestTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "net.splinesoft.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/BequestTests/BequestTestsBridgingHeader.h"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Bequest.app/Bequest"; diff --git a/src/Bequest.xcodeproj/xcshareddata/xcschemes/Bequest Adhoc.xcscheme b/src/Bequest.xcodeproj/xcshareddata/xcschemes/Bequest Adhoc.xcscheme index a6cb33b..1b2e1be 100644 --- a/src/Bequest.xcodeproj/xcshareddata/xcschemes/Bequest Adhoc.xcscheme +++ b/src/Bequest.xcodeproj/xcshareddata/xcschemes/Bequest Adhoc.xcscheme @@ -1,6 +1,6 @@ + + - + - + + + - + - + + + - + - + NSString { + func BQSTString(contentType contentType: String?) -> NSString { var string: NSString? if let contentTypeComponents = contentType?.componentsSeparatedByString(";") { diff --git a/src/Bequest/Additions/UIViewController+BQSTAlerts.swift b/src/Bequest/Additions/UIViewController+BQSTAlerts.swift index 292ca5c..2e36c40 100644 --- a/src/Bequest/Additions/UIViewController+BQSTAlerts.swift +++ b/src/Bequest/Additions/UIViewController+BQSTAlerts.swift @@ -21,7 +21,7 @@ extension UIViewController { } func BQSTShowSimpleErrorAlert(title: String, error: NSError?) { - println("Request error: \(error)") + print("Request error: \(error)", appendNewline: false) let msg: String = (error?.userInfo?[NSUnderlyingErrorKey] as! NSError).localizedDescription ?? BQSTLocalizedString("REQUEST_RESPONSE_GENERIC_ERROR") diff --git a/src/Bequest/Controllers/BQSTNavigationController.swift b/src/Bequest/Controllers/BQSTNavigationController.swift index 95cfef5..16a54fd 100644 --- a/src/Bequest/Controllers/BQSTNavigationController.swift +++ b/src/Bequest/Controllers/BQSTNavigationController.swift @@ -19,7 +19,7 @@ class BQSTNavigationController: UINavigationController { return self.visibleViewController.shouldAutorotate() } - override func supportedInterfaceOrientations() -> Int { + override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return self.visibleViewController.supportedInterfaceOrientations() } diff --git a/src/Bequest/Controllers/BQSTRequestController.swift b/src/Bequest/Controllers/BQSTRequestController.swift index 4477c4b..5baa1df 100644 --- a/src/Bequest/Controllers/BQSTRequestController.swift +++ b/src/Bequest/Controllers/BQSTRequestController.swift @@ -148,19 +148,19 @@ class BQSTRequestController: UIViewController, UICollectionViewDelegate, UIColle let request: NSURLRequest = BQSTRequestManager.sharedManager.currentRequest - if count(request.URL!.absoluteString!) == 0 { + if (request.URL!.absoluteString!).characters.count == 0 { self.BQSTShowSimpleErrorAlert(BQSTLocalizedString("REQUEST_URL_MISSING"), message: BQSTLocalizedString("REQUEST_URL_MISSING_DETAIL")) return } - if request.HTTPMethod == nil || count(request.HTTPMethod!) == 0 { + if request.HTTPMethod == nil || (request.HTTPMethod!).characters.count == 0 { self.BQSTShowSimpleErrorAlert(BQSTLocalizedString("REQUEST_METHOD_MISSING"), message: BQSTLocalizedString("REQUEST_METHOD_MISSING_DETAIL")) return } - println("Sending a request of type \(request.HTTPMethod!) to URL \(request.URL!)") + print("Sending a request of type \(request.HTTPMethod!) to URL \(request.URL!)", appendNewline: false) self.progressButton.progressPercentage = 0 self.progressButton.progressState = .Loading @@ -217,7 +217,7 @@ class BQSTRequestController: UIViewController, UICollectionViewDelegate, UIColle /// MARK: UICollectionViewDelegate func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { - println("Selected index \(indexPath)") + print("Selected index \(indexPath)", appendNewline: false) } /// MARK: UICollectionViewDelegateFlowLayout diff --git a/src/Bequest/Controllers/BQSTResponseController.swift b/src/Bequest/Controllers/BQSTResponseController.swift index 92e3517..9b44022 100644 --- a/src/Bequest/Controllers/BQSTResponseController.swift +++ b/src/Bequest/Controllers/BQSTResponseController.swift @@ -166,7 +166,7 @@ class BQSTResponseController: UITableViewController { } if requestHeaders.count > 0 { - let sortedNames: [NSObject] = (requestHeaders.keys.array.sorted { + let sortedNames: [NSObject] = (requestHeaders.keys.array.sort { return ($0 as! String) < ($1 as! String) }) @@ -185,7 +185,7 @@ class BQSTResponseController: UITableViewController { // Response Headers if let responseHeaders = response?.allHeaderFields { if responseHeaders.count > 0 { - let sortedNames: [NSObject] = (responseHeaders.keys.array.sorted { + let sortedNames: [NSObject] = (responseHeaders.keys.array.sort { return ($0 as! String) < ($1 as! String) }) @@ -213,13 +213,13 @@ class BQSTResponseController: UITableViewController { case .HTML, .TXT: let str = parsedResponse?.object as? String - if str != nil && count(str!) > 0 { + if str != nil && (str!).characters.count > 0 { addBodySection() } case .JSON: let dict = parsedResponse?.object as? [NSObject:AnyObject] - if dict != nil && count(dict!) > 0 { + if dict != nil && (dict!).count > 0 { addBodySection() } default: @@ -339,7 +339,7 @@ class BQSTResponseController: UITableViewController { override func tableView(tableView: UITableView, canPerformAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, - withSender sender: AnyObject) -> Bool { + withSender sender: AnyObject?) -> Bool { switch self.responseSectionAtIndex(indexPath.section) { case .ResponseHeaders, .RequestHeaders, .Request: @@ -352,7 +352,7 @@ class BQSTResponseController: UITableViewController { override func tableView(tableView: UITableView, performAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, - withSender sender: AnyObject!) { + withSender sender: AnyObject?) { switch self.responseSectionAtIndex(indexPath.section) { case .ResponseHeaders, .RequestHeaders, .Request: diff --git a/src/Bequest/Networking/BQSTHTTPResponse.swift b/src/Bequest/Networking/BQSTHTTPResponse.swift index 69fbd15..b060557 100644 --- a/src/Bequest/Networking/BQSTHTTPResponse.swift +++ b/src/Bequest/Networking/BQSTHTTPResponse.swift @@ -20,7 +20,7 @@ public enum BQSTJSONResult { public static func resultForData(data: NSData, options: NSJSONReadingOptions = .AllowFragments) -> BQSTJSONResult { var error: NSError? - var object = NSJSONSerialization.JSONObjectWithData(data, options: options, error: &error) as? BQSTJSONResponse + var object = NSJSONSerialization.JSONObjectWithData(data, options: options) as? BQSTJSONResponse if object != nil { return .Success(object!) @@ -77,7 +77,7 @@ public struct BQSTHTTPResponse { serializedResponse.contentType = contentType - println("content-type: \(contentTypeRaw)") + print("content-type: \(contentTypeRaw)", appendNewline: false) switch contentType { case .JSON: diff --git a/src/Bequest/Supporting Files/Info.plist b/src/Bequest/Supporting Files/Info.plist index 73b7f7a..ae896e8 100644 --- a/src/Bequest/Supporting Files/Info.plist +++ b/src/Bequest/Supporting Files/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - net.splinesoft.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/src/BequestTests/BQSTKIFTests.swift b/src/BequestTests/BQSTKIFTests.swift index 808b072..ffc06e6 100644 --- a/src/BequestTests/BQSTKIFTests.swift +++ b/src/BequestTests/BQSTKIFTests.swift @@ -23,7 +23,7 @@ class BQSTKIFTests: KIFTestCase { private func setUpRequest(url: String, method: String) { tester.clearTextFromAndThenEnterText(url, intoViewWithAccessibilityLabel: "URL") - tester.tapViewWithAccessibilityLabel(count(method) > 0 ? method: "GET") + tester.tapViewWithAccessibilityLabel(method.characters.count > 0 ? method: "GET") } override func beforeAll() { diff --git a/src/BequestTests/Info.plist b/src/BequestTests/Info.plist index 2f4dcfd..ba72822 100644 --- a/src/BequestTests/Info.plist +++ b/src/BequestTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - net.splinesoft.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/src/Podfile b/src/Podfile index f8835fa..25c7eae 100644 --- a/src/Podfile +++ b/src/Podfile @@ -13,10 +13,10 @@ def import_pods pod 'TTTAttributedLabel' pod 'JTSImageViewController' pod 'CYRTextView' - pod 'SnapKit' + pod 'SnapKit', :git => 'git@github.com:SnapKit/SnapKit.git', :branch => 'swift-2.0' # Networking - pod 'Alamofire' + pod 'Alamofire', :git => 'git@github.com:Alamofire/Alamofire.git', :branch => 'swift-2.0' end target :Bequest do diff --git a/src/Podfile.lock b/src/Podfile.lock index 7f7fa17..e29e60d 100644 --- a/src/Podfile.lock +++ b/src/Podfile.lock @@ -5,35 +5,51 @@ PODS: - KIF (3.2.3): - KIF/XCTest (= 3.2.3) - KIF/XCTest (3.2.3) - - Nimble (0.4.2) + - Nimble (1.0.0) - pop (1.0.7) - - Quick (0.3.1) + - Quick (0.4.0) - SnapKit (0.12.0) - SSDataSources (0.8.5) - - TTTAttributedLabel (1.13.1) + - TTTAttributedLabel (1.13.4) DEPENDENCIES: - - Alamofire + - Alamofire (from `git@github.com:Alamofire/Alamofire.git`, branch `swift-2.0`) - CYRTextView - JTSImageViewController - KIF - Nimble - pop - Quick - - SnapKit + - SnapKit (from `git@github.com:SnapKit/SnapKit.git`, branch `swift-2.0`) - SSDataSources - TTTAttributedLabel +EXTERNAL SOURCES: + Alamofire: + :branch: swift-2.0 + :git: git@github.com:Alamofire/Alamofire.git + SnapKit: + :branch: swift-2.0 + :git: git@github.com:SnapKit/SnapKit.git + +CHECKOUT OPTIONS: + Alamofire: + :commit: fd71afb3a0af2042b9f05a6b9f29317ad4903703 + :git: git@github.com:Alamofire/Alamofire.git + SnapKit: + :commit: e9c9f6fe8e0954a50dd62a61a449b66ef84ae205 + :git: git@github.com:SnapKit/SnapKit.git + SPEC CHECKSUMS: Alamofire: 5550bf0b575ed1a4bf9be572f9463e1015cc169e CYRTextView: 1c1a4d708eee54ecad66b8ad42dbfe73083bdfce JTSImageViewController: 6a367b144e257db02cdfacdba78d684377d3777b KIF: a94bffe9c97e449e44f8fa481c53243d21309e1e - Nimble: 49b7a7da8919f42823d37c6d68cc6d15a7009f32 + Nimble: 8bee528e5fcc403653076545db562d2b5db7bb87 pop: 628ffc631644601567ee8bfaaaea493ebd7d0923 - Quick: 824572d3d198d51e52cf4aa722cebf7e59952a35 + Quick: 2286bfff349102670c6d2dafd0d2cefab42f5f0b SnapKit: 00c388aa3bf1944c1b55472f31e841f75bd83882 SSDataSources: b01170fb23b82acf0649194e9189b0bf5f702681 - TTTAttributedLabel: 0a9e524c8d78301506c26affffc827429b833b25 + TTTAttributedLabel: 0a2ac7b2dd726d32a070dafb01446026b11e624f COCOAPODS: 0.38.0.beta.2 diff --git a/src/Pods/Alamofire/README.md b/src/Pods/Alamofire/README.md index 5c287ea..d5448e2 100644 --- a/src/Pods/Alamofire/README.md +++ b/src/Pods/Alamofire/README.md @@ -21,8 +21,8 @@ Alamofire is an HTTP networking library written in Swift. ## Requirements -- iOS 7.0+ / Mac OS X 10.9+ -- Xcode 6.3 +- iOS 8.0+ / Mac OS X 10.9+ +- Xcode 7.0 ## Communication @@ -34,9 +34,9 @@ Alamofire is an HTTP networking library written in Swift. ## Installation -> **Embedded frameworks require a minimum deployment target of iOS 8 or OS X Mavericks.** +> **Embedded frameworks require a minimum deployment target of iOS 8 or OS X Mavericks (10.9).** > -> To use Alamofire with a project targeting iOS 7, you must include all Swift files located inside the `Source` directory directly in your project. See the ['Source File'](#source-file) section for additional instructions. +> Alamofire is no longer supported on iOS 7 due to the lack of support for frameworks. Without frameworks, running Travis-CI against iOS 7 would require a second duplicated test target. The separate test suite would need to import all the Swift files and the tests would need to be duplicated and re-written. This split would be too difficult to maintain to ensure the highest possible quality of the Alamofire ecosystem. ### CocoaPods @@ -55,7 +55,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! -pod 'Alamofire', '~> 1.2' +pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0' ``` Then, run the following command: @@ -78,7 +78,7 @@ $ brew install carthage To integrate Alamofire into your Xcode project using Carthage, specify it in your `Cartfile`: ```ogdl -github "Alamofire/Alamofire" >= 1.2 +github "Alamofire/Alamofire" "swift-2.0" ``` ### Manually @@ -111,11 +111,7 @@ $ git submodule add https://github.com/Alamofire/Alamofire.git - And that's it! -> The `Alamofire.framework` is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device. - -#### Source File - -For application targets that do not support embedded frameworks, such as iOS 7, Alamofire can be integrated by adding all the Swift files located inside the `Source` directory (`Source/*.swift`) directly into your project. Note that you will no longer need to `import Alamofire` since you are not actually loading a framework. Additionally, any of the calling conventions described in the ['Usage'](#usage) section with the `Alamofire` prefix would instead omit it (for example, `Alamofire.request` becomes `request`), since this functionality is incorporated into the top-level namespace. +> The `Alamofire.framework` is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.> > --- diff --git a/src/Pods/Alamofire/Source/Alamofire.swift b/src/Pods/Alamofire/Source/Alamofire.swift index 6ee1ddc..32f5f00 100644 --- a/src/Pods/Alamofire/Source/Alamofire.swift +++ b/src/Pods/Alamofire/Source/Alamofire.swift @@ -51,7 +51,7 @@ extension String: URLStringConvertible { extension NSURL: URLStringConvertible { public var URLString: String { - return absoluteString! + return absoluteString } } @@ -85,8 +85,8 @@ extension NSURLRequest: URLRequestConvertible { // MARK: - Convenience -func URLRequest(method: Method, URL: URLStringConvertible) -> NSURLRequest { - let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: URL.URLString)!) +func URLRequest(method: Method, URLString: URLStringConvertible) -> NSURLRequest { + let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: URLString.URLString)!) mutableURLRequest.HTTPMethod = method.rawValue return mutableURLRequest @@ -97,12 +97,12 @@ func URLRequest(method: Method, URL: URLStringConvertible) -> NSURLRequest { /** Creates a request using the shared manager instance for the specified method, URL string, parameters, and parameter encoding. - :param: method The HTTP method. - :param: URLString The URL string. - :param: parameters The parameters. `nil` by default. - :param: encoding The parameter encoding. `.URL` by default. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter parameters: The parameters. `nil` by default. + - parameter encoding: The parameter encoding. `.URL` by default. - :returns: The created request. + - returns: The created request. */ public func request(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL) -> Request { return Manager.sharedInstance.request(method, URLString, parameters: parameters, encoding: encoding) @@ -113,9 +113,9 @@ public func request(method: Method, URLString: URLStringConvertible, parameters: If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: URLRequest The URL request + - parameter URLRequest: The URL request - :returns: The created request. + - returns: The created request. */ public func request(URLRequest: URLRequestConvertible) -> Request { return Manager.sharedInstance.request(URLRequest.URLRequest) @@ -128,11 +128,11 @@ public func request(URLRequest: URLRequestConvertible) -> Request { /** Creates an upload request using the shared manager instance for the specified method, URL string, and file. - :param: method The HTTP method. - :param: URLString The URL string. - :param: file The file to upload. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter file: The file to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(method: Method, URLString: URLStringConvertible, file: NSURL) -> Request { return Manager.sharedInstance.upload(method, URLString, file: file) @@ -141,10 +141,10 @@ public func upload(method: Method, URLString: URLStringConvertible, file: NSURL) /** Creates an upload request using the shared manager instance for the specified URL request and file. - :param: URLRequest The URL request. - :param: file The file to upload. + - parameter URLRequest: The URL request. + - parameter file: The file to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(URLRequest: URLRequestConvertible, file: NSURL) -> Request { return Manager.sharedInstance.upload(URLRequest, file: file) @@ -155,11 +155,11 @@ public func upload(URLRequest: URLRequestConvertible, file: NSURL) -> Request { /** Creates an upload request using the shared manager instance for the specified method, URL string, and data. - :param: method The HTTP method. - :param: URLString The URL string. - :param: data The data to upload. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter data: The data to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(method: Method, URLString: URLStringConvertible, data: NSData) -> Request { return Manager.sharedInstance.upload(method, URLString, data: data) @@ -168,10 +168,10 @@ public func upload(method: Method, URLString: URLStringConvertible, data: NSData /** Creates an upload request using the shared manager instance for the specified URL request and data. - :param: URLRequest The URL request. - :param: data The data to upload. + - parameter URLRequest: The URL request. + - parameter data: The data to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(URLRequest: URLRequestConvertible, data: NSData) -> Request { return Manager.sharedInstance.upload(URLRequest, data: data) @@ -182,11 +182,11 @@ public func upload(URLRequest: URLRequestConvertible, data: NSData) -> Request { /** Creates an upload request using the shared manager instance for the specified method, URL string, and stream. - :param: method The HTTP method. - :param: URLString The URL string. - :param: stream The stream to upload. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter stream: The stream to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(method: Method, URLString: URLStringConvertible, stream: NSInputStream) -> Request { return Manager.sharedInstance.upload(method, URLString, stream: stream) @@ -195,10 +195,10 @@ public func upload(method: Method, URLString: URLStringConvertible, stream: NSIn /** Creates an upload request using the shared manager instance for the specified URL request and stream. - :param: URLRequest The URL request. - :param: stream The stream to upload. + - parameter URLRequest: The URL request. + - parameter stream: The stream to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(URLRequest: URLRequestConvertible, stream: NSInputStream) -> Request { return Manager.sharedInstance.upload(URLRequest, stream: stream) @@ -211,11 +211,11 @@ public func upload(URLRequest: URLRequestConvertible, stream: NSInputStream) -> /** Creates a download request using the shared manager instance for the specified method and URL string. - :param: method The HTTP method. - :param: URLString The URL string. - :param: destination The closure used to determine the destination of the downloaded file. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter destination: The closure used to determine the destination of the downloaded file. - :returns: The created download request. + - returns: The created download request. */ public func download(method: Method, URLString: URLStringConvertible, destination: Request.DownloadFileDestination) -> Request { return Manager.sharedInstance.download(method, URLString, destination: destination) @@ -224,10 +224,10 @@ public func download(method: Method, URLString: URLStringConvertible, destinatio /** Creates a download request using the shared manager instance for the specified URL request. - :param: URLRequest The URL request. - :param: destination The closure used to determine the destination of the downloaded file. + - parameter URLRequest: The URL request. + - parameter destination: The closure used to determine the destination of the downloaded file. - :returns: The created download request. + - returns: The created download request. */ public func download(URLRequest: URLRequestConvertible, destination: Request.DownloadFileDestination) -> Request { return Manager.sharedInstance.download(URLRequest, destination: destination) @@ -238,10 +238,10 @@ public func download(URLRequest: URLRequestConvertible, destination: Request.Dow /** Creates a request using the shared manager instance for downloading from the resume data produced from a previous request cancellation. - :param: resumeData The resume data. This is an opaque data blob produced by `NSURLSessionDownloadTask` when a task is cancelled. See `NSURLSession -downloadTaskWithResumeData:` for additional information. - :param: destination The closure used to determine the destination of the downloaded file. + - parameter resumeData: The resume data. This is an opaque data blob produced by `NSURLSessionDownloadTask` when a task is cancelled. See `NSURLSession -downloadTaskWithResumeData:` for additional information. + - parameter destination: The closure used to determine the destination of the downloaded file. - :returns: The created download request. + - returns: The created download request. */ public func download(resumeData data: NSData, destination: Request.DownloadFileDestination) -> Request { return Manager.sharedInstance.download(data, destination: destination) diff --git a/src/Pods/Alamofire/Source/Download.swift b/src/Pods/Alamofire/Source/Download.swift index 6a39d2a..b7f1798 100644 --- a/src/Pods/Alamofire/Source/Download.swift +++ b/src/Pods/Alamofire/Source/Download.swift @@ -62,14 +62,14 @@ extension Manager { /** Creates a download request using the shared manager instance for the specified method and URL string. - :param: method The HTTP method. - :param: URLString The URL string. - :param: destination The closure used to determine the destination of the downloaded file. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter destination: The closure used to determine the destination of the downloaded file. - :returns: The created download request. + - returns: The created download request. */ public func download(method: Method, _ URLString: URLStringConvertible, destination: Request.DownloadFileDestination) -> Request { - return download(URLRequest(method, URLString), destination: destination) + return download(URLRequest(method, URLString: URLString), destination: destination) } /** @@ -77,10 +77,10 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: URLRequest The URL request - :param: destination The closure used to determine the destination of the downloaded file. + - parameter URLRequest: The URL request + - parameter destination: The closure used to determine the destination of the downloaded file. - :returns: The created download request. + - returns: The created download request. */ public func download(URLRequest: URLRequestConvertible, destination: Request.DownloadFileDestination) -> Request { return download(.Request(URLRequest.URLRequest), destination: destination) @@ -93,10 +93,10 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: resumeData The resume data. This is an opaque data blob produced by `NSURLSessionDownloadTask` when a task is cancelled. See `NSURLSession -downloadTaskWithResumeData:` for additional information. - :param: destination The closure used to determine the destination of the downloaded file. + - parameter resumeData: The resume data. This is an opaque data blob produced by `NSURLSessionDownloadTask` when a task is cancelled. See `NSURLSession -downloadTaskWithResumeData:` for additional information. + - parameter destination: The closure used to determine the destination of the downloaded file. - :returns: The created download request. + - returns: The created download request. */ public func download(resumeData: NSData, destination: Request.DownloadFileDestination) -> Request { return download(.ResumeData(resumeData), destination: destination) @@ -114,16 +114,18 @@ extension Request { /** Creates a download file destination closure which uses the default file manager to move the temporary file to a file URL in the first available directory with the specified search path directory and search path domain mask. - :param: directory The search path directory. `.DocumentDirectory` by default. - :param: domain The search path domain mask. `.UserDomainMask` by default. + - parameter directory: The search path directory. `.DocumentDirectory` by default. + - parameter domain: The search path domain mask. `.UserDomainMask` by default. - :returns: A download file destination closure. + - returns: A download file destination closure. */ - public class func suggestedDownloadDestination(directory: NSSearchPathDirectory = .DocumentDirectory, domain: NSSearchPathDomainMask = .UserDomainMask) -> DownloadFileDestination { + public class func suggestedDownloadDestination(directory directory: NSSearchPathDirectory = .DocumentDirectory, domain: NSSearchPathDomainMask = .UserDomainMask) -> DownloadFileDestination { return { temporaryURL, response -> NSURL in - if let directoryURL = NSFileManager.defaultManager().URLsForDirectory(directory, inDomains: domain)[0] as? NSURL { - return directoryURL.URLByAppendingPathComponent(response.suggestedFilename!) + let directoryURLs = NSFileManager.defaultManager().URLsForDirectory(directory, inDomains: domain) + + if !directoryURLs.isEmpty { + return directoryURLs[0].URLByAppendingPathComponent(response.suggestedFilename!) } return temporaryURL @@ -151,13 +153,11 @@ extension Request { func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) { if downloadTaskDidFinishDownloadingToURL != nil { - let destination = downloadTaskDidFinishDownloadingToURL!(session, downloadTask, location) - var fileManagerError: NSError? - - NSFileManager.defaultManager().moveItemAtURL(location, toURL: destination, error: &fileManagerError) - - if fileManagerError != nil { - error = fileManagerError + do { + let destination = downloadTaskDidFinishDownloadingToURL!(session, downloadTask, location) + try NSFileManager.defaultManager().moveItemAtURL(location, toURL: destination) + } catch { + self.error = error as NSError } } } diff --git a/src/Pods/Alamofire/Source/Manager.swift b/src/Pods/Alamofire/Source/Manager.swift index 9602523..229a6e3 100644 --- a/src/Pods/Alamofire/Source/Manager.swift +++ b/src/Pods/Alamofire/Source/Manager.swift @@ -42,7 +42,7 @@ public class Manager { /** Creates default values for the "Accept-Encoding", "Accept-Language" and "User-Agent" headers. - :returns: The default header values. + - returns: The default header values. */ public static let defaultHTTPHeaders: [String: String] = { // Accept-Encoding HTTP Header; see http://tools.ietf.org/html/rfc7230#section-4.2.3 @@ -51,7 +51,7 @@ public class Manager { // Accept-Language HTTP Header; see http://tools.ietf.org/html/rfc7231#section-5.3.5 let acceptLanguage: String = { var components: [String] = [] - for (index, languageCode) in enumerate(NSLocale.preferredLanguages() as! [String]) { + for (index, languageCode) in (NSLocale.preferredLanguages() as [String]).enumerate() { let q = 1.0 - (Double(index) * 0.1) components.append("\(languageCode);q=\(q)") if q <= 0.5 { @@ -59,21 +59,21 @@ public class Manager { } } - return join(",", components) + return ",".join(components) }() // User-Agent Header; see http://tools.ietf.org/html/rfc7231#section-5.5.3 let userAgent: String = { if let info = NSBundle.mainBundle().infoDictionary { - let executable: AnyObject = info[kCFBundleExecutableKey] ?? "Unknown" - let bundle: AnyObject = info[kCFBundleIdentifierKey] ?? "Unknown" - let version: AnyObject = info[kCFBundleVersionKey] ?? "Unknown" + let executable: AnyObject = info[kCFBundleExecutableKey as String] ?? "Unknown" + let bundle: AnyObject = info[kCFBundleIdentifierKey as String] ?? "Unknown" + let version: AnyObject = info[kCFBundleVersionKey as String] ?? "Unknown" let os: AnyObject = NSProcessInfo.processInfo().operatingSystemVersionString ?? "Unknown" var mutableUserAgent = NSMutableString(string: "\(executable)/\(bundle) (\(version); OS \(os))") as CFMutableString let transform = NSString(string: "Any-Latin; Latin-ASCII; [:^ASCII:] Remove") as CFString if CFStringTransform(mutableUserAgent, nil, transform, 0) == 1 { - return mutableUserAgent as NSString as! String + return mutableUserAgent as String } } @@ -104,9 +104,9 @@ public class Manager { // MARK: - Lifecycle /** - :param: configuration The configuration used to construct the managed session. + - parameter configuration: The configuration used to construct the managed session. */ - required public init(configuration: NSURLSessionConfiguration? = nil) { + required public init(configuration: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()) { self.delegate = SessionDelegate() self.session = NSURLSession(configuration: configuration, delegate: delegate, delegateQueue: nil) @@ -126,15 +126,15 @@ public class Manager { /** Creates a request for the specified method, URL string, parameters, and parameter encoding. - :param: method The HTTP method. - :param: URLString The URL string. - :param: parameters The parameters. `nil` by default. - :param: encoding The parameter encoding. `.URL` by default. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter parameters: The parameters. `nil` by default. + - parameter encoding: The parameter encoding. `.URL` by default. - :returns: The created request. + - returns: The created request. */ public func request(method: Method, _ URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL) -> Request { - return request(encoding.encode(URLRequest(method, URLString), parameters: parameters).0) + return request(encoding.encode(URLRequest(method, URLString: URLString), parameters: parameters).0) } /** @@ -142,9 +142,9 @@ public class Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: URLRequest The URL request + - parameter URLRequest: The URL request - :returns: The created request. + - returns: The created request. */ public func request(URLRequest: URLRequestConvertible) -> Request { var dataTask: NSURLSessionDataTask? @@ -196,7 +196,7 @@ public class Manager { public var sessionDidBecomeInvalidWithError: ((NSURLSession, NSError?) -> Void)? /// NSURLSessionDelegate override closure for `URLSession:didReceiveChallenge:completionHandler:` method. - public var sessionDidReceiveChallenge: ((NSURLSession, NSURLAuthenticationChallenge) -> (NSURLSessionAuthChallengeDisposition, NSURLCredential!))? + public var sessionDidReceiveChallenge: ((NSURLSession, NSURLAuthenticationChallenge) -> (NSURLSessionAuthChallengeDisposition, NSURLCredential?))? /// NSURLSessionDelegate override closure for `URLSessionDidFinishEventsForBackgroundURLSession:` method. public var sessionDidFinishEventsForBackgroundURLSession: ((NSURLSession) -> Void)? @@ -207,7 +207,7 @@ public class Manager { sessionDidBecomeInvalidWithError?(session, error) } - public func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: ((NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void)) { + public func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: ((NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void)) { if sessionDidReceiveChallenge != nil { completionHandler(sessionDidReceiveChallenge!(session, challenge)) } else { @@ -227,7 +227,7 @@ public class Manager { public var taskWillPerformHTTPRedirection: ((NSURLSession, NSURLSessionTask, NSHTTPURLResponse, NSURLRequest) -> NSURLRequest?)? /// Overrides default behavior for NSURLSessionTaskDelegate method `URLSession:task:didReceiveChallenge:completionHandler:`. - public var taskDidReceiveChallenge: ((NSURLSession, NSURLSessionTask, NSURLAuthenticationChallenge) -> (NSURLSessionAuthChallengeDisposition, NSURLCredential!))? + public var taskDidReceiveChallenge: ((NSURLSession, NSURLSessionTask, NSURLAuthenticationChallenge) -> (NSURLSessionAuthChallengeDisposition, NSURLCredential?))? /// Overrides default behavior for NSURLSessionTaskDelegate method `URLSession:session:task:needNewBodyStream:`. public var taskNeedNewBodyStream: ((NSURLSession, NSURLSessionTask) -> NSInputStream!)? @@ -240,7 +240,7 @@ public class Manager { // MARK: Delegate Methods - public func URLSession(session: NSURLSession, task: NSURLSessionTask, willPerformHTTPRedirection response: NSHTTPURLResponse, newRequest request: NSURLRequest, completionHandler: ((NSURLRequest!) -> Void)) { + public func URLSession(session: NSURLSession, task: NSURLSessionTask, willPerformHTTPRedirection response: NSHTTPURLResponse, newRequest request: NSURLRequest, completionHandler: ((NSURLRequest?) -> Void)) { var redirectRequest: NSURLRequest? = request if taskWillPerformHTTPRedirection != nil { @@ -250,7 +250,7 @@ public class Manager { completionHandler(redirectRequest) } - public func URLSession(session: NSURLSession, task: NSURLSessionTask, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: ((NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void)) { + public func URLSession(session: NSURLSession, task: NSURLSessionTask, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: ((NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void)) { if taskDidReceiveChallenge != nil { completionHandler(taskDidReceiveChallenge!(session, task, challenge)) } else if let delegate = self[task] { @@ -260,7 +260,7 @@ public class Manager { } } - public func URLSession(session: NSURLSession, task: NSURLSessionTask, needNewBodyStream completionHandler: ((NSInputStream!) -> Void)) { + public func URLSession(session: NSURLSession, task: NSURLSessionTask, needNewBodyStream completionHandler: ((NSInputStream?) -> Void)) { if taskNeedNewBodyStream != nil { completionHandler(taskNeedNewBodyStream!(session, task)) } else if let delegate = self[task] { @@ -331,7 +331,7 @@ public class Manager { } } - public func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: ((NSCachedURLResponse!) -> Void)) { + public func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: ((NSCachedURLResponse?) -> Void)) { if dataTaskWillCacheResponse != nil { completionHandler(dataTaskWillCacheResponse!(session, dataTask, proposedResponse)) } else if let delegate = self[dataTask] as? Request.DataTaskDelegate { diff --git a/src/Pods/Alamofire/Source/ParameterEncoding.swift b/src/Pods/Alamofire/Source/ParameterEncoding.swift index 4130903..08be8c0 100644 --- a/src/Pods/Alamofire/Source/ParameterEncoding.swift +++ b/src/Pods/Alamofire/Source/ParameterEncoding.swift @@ -68,10 +68,10 @@ public enum ParameterEncoding { /** Creates a URL request by encoding parameters and applying them onto an existing request. - :param: URLRequest The request to have parameters applied - :param: parameters The parameters to apply + - parameter URLRequest: The request to have parameters applied + - parameter parameters: The parameters to apply - :returns: A tuple containing the constructed request and the error that occurred during parameter encoding, if any. + - returns: A tuple containing the constructed request and the error that occurred during parameter encoding, if any. */ public func encode(URLRequest: URLRequestConvertible, parameters: [String: AnyObject]?) -> (NSURLRequest, NSError?) { if parameters == nil { @@ -79,18 +79,18 @@ public enum ParameterEncoding { } var mutableURLRequest: NSMutableURLRequest! = URLRequest.URLRequest.mutableCopy() as! NSMutableURLRequest - var error: NSError? = nil + var encodingError: NSError? = nil switch self { case .URL: func query(parameters: [String: AnyObject]) -> String { var components: [(String, String)] = [] - for key in sorted(Array(parameters.keys), <) { + for key in Array(parameters.keys).sort(<) { let value: AnyObject! = parameters[key] components += self.queryComponents(key, value) } - return join("&", components.map{"\($0)=\($1)"} as [String]) + return "&".join(components.map{"\($0)=\($1)"} as [String]) } func encodesParametersInURL(method: Method) -> Bool { @@ -116,21 +116,27 @@ public enum ParameterEncoding { mutableURLRequest.HTTPBody = query(parameters!).dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) } case .JSON: - let options = NSJSONWritingOptions.allZeros - if let data = NSJSONSerialization.dataWithJSONObject(parameters!, options: options, error: &error) { + do { + let options = NSJSONWritingOptions() + let data = try NSJSONSerialization.dataWithJSONObject(parameters!, options: options) mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") mutableURLRequest.HTTPBody = data + } catch { + encodingError = error as NSError } case .PropertyList(let (format, options)): - if let data = NSPropertyListSerialization.dataWithPropertyList(parameters!, format: format, options: options, error: &error) { + do { + let data = try NSPropertyListSerialization.dataWithPropertyList(parameters!, format: format, options: options) mutableURLRequest.setValue("application/x-plist", forHTTPHeaderField: "Content-Type") mutableURLRequest.HTTPBody = data + } catch { + encodingError = error as NSError } case .Custom(let closure): return closure(mutableURLRequest, parameters) } - return (mutableURLRequest, error) + return (mutableURLRequest, encodingError) } func queryComponents(key: String, _ value: AnyObject) -> [(String, String)] { @@ -178,9 +184,9 @@ public enum ParameterEncoding { query strings to include a URL. Therefore, all "reserved" characters with the exception of "?" and "/" should be percent escaped in the query string. - :param: string The string to be percent escaped. + - parameter string: The string to be percent escaped. - :returns: The percent escaped string. + - returns: The percent escaped string. */ func escape(string: String) -> String { let generalDelimiters = ":#[]@" // does not include "?" or "/" due to RFC 3986 - Section 3.4 diff --git a/src/Pods/Alamofire/Source/Request.swift b/src/Pods/Alamofire/Source/Request.swift index 0e2183a..36a2776 100644 --- a/src/Pods/Alamofire/Source/Request.swift +++ b/src/Pods/Alamofire/Source/Request.swift @@ -38,7 +38,7 @@ public class Request { public let session: NSURLSession /// The request sent or to be sent to the server. - public var request: NSURLRequest { return task.originalRequest } + public var request: NSURLRequest? { return task.originalRequest } /// The response received from the server, if any. public var response: NSHTTPURLResponse? { return task.response as? NSHTTPURLResponse } @@ -68,12 +68,12 @@ public class Request { /** Associates an HTTP Basic credential with the request. - :param: user The user. - :param: password The password. + - parameter user: The user. + - parameter password: The password. - :returns: The request. + - returns: The request. */ - public func authenticate(#user: String, password: String) -> Self { + public func authenticate(user user: String, password: String) -> Self { let credential = NSURLCredential(user: user, password: password, persistence: .ForSession) return authenticate(usingCredential: credential) @@ -82,9 +82,9 @@ public class Request { /** Associates a specified credential with the request. - :param: credential The credential. + - parameter credential: The credential. - :returns: The request. + - returns: The request. */ public func authenticate(usingCredential credential: NSURLCredential) -> Self { delegate.credential = credential @@ -100,9 +100,9 @@ public class Request { - For uploads, the progress closure returns the bytes written, total bytes written, and total bytes expected to write. - For downloads and data tasks, the progress closure returns the bytes read, total bytes read, and total bytes expected to read. - :param: closure The code to be executed periodically during the lifecycle of the request. + - parameter closure: The code to be executed periodically during the lifecycle of the request. - :returns: The request. + - returns: The request. */ public func progress(closure: ((Int64, Int64, Int64) -> Void)? = nil) -> Self { if let uploadDelegate = delegate as? UploadTaskDelegate { @@ -116,17 +116,34 @@ public class Request { return self } + /** + Sets a closure to be called periodically during the lifecycle of the request as data is read from the server. + + This closure returns the bytes most recently received from the server, not including data from previous calls. If this closure is set, data will only be available within this closure, and will not be saved elsewhere. It is also important to note that the `response` closure will be called with nil `responseData`. + + :param: closure The code to be executed periodically during the lifecycle of the request. + + :returns: The request. + */ + public func stream(closure: (NSData -> Void)? = nil) -> Self { + if let dataDelegate = delegate as? DataTaskDelegate { + dataDelegate.dataStream = closure + } + + return self + } + // MARK: - Response /** A closure used by response handlers that takes a request, response, and data and returns a serialized object and any error that occured in the process. */ - public typealias Serializer = (NSURLRequest, NSHTTPURLResponse?, NSData?) -> (AnyObject?, NSError?) + public typealias Serializer = (NSURLRequest?, NSHTTPURLResponse?, NSData?) -> (AnyObject?, NSError?) /** Creates a response serializer that returns the associated data as-is. - :returns: A data response serializer. + - returns: A data response serializer. */ public class func responseDataSerializer() -> Serializer { return { request, response, data in @@ -137,26 +154,26 @@ public class Request { /** Adds a handler to be called once the request has finished. - :param: completionHandler The code to be executed once the request has finished. + - parameter completionHandler: The code to be executed once the request has finished. - :returns: The request. + - returns: The request. */ - public func response(completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { + public func response(completionHandler completionHandler: (NSURLRequest?, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { return response(serializer: Request.responseDataSerializer(), completionHandler: completionHandler) } /** Adds a handler to be called once the request has finished. - :param: queue The queue on which the completion handler is dispatched. - :param: serializer The closure responsible for serializing the request, response, and data. - :param: completionHandler The code to be executed once the request has finished. + - parameter queue: The queue on which the completion handler is dispatched. + - parameter serializer: The closure responsible for serializing the request, response, and data. + - parameter completionHandler: The code to be executed once the request has finished. - :returns: The request. + - returns: The request. */ - public func response(queue: dispatch_queue_t? = nil, serializer: Serializer, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { + public func response(queue queue: dispatch_queue_t? = nil, serializer: Serializer, completionHandler: (NSURLRequest?, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { delegate.queue.addOperationWithBlock { - let (responseObject: AnyObject?, serializationError: NSError?) = serializer(self.request, self.response, self.delegate.data) + let (responseObject, serializationError): (AnyObject?, NSError?) = serializer(self.request, self.response, self.delegate.data) dispatch_async(queue ?? dispatch_get_main_queue()) { completionHandler(self.request, self.response, responseObject, self.delegate.error ?? serializationError) @@ -217,7 +234,7 @@ public class Request { operationQueue.maxConcurrentOperationCount = 1 operationQueue.suspended = true - if operationQueue.respondsToSelector("qualityOfService") { + if #available(OSX 10.10, *) { operationQueue.qualityOfService = NSQualityOfService.Utility } @@ -241,7 +258,7 @@ public class Request { // MARK: Delegate Methods - func URLSession(session: NSURLSession, task: NSURLSessionTask, willPerformHTTPRedirection response: NSHTTPURLResponse, newRequest request: NSURLRequest, completionHandler: ((NSURLRequest!) -> Void)) { + func URLSession(session: NSURLSession, task: NSURLSessionTask, willPerformHTTPRedirection response: NSHTTPURLResponse, newRequest request: NSURLRequest, completionHandler: ((NSURLRequest?) -> Void)) { var redirectRequest: NSURLRequest? = request if taskWillPerformHTTPRedirection != nil { @@ -251,7 +268,7 @@ public class Request { completionHandler(redirectRequest) } - func URLSession(session: NSURLSession, task: NSURLSessionTask, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: ((NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void)) { + func URLSession(session: NSURLSession, task: NSURLSessionTask, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: ((NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void)) { var disposition: NSURLSessionAuthChallengeDisposition = .PerformDefaultHandling var credential: NSURLCredential? @@ -272,7 +289,7 @@ public class Request { completionHandler(disposition, credential) } - func URLSession(session: NSURLSession, task: NSURLSessionTask, needNewBodyStream completionHandler: ((NSInputStream!) -> Void)) { + func URLSession(session: NSURLSession, task: NSURLSessionTask, needNewBodyStream completionHandler: ((NSInputStream?) -> Void)) { var bodyStream: NSInputStream? if taskNeedNewBodyStream != nil { @@ -300,15 +317,19 @@ public class Request { class DataTaskDelegate: TaskDelegate, NSURLSessionDataDelegate { var dataTask: NSURLSessionDataTask? { return task as? NSURLSessionDataTask } + private var totalBytesReceived: Int64 = 0 private var mutableData: NSMutableData override var data: NSData? { - return mutableData + if dataStream != nil { + return nil + } else { + return mutableData + } } private var expectedContentLength: Int64? - - - var dataProgress: ((bytesReceived: Int64, totalBytesReceived: Int64, totalBytesExpectedToReceive: Int64) -> Void)? + private var dataProgress: ((bytesReceived: Int64, totalBytesReceived: Int64, totalBytesExpectedToReceive: Int64) -> Void)? + private var dataStream: ((data: NSData) -> Void)? override init(task: NSURLSessionTask) { self.mutableData = NSMutableData() @@ -346,9 +367,13 @@ public class Request { if dataTaskDidReceiveData != nil { dataTaskDidReceiveData!(session, dataTask, data) } else { - mutableData.appendData(data) + if let dataStream = dataStream { + dataStream(data: data) + } else { + mutableData.appendData(data) + } - let totalBytesReceived = Int64(mutableData.length) + totalBytesReceived += data.length let totalBytesExpectedToReceive = dataTask.response?.expectedContentLength ?? NSURLSessionTransferSizeUnknown progress.totalUnitCount = totalBytesExpectedToReceive @@ -358,7 +383,7 @@ public class Request { } } - func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: ((NSCachedURLResponse!) -> Void)) { + func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: ((NSCachedURLResponse?) -> Void)) { var cachedResponse: NSCachedURLResponse? = proposedResponse if dataTaskWillCacheResponse != nil { @@ -370,31 +395,40 @@ public class Request { } } -// MARK: - Printable +// MARK: - CustomStringConvertible -extension Request: Printable { +extension Request: CustomStringConvertible { /// The textual representation used when written to an output stream, which includes the HTTP method and URL, as well as the response status code if a response has been received. public var description: String { var components: [String] = [] - if request.HTTPMethod != nil { - components.append(request.HTTPMethod!) - } - components.append(request.URL!.absoluteString!) + if let request = self.request { + if let HTTPMethod = request.HTTPMethod { + components.append(HTTPMethod) + } - if response != nil { - components.append("(\(response!.statusCode))") + if let URLString = request.URL?.absoluteString { + components.append(URLString) + } } - return join(" ", components) + if let response = self.response { + components.append("(\(response.statusCode))") + } + + return " ".join(components) } } -// MARK: - DebugPrintable +// MARK: - CustomDebugStringConvertible -extension Request: DebugPrintable { +extension Request: CustomDebugStringConvertible { func cURLRepresentation() -> String { - var components: [String] = ["$ curl -i"] + var components = ["$ curl -i"] + + guard let request = self.request else { + return "$ curl command could not be created" + } let URL = request.URL @@ -403,9 +437,9 @@ extension Request: DebugPrintable { } if let credentialStorage = self.session.configuration.URLCredentialStorage { - let protectionSpace = NSURLProtectionSpace(host: URL!.host!, port: URL!.port?.integerValue ?? 0, `protocol`: URL!.scheme!, realm: URL!.host!, authenticationMethod: NSURLAuthenticationMethodHTTPBasic) + let protectionSpace = NSURLProtectionSpace(host: URL!.host!, port: URL!.port?.integerValue ?? 0, `protocol`: URL!.scheme, realm: URL!.host!, authenticationMethod: NSURLAuthenticationMethodHTTPBasic) if let credentials = credentialStorage.credentialsForProtectionSpace(protectionSpace)?.values.array { - for credential: NSURLCredential in (credentials as! [NSURLCredential]) { + for credential in credentials { components.append("-u \(credential.user!):\(credential.password!)") } } else { @@ -420,7 +454,7 @@ extension Request: DebugPrintable { #if !os(OSX) if session.configuration.HTTPShouldSetCookies { if let cookieStorage = session.configuration.HTTPCookieStorage, - cookies = cookieStorage.cookiesForURL(URL!) as? [NSHTTPCookie] + cookies = cookieStorage.cookiesForURL(URL!) where !cookies.isEmpty { let string = cookies.reduce(""){ $0 + "\($1.name)=\($1.value ?? String());" } @@ -457,9 +491,9 @@ extension Request: DebugPrintable { components.append("-d \"\(escapedBody)\"") } - components.append("\"\(URL!.absoluteString!)\"") + components.append("\"\(URL!.absoluteString)\"") - return join(" \\\n\t", components) + return " \\\n\t".join(components) } /// The textual representation used when written to an output stream, in the form of a cURL command. diff --git a/src/Pods/Alamofire/Source/ResponseSerialization.swift b/src/Pods/Alamofire/Source/ResponseSerialization.swift index 3766dfa..164e94b 100644 --- a/src/Pods/Alamofire/Source/ResponseSerialization.swift +++ b/src/Pods/Alamofire/Source/ResponseSerialization.swift @@ -28,11 +28,11 @@ extension Request { /** Creates a response serializer that returns a string initialized from the response data with the specified string encoding. - :param: encoding The string encoding. If `nil`, the string encoding will be determined from the server response, falling back to the default HTTP default character set, ISO-8859-1. + - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the server response, falling back to the default HTTP default character set, ISO-8859-1. - :returns: A string response serializer. + - returns: A string response serializer. */ - public class func stringResponseSerializer(var encoding: NSStringEncoding? = nil) -> Serializer { + public class func stringResponseSerializer(var encoding encoding: NSStringEncoding? = nil) -> Serializer { return { _, response, data in if data == nil || data?.length == 0 { return (nil, nil) @@ -53,12 +53,12 @@ extension Request { /** Adds a handler to be called once the request has finished. - :param: encoding The string encoding. If `nil`, the string encoding will be determined from the server response, falling back to the default HTTP default character set, ISO-8859-1. - :param: completionHandler A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the string, if one could be created from the URL response and data, and any error produced while creating the string. + - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the server response, falling back to the default HTTP default character set, ISO-8859-1. + - parameter completionHandler: A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the string, if one could be created from the URL response and data, and any error produced while creating the string. - :returns: The request. + - returns: The request. */ - public func responseString(encoding: NSStringEncoding? = nil, completionHandler: (NSURLRequest, NSHTTPURLResponse?, String?, NSError?) -> Void) -> Self { + public func responseString(encoding encoding: NSStringEncoding? = nil, completionHandler: (NSURLRequest?, NSHTTPURLResponse?, String?, NSError?) -> Void) -> Self { return response(serializer: Request.stringResponseSerializer(encoding: encoding), completionHandler: { request, response, string, error in completionHandler(request, response, string as? String, error) }) @@ -71,18 +71,24 @@ extension Request { /** Creates a response serializer that returns a JSON object constructed from the response data using `NSJSONSerialization` with the specified reading options. - :param: options The JSON serialization reading options. `.AllowFragments` by default. + - parameter options: The JSON serialization reading options. `.AllowFragments` by default. - :returns: A JSON object response serializer. + - returns: A JSON object response serializer. */ - public class func JSONResponseSerializer(options: NSJSONReadingOptions = .AllowFragments) -> Serializer { + public class func JSONResponseSerializer(options options: NSJSONReadingOptions = .AllowFragments) -> Serializer { return { request, response, data in if data == nil || data?.length == 0 { return (nil, nil) } + var JSON: AnyObject? var serializationError: NSError? - let JSON: AnyObject? = NSJSONSerialization.JSONObjectWithData(data!, options: options, error: &serializationError) + + do { + JSON = try NSJSONSerialization.JSONObjectWithData(data!, options: options) + } catch { + serializationError = error as NSError + } return (JSON, serializationError) } @@ -91,12 +97,12 @@ extension Request { /** Adds a handler to be called once the request has finished. - :param: options The JSON serialization reading options. `.AllowFragments` by default. - :param: completionHandler A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the JSON object, if one could be created from the URL response and data, and any error produced while creating the JSON object. + - parameter options: The JSON serialization reading options. `.AllowFragments` by default. + - parameter completionHandler: A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the JSON object, if one could be created from the URL response and data, and any error produced while creating the JSON object. - :returns: The request. + - returns: The request. */ - public func responseJSON(options: NSJSONReadingOptions = .AllowFragments, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { + public func responseJSON(options options: NSJSONReadingOptions = .AllowFragments, completionHandler: (NSURLRequest?, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { return response(serializer: Request.JSONResponseSerializer(options: options), completionHandler: { request, response, JSON, error in completionHandler(request, response, JSON, error) }) @@ -109,18 +115,24 @@ extension Request { /** Creates a response serializer that returns an object constructed from the response data using `NSPropertyListSerialization` with the specified reading options. - :param: options The property list reading options. `0` by default. + - parameter options: The property list reading options. `0` by default. - :returns: A property list object response serializer. + - returns: A property list object response serializer. */ - public class func propertyListResponseSerializer(options: NSPropertyListReadOptions = 0) -> Serializer { + public class func propertyListResponseSerializer(options options: NSPropertyListReadOptions = NSPropertyListReadOptions(rawValue: 0)) -> Serializer { return { request, response, data in if data == nil || data?.length == 0 { return (nil, nil) } + var plist: AnyObject? var propertyListSerializationError: NSError? - let plist: AnyObject? = NSPropertyListSerialization.propertyListWithData(data!, options: options, format: nil, error: &propertyListSerializationError) + + do { + plist = try NSPropertyListSerialization.propertyListWithData(data!, options: options, format: nil) + } catch { + propertyListSerializationError = error as NSError + } return (plist, propertyListSerializationError) } @@ -129,12 +141,12 @@ extension Request { /** Adds a handler to be called once the request has finished. - :param: options The property list reading options. `0` by default. - :param: completionHandler A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the property list, if one could be created from the URL response and data, and any error produced while creating the property list. + - parameter options: The property list reading options. `0` by default. + - parameter completionHandler: A closure to be executed once the request has finished. The closure takes 4 arguments: the URL request, the URL response, if one was received, the property list, if one could be created from the URL response and data, and any error produced while creating the property list. - :returns: The request. + - returns: The request. */ - public func responsePropertyList(options: NSPropertyListReadOptions = 0, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { + public func responsePropertyList(options options: NSPropertyListReadOptions = NSPropertyListReadOptions(rawValue: 0), completionHandler: (NSURLRequest?, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self { return response(serializer: Request.propertyListResponseSerializer(options: options), completionHandler: { request, response, plist, error in completionHandler(request, response, plist, error) }) diff --git a/src/Pods/Alamofire/Source/Upload.swift b/src/Pods/Alamofire/Source/Upload.swift index 4d4bf73..a05c8d7 100644 --- a/src/Pods/Alamofire/Source/Upload.swift +++ b/src/Pods/Alamofire/Source/Upload.swift @@ -42,7 +42,7 @@ extension Manager { dispatch_sync(queue) { uploadTask = self.session.uploadTaskWithRequest(request, fromFile: fileURL) } - case .Stream(let request, var stream): + case .Stream(let request, let stream): dispatch_sync(queue) { uploadTask = self.session.uploadTaskWithStreamedRequest(request) } @@ -71,10 +71,10 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: URLRequest The URL request - :param: file The file to upload + - parameter URLRequest: The URL request + - parameter file: The file to upload - :returns: The created upload request. + - returns: The created upload request. */ public func upload(URLRequest: URLRequestConvertible, file: NSURL) -> Request { return upload(.File(URLRequest.URLRequest, file)) @@ -85,14 +85,14 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: method The HTTP method. - :param: URLString The URL string. - :param: file The file to upload + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter file: The file to upload - :returns: The created upload request. + - returns: The created upload request. */ public func upload(method: Method, _ URLString: URLStringConvertible, file: NSURL) -> Request { - return upload(URLRequest(method, URLString), file: file) + return upload(URLRequest(method, URLString: URLString), file: file) } // MARK: Data @@ -102,10 +102,10 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: URLRequest The URL request - :param: data The data to upload + - parameter URLRequest: The URL request + - parameter data: The data to upload - :returns: The created upload request. + - returns: The created upload request. */ public func upload(URLRequest: URLRequestConvertible, data: NSData) -> Request { return upload(.Data(URLRequest.URLRequest, data)) @@ -116,14 +116,14 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: method The HTTP method. - :param: URLString The URL string. - :param: data The data to upload + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter data: The data to upload - :returns: The created upload request. + - returns: The created upload request. */ public func upload(method: Method, _ URLString: URLStringConvertible, data: NSData) -> Request { - return upload(URLRequest(method, URLString), data: data) + return upload(URLRequest(method, URLString: URLString), data: data) } // MARK: Stream @@ -133,10 +133,10 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: URLRequest The URL request - :param: stream The stream to upload + - parameter URLRequest: The URL request + - parameter stream: The stream to upload - :returns: The created upload request. + - returns: The created upload request. */ public func upload(URLRequest: URLRequestConvertible, stream: NSInputStream) -> Request { return upload(.Stream(URLRequest.URLRequest, stream)) @@ -147,14 +147,14 @@ extension Manager { If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. - :param: method The HTTP method. - :param: URLString The URL string. - :param: stream The stream to upload. + - parameter method: The HTTP method. + - parameter URLString: The URL string. + - parameter stream: The stream to upload. - :returns: The created upload request. + - returns: The created upload request. */ public func upload(method: Method, _ URLString: URLStringConvertible, stream: NSInputStream) -> Request { - return upload(URLRequest(method, URLString), stream: stream) + return upload(URLRequest(method, URLString: URLString), stream: stream) } } diff --git a/src/Pods/Alamofire/Source/Validation.swift b/src/Pods/Alamofire/Source/Validation.swift index e03c5c6..c99b0bc 100644 --- a/src/Pods/Alamofire/Source/Validation.swift +++ b/src/Pods/Alamofire/Source/Validation.swift @@ -27,16 +27,16 @@ extension Request { /** A closure used to validate a request that takes a URL request and URL response, and returns whether the request was valid. */ - public typealias Validation = (NSURLRequest, NSHTTPURLResponse) -> Bool + public typealias Validation = (NSURLRequest?, NSHTTPURLResponse) -> Bool /** Validates the request, using the specified closure. If validation fails, subsequent calls to response handlers will have an associated error. - :param: validation A closure to validate the request. + - parameter validation: A closure to validate the request. - :returns: The request. + - returns: The request. */ public func validate(validation: Validation) -> Self { delegate.queue.addOperationWithBlock { @@ -57,13 +57,13 @@ extension Request { If validation fails, subsequent calls to response handlers will have an associated error. - :param: range The range of acceptable status codes. + - parameter range: The range of acceptable status codes. - :returns: The request. + - returns: The request. */ public func validate(statusCode acceptableStatusCode: S) -> Self { return validate { _, response in - return contains(acceptableStatusCode, response.statusCode) + return acceptableStatusCode.contains(response.statusCode) } } @@ -101,9 +101,9 @@ extension Request { If validation fails, subsequent calls to response handlers will have an associated error. - :param: contentType The acceptable content types, which may specify wildcard types and/or subtypes. + - parameter contentType: The acceptable content types, which may specify wildcard types and/or subtypes. - :returns: The request. + - returns: The request. */ public func validate(contentType acceptableContentTypes: S) -> Self { return validate { _, response in @@ -130,12 +130,12 @@ extension Request { If validation fails, subsequent calls to response handlers will have an associated error. - :returns: The request. + - returns: The request. */ public func validate() -> Self { let acceptableStatusCodes: Range = 200..<300 let acceptableContentTypes: [String] = { - if let accept = self.request.valueForHTTPHeaderField("Accept") { + if let accept = self.request?.valueForHTTPHeaderField("Accept") { return accept.componentsSeparatedByString(",") } diff --git a/src/Pods/Local Podspecs/Alamofire.podspec.json b/src/Pods/Local Podspecs/Alamofire.podspec.json new file mode 100644 index 0000000..e0f22b7 --- /dev/null +++ b/src/Pods/Local Podspecs/Alamofire.podspec.json @@ -0,0 +1,21 @@ +{ + "name": "Alamofire", + "version": "1.2.3", + "license": "MIT", + "summary": "Elegant HTTP Networking in Swift", + "homepage": "https://github.com/Alamofire/Alamofire", + "social_media_url": "http://twitter.com/mattt", + "authors": { + "Mattt Thompson": "m@mattt.me" + }, + "source": { + "git": "https://github.com/Alamofire/Alamofire.git", + "tag": "1.2.3" + }, + "platforms": { + "ios": "8.0", + "osx": "10.9" + }, + "source_files": "Source/*.swift", + "requires_arc": true +} diff --git a/src/Pods/Local Podspecs/SnapKit.podspec.json b/src/Pods/Local Podspecs/SnapKit.podspec.json new file mode 100644 index 0000000..73675f3 --- /dev/null +++ b/src/Pods/Local Podspecs/SnapKit.podspec.json @@ -0,0 +1,21 @@ +{ + "name": "SnapKit", + "version": "0.12.0", + "license": "MIT", + "summary": "Harness the power of auto layout with a simplified, chainable, and compile time safe syntax.", + "homepage": "https://github.com/SnapKit/SnapKit", + "authors": { + "Robert Payne": "robertpayne@me.com" + }, + "social_media_url": "http://twitter.com/robertjpayne", + "source": { + "git": "https://github.com/SnapKit/SnapKit.git", + "tag": "0.12.0" + }, + "platforms": { + "ios": "8.0", + "osx": "10.9" + }, + "source_files": "Source/*.swift", + "requires_arc": true +} diff --git a/src/Pods/Manifest.lock b/src/Pods/Manifest.lock index 7f7fa17..e29e60d 100644 --- a/src/Pods/Manifest.lock +++ b/src/Pods/Manifest.lock @@ -5,35 +5,51 @@ PODS: - KIF (3.2.3): - KIF/XCTest (= 3.2.3) - KIF/XCTest (3.2.3) - - Nimble (0.4.2) + - Nimble (1.0.0) - pop (1.0.7) - - Quick (0.3.1) + - Quick (0.4.0) - SnapKit (0.12.0) - SSDataSources (0.8.5) - - TTTAttributedLabel (1.13.1) + - TTTAttributedLabel (1.13.4) DEPENDENCIES: - - Alamofire + - Alamofire (from `git@github.com:Alamofire/Alamofire.git`, branch `swift-2.0`) - CYRTextView - JTSImageViewController - KIF - Nimble - pop - Quick - - SnapKit + - SnapKit (from `git@github.com:SnapKit/SnapKit.git`, branch `swift-2.0`) - SSDataSources - TTTAttributedLabel +EXTERNAL SOURCES: + Alamofire: + :branch: swift-2.0 + :git: git@github.com:Alamofire/Alamofire.git + SnapKit: + :branch: swift-2.0 + :git: git@github.com:SnapKit/SnapKit.git + +CHECKOUT OPTIONS: + Alamofire: + :commit: fd71afb3a0af2042b9f05a6b9f29317ad4903703 + :git: git@github.com:Alamofire/Alamofire.git + SnapKit: + :commit: e9c9f6fe8e0954a50dd62a61a449b66ef84ae205 + :git: git@github.com:SnapKit/SnapKit.git + SPEC CHECKSUMS: Alamofire: 5550bf0b575ed1a4bf9be572f9463e1015cc169e CYRTextView: 1c1a4d708eee54ecad66b8ad42dbfe73083bdfce JTSImageViewController: 6a367b144e257db02cdfacdba78d684377d3777b KIF: a94bffe9c97e449e44f8fa481c53243d21309e1e - Nimble: 49b7a7da8919f42823d37c6d68cc6d15a7009f32 + Nimble: 8bee528e5fcc403653076545db562d2b5db7bb87 pop: 628ffc631644601567ee8bfaaaea493ebd7d0923 - Quick: 824572d3d198d51e52cf4aa722cebf7e59952a35 + Quick: 2286bfff349102670c6d2dafd0d2cefab42f5f0b SnapKit: 00c388aa3bf1944c1b55472f31e841f75bd83882 SSDataSources: b01170fb23b82acf0649194e9189b0bf5f702681 - TTTAttributedLabel: 0a9e524c8d78301506c26affffc827429b833b25 + TTTAttributedLabel: 0a2ac7b2dd726d32a070dafb01446026b11e624f COCOAPODS: 0.38.0.beta.2 diff --git a/src/Pods/Nimble/Nimble/Adapters/AdapterProtocols.swift b/src/Pods/Nimble/Nimble/Adapters/AdapterProtocols.swift index 6fdea6e..ea7fba0 100644 --- a/src/Pods/Nimble/Nimble/Adapters/AdapterProtocols.swift +++ b/src/Pods/Nimble/Nimble/Adapters/AdapterProtocols.swift @@ -2,7 +2,7 @@ import Foundation /// Protocol for the assertion handler that Nimble uses for all expectations. public protocol AssertionHandler { - func assert(assertion: Bool, message: String, location: SourceLocation) + func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) } /// Global backing interface for assertions that Nimble creates. diff --git a/src/Pods/Nimble/Nimble/Adapters/AssertionDispatcher.swift b/src/Pods/Nimble/Nimble/Adapters/AssertionDispatcher.swift new file mode 100644 index 0000000..09caf2a --- /dev/null +++ b/src/Pods/Nimble/Nimble/Adapters/AssertionDispatcher.swift @@ -0,0 +1,20 @@ + +/// AssertionDispatcher allows multiple AssertionHandlers to receive +/// assertion messages. +/// +/// @warning Does not fully dispatch if one of the handlers raises an exception. +/// This is possible with XCTest-based assertion handlers. +/// +public class AssertionDispatcher: AssertionHandler { + let handlers: [AssertionHandler] + + public init(handlers: [AssertionHandler]) { + self.handlers = handlers + } + + public func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) { + for handler in handlers { + handler.assert(assertion, message: message, location: location) + } + } +} diff --git a/src/Pods/Nimble/Nimble/Adapters/AssertionRecorder.swift b/src/Pods/Nimble/Nimble/Adapters/AssertionRecorder.swift index 3e7dcbe..3a219e2 100644 --- a/src/Pods/Nimble/Nimble/Adapters/AssertionRecorder.swift +++ b/src/Pods/Nimble/Nimble/Adapters/AssertionRecorder.swift @@ -5,13 +5,17 @@ import Foundation /// /// @see AssertionRecorder /// @see AssertionHandler -public struct AssertionRecord { +public struct AssertionRecord: Printable { /// Whether the assertion succeeded or failed public let success: Bool /// The failure message the assertion would display on failure. - public let message: String + public let message: FailureMessage /// The source location the expectation occurred on. public let location: SourceLocation + + public var description: String { + return "AssertionRecord { success=\(success), message='\(message.stringValue)', location=\(location) }" + } } /// An AssertionHandler that silently records assertions that Nimble makes. @@ -24,7 +28,7 @@ public class AssertionRecorder : AssertionHandler { public init() {} - public func assert(assertion: Bool, message: String, location: SourceLocation) { + public func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) { assertions.append( AssertionRecord( success: assertion, @@ -49,3 +53,47 @@ public func withAssertionHandler(tempAssertionHandler: AssertionHandler, closure closure() } } + +/// Captures expectations that occur in the given closure. Note that all +/// expectations will still go through to the default Nimble handler. +/// +/// This can be useful if you want to gather information about expectations +/// that occur within a closure. +/// +/// @param silently expectations are no longer send to the default Nimble +/// assertion handler when this is true. Defaults to false. +/// +/// @see gatherFailingExpectations +public func gatherExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord] { + let previousRecorder = NimbleAssertionHandler + var recorder = AssertionRecorder() + let handlers: [AssertionHandler] + + if silently { + handlers = [recorder] + } else { + handlers = [recorder, previousRecorder] + } + + var dispatcher = AssertionDispatcher(handlers: handlers) + withAssertionHandler(dispatcher, closure) + return recorder.assertions +} + +/// Captures failed expectations that occur in the given closure. Note that all +/// expectations will still go through to the default Nimble handler. +/// +/// This can be useful if you want to gather information about failed +/// expectations that occur within a closure. +/// +/// @param silently expectations are no longer send to the default Nimble +/// assertion handler when this is true. Defaults to false. +/// +/// @see gatherExpectations +/// @see raiseException source for an example use case. +public func gatherFailingExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord] { + let assertions = gatherExpectations(silently: silently, closure) + return filter(assertions) { assertion in + !assertion.success + } +} \ No newline at end of file diff --git a/src/Pods/Nimble/Nimble/Adapters/NimbleXCTestHandler.swift b/src/Pods/Nimble/Nimble/Adapters/NimbleXCTestHandler.swift index 76f8ee1..333f742 100644 --- a/src/Pods/Nimble/Nimble/Adapters/NimbleXCTestHandler.swift +++ b/src/Pods/Nimble/Nimble/Adapters/NimbleXCTestHandler.swift @@ -4,9 +4,25 @@ import XCTest /// Default handler for Nimble. This assertion handler passes failures along to /// XCTest. public class NimbleXCTestHandler : AssertionHandler { - public func assert(assertion: Bool, message: String, location: SourceLocation) { + public func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) { if !assertion { - XCTFail(message, file: location.file, line: location.line) + XCTFail("\(message.stringValue)\n", file: location.file, line: location.line) + } + } +} + +/// Alternative handler for Nimble. This assertion handler passes failures along +/// to XCTest by attempting to reduce the failure message size. +public class NimbleShortXCTestHandler: AssertionHandler { + public func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) { + if !assertion { + let msg: String + if let actual = message.actualValue { + msg = "got: \(actual) \(message.postfixActual)" + } else { + msg = "expected \(message.to) \(message.postfixMessage)" + } + XCTFail("\(msg)\n", file: location.file, line: location.line) } } } diff --git a/src/Pods/Nimble/Nimble/DSL+Wait.swift b/src/Pods/Nimble/Nimble/DSL+Wait.swift index b939482..40e1a9c 100644 --- a/src/Pods/Nimble/Nimble/DSL+Wait.swift +++ b/src/Pods/Nimble/Nimble/DSL+Wait.swift @@ -3,8 +3,8 @@ import Foundation /// Only classes, protocols, methods, properties, and subscript declarations can be /// bridges to Objective-C via the @objc keyword. This class encapsulates callback-style /// asynchronous waiting logic so that it may be called from Objective-C and Swift. -@objc public class NMBWait { - public class func until(#timeout: NSTimeInterval, file: String = __FILE__, line: UInt = __LINE__, action: (() -> Void) -> Void) -> Void { +@objc internal class NMBWait { + internal class func until(#timeout: NSTimeInterval, file: String = __FILE__, line: UInt = __LINE__, action: (() -> Void) -> Void) -> Void { var completed = false var token: dispatch_once_t = 0 let result = pollBlock(pollInterval: 0.01, timeoutInterval: timeout) { @@ -23,7 +23,7 @@ import Foundation } } - public class func until(file: String = __FILE__, line: UInt = __LINE__, action: (() -> Void) -> Void) -> Void { + internal class func until(file: String = __FILE__, line: UInt = __LINE__, action: (() -> Void) -> Void) -> Void { until(timeout: 1, file: file, line: line, action: action) } } diff --git a/src/Pods/Nimble/Nimble/DSL.swift b/src/Pods/Nimble/Nimble/DSL.swift index faa7e73..461d9f0 100644 --- a/src/Pods/Nimble/Nimble/DSL.swift +++ b/src/Pods/Nimble/Nimble/DSL.swift @@ -18,7 +18,7 @@ public func expect(file: String = __FILE__, line: UInt = __LINE__, expression /// Always fails the test with a message and a specified location. public func fail(message: String, #location: SourceLocation) { - NimbleAssertionHandler.assert(false, message: message, location: location) + NimbleAssertionHandler.assert(false, message: FailureMessage(stringValue: message), location: location) } /// Always fails the test with a message. @@ -28,5 +28,5 @@ public func fail(message: String, file: String = __FILE__, line: UInt = __LINE__ /// Always fails the test. public func fail(file: String = __FILE__, line: UInt = __LINE__) { - fail("fail() always fails") -} \ No newline at end of file + fail("fail() always fails", file: file, line: line) +} diff --git a/src/Pods/Nimble/Nimble/Expectation.swift b/src/Pods/Nimble/Nimble/Expectation.swift index 47224b6..a34c3d9 100644 --- a/src/Pods/Nimble/Nimble/Expectation.swift +++ b/src/Pods/Nimble/Nimble/Expectation.swift @@ -1,39 +1,52 @@ import Foundation +internal func expressionMatches(expression: Expression, matcher: U, #to: String) -> (Bool, FailureMessage) { + var msg = FailureMessage() + msg.to = to + let pass = matcher.matches(expression, failureMessage: msg) + if msg.actualValue == "" { + msg.actualValue = "<\(stringify(expression.evaluate()))>" + } + return (pass, msg) +} + +internal func expressionDoesNotMatch(expression: Expression, matcher: U, #toNot: String) -> (Bool, FailureMessage) { + var msg = FailureMessage() + msg.to = toNot + let pass = matcher.doesNotMatch(expression, failureMessage: msg) + if msg.actualValue == "" { + msg.actualValue = "<\(stringify(expression.evaluate()))>" + } + return (pass, msg) +} + public struct Expectation { let expression: Expression - public func verify(pass: Bool, _ message: String) { + public func verify(pass: Bool, _ message: FailureMessage) { NimbleAssertionHandler.assert(pass, message: message, location: expression.location) } + /// Tests the actual value using a matcher to match. public func to(matcher: U) { - var msg = FailureMessage() - let pass = matcher.matches(expression, failureMessage: msg) - if msg.actualValue == "" { - msg.actualValue = "<\(stringify(expression.evaluate()))>" - } - verify(pass, msg.stringValue()) + let (pass, msg) = expressionMatches(expression, matcher, to: "to") + verify(pass, msg) } + /// Tests the actual value using a matcher to not match. public func toNot(matcher: U) { - var msg = FailureMessage() - let pass = matcher.doesNotMatch(expression, failureMessage: msg) - if msg.actualValue == "" { - msg.actualValue = "<\(stringify(expression.evaluate()))>" - } - verify(pass, msg.stringValue()) + let (pass, msg) = expressionDoesNotMatch(expression, matcher, toNot: "to not") + verify(pass, msg) } + /// Tests the actual value using a matcher to not match. + /// + /// Alias to toNot(). public func notTo(matcher: U) { toNot(matcher) } // see: - // - BasicMatcherWrapper for extension // - AsyncMatcherWrapper for extension - // - NonNilMatcherWrapper for extension - // // - NMBExpectation for Objective-C interface } - diff --git a/src/Pods/Nimble/Nimble/Expression.swift b/src/Pods/Nimble/Nimble/Expression.swift index dad1a03..d7ba1f3 100644 --- a/src/Pods/Nimble/Nimble/Expression.swift +++ b/src/Pods/Nimble/Nimble/Expression.swift @@ -12,26 +12,70 @@ internal func memoizedClosure(closure: () -> T) -> (Bool) -> T { }) } +/// Expression represents the closure of the value inside expect(...). +/// Expressions are memoized by default. This makes them safe to call +/// evaluate() multiple times without causing a re-evaluation of the underlying +/// closure. +/// +/// @warning Since the closure can be any code, Objective-C code may choose +/// to raise an exception. Currently, Expression does not memoize +/// exception raising. +/// +/// This provides a common consumable API for matchers to utilize to allow +/// Nimble to change internals to how the captured closure is managed. public struct Expression { internal let _expression: (Bool) -> T? internal let _withoutCaching: Bool public let location: SourceLocation public let isClosure: Bool - public init(expression: () -> T?, location: SourceLocation, isClosure: Bool = false) { + /// Creates a new expression struct. Normally, expect(...) will manage this + /// creation process. The expression is memoized. + /// + /// @param expression The closure that produces a given value. + /// @param location The source location that this closure originates from. + /// @param isClosure A bool indicating if the captured expression is a + /// closure or internally produced closure. Some matchers + /// may require closures. For example, toEventually() + /// requires an explicit closure. This gives Nimble + /// flexibility if @autoclosure behavior changes between + /// Swift versions. Nimble internals always sets this true. + public init(expression: () -> T?, location: SourceLocation, isClosure: Bool = true) { self._expression = memoizedClosure(expression) self.location = location self._withoutCaching = false self.isClosure = isClosure } - public init(memoizedExpression: (Bool) -> T?, location: SourceLocation, withoutCaching: Bool, isClosure: Bool = false) { + /// Creates a new expression struct. Normally, expect(...) will manage this + /// creation process. + /// + /// @param expression The closure that produces a given value. + /// @param location The source location that this closure originates from. + /// @param withoutCaching Indicates if the struct should memoize the given + /// closure's result. Subsequent evaluate() calls will + /// not call the given closure if this is true. + /// @param isClosure A bool indicating if the captured expression is a + /// closure or internally produced closure. Some matchers + /// may require closures. For example, toEventually() + /// requires an explicit closure. This gives Nimble + /// flexibility if @autoclosure behavior changes between + /// Swift versions. Nimble internals always sets this true. + public init(memoizedExpression: (Bool) -> T?, location: SourceLocation, withoutCaching: Bool, isClosure: Bool = true) { self._expression = memoizedExpression self.location = location self._withoutCaching = withoutCaching self.isClosure = isClosure } + /// Returns a new Expression from the given expression. Identical to a map() + /// on this type. This should be used only to typecast the Expression's + /// closure value. + /// + /// The returned expression will preserve location and isClosure. + /// + /// @param block The block that can cast the current Expression value to a + /// new type. public func cast(block: (T?) -> U?) -> Expression { return Expression(expression: ({ block(self.evaluate()) }), location: self.location, isClosure: self.isClosure) } diff --git a/src/Pods/Nimble/Nimble/FailureMessage.swift b/src/Pods/Nimble/Nimble/FailureMessage.swift index 4faa50c..fcb5a58 100644 --- a/src/Pods/Nimble/Nimble/FailureMessage.swift +++ b/src/Pods/Nimble/Nimble/FailureMessage.swift @@ -1,24 +1,49 @@ import Foundation -@objc -public class FailureMessage { +/// Encapsulates the failure message that matchers can report to the end user. +/// +/// This is shared state between Nimble and matchers that mutate this value. +@objc public class FailureMessage { public var expected: String = "expected" public var actualValue: String? = "" // empty string -> use default; nil -> exclude public var to: String = "to" public var postfixMessage: String = "match" public var postfixActual: String = "" + public var stringValue: String { + get { + if let value = _stringValueOverride { + return value + } else { + return computeStringValue() + } + } + set { + _stringValueOverride = newValue + } + } + + internal var _stringValueOverride: String? + public init() { } - public func stringValue() -> String { + public init(stringValue: String) { + _stringValueOverride = stringValue + } + + internal func stripNewlines(str: String) -> String { + var lines: [String] = (str as NSString).componentsSeparatedByString("\n") as! [String] + let whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet() + lines = lines.map { line in line.stringByTrimmingCharactersInSet(whitespace) } + return "".join(lines) + } + + internal func computeStringValue() -> String { var value = "\(expected) \(to) \(postfixMessage)" if let actualValue = actualValue { value = "\(expected) \(to) \(postfixMessage), got \(actualValue)\(postfixActual)" } - var lines: [String] = (value as NSString).componentsSeparatedByString("\n") as! [String] - let whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet() - lines = lines.map { line in line.stringByTrimmingCharactersInSet(whitespace) } - return "".join(lines) + return stripNewlines(value) } } \ No newline at end of file diff --git a/src/Pods/Nimble/Nimble/Matchers/AllPass.swift b/src/Pods/Nimble/Nimble/Matchers/AllPass.swift index 5353faf..0ee7424 100644 --- a/src/Pods/Nimble/Nimble/Matchers/AllPass.swift +++ b/src/Pods/Nimble/Nimble/Matchers/AllPass.swift @@ -14,18 +14,6 @@ public func allPass } } -public func allPass - (matcher: V) -> NonNilMatcherFunc { - let wrapper = NonNilMatcherWrapper(NonNilBasicMatcherWrapper(matcher)) - return createAllPassMatcher() {wrapper.matches($0, failureMessage: $1)} -} - -public func allPass - (matcher: V) -> NonNilMatcherFunc { - let wrapper = BasicMatcherWrapper(matcher: matcher) - return createAllPassMatcher() {wrapper.matches($0, failureMessage: $1)} -} - public func allPass (matcher: V) -> NonNilMatcherFunc { return createAllPassMatcher() {matcher.matches($0, failureMessage: $1)} @@ -59,7 +47,8 @@ private func createAllPassMatcher NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + let location = actualExpression.location let actualValue = actualExpression.evaluate() var nsObjects = [NSObject]() diff --git a/src/Pods/Nimble/Nimble/Matchers/BeAKindOf.swift b/src/Pods/Nimble/Nimble/Matchers/BeAKindOf.swift index acf7f02..aab351f 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeAKindOf.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeAKindOf.swift @@ -1,5 +1,15 @@ import Foundation +// A Nimble matcher that catches attempts to use beAKindOf with non Objective-C types +public func beAKindOf(expectedClass: Any) -> NonNilMatcherFunc { + return NonNilMatcherFunc {actualExpression, failureMessage in + failureMessage.stringValue = "beAKindOf only works on Objective-C types since" + + " the Swift compiler will automatically type check Swift-only types." + + " This expectation is redundant." + return false + } +} + /// A Nimble matcher that succeeds when the actual value is an instance of the given class. /// @see beAnInstanceOf if you want to match against the exact class public func beAKindOf(expectedClass: AnyClass) -> NonNilMatcherFunc { @@ -17,7 +27,7 @@ public func beAKindOf(expectedClass: AnyClass) -> NonNilMatcherFunc { extension NMBObjCMatcher { public class func beAKindOfMatcher(expected: AnyClass) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in return beAKindOf(expected).matches(actualExpression, failureMessage: failureMessage) } } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeAnInstanceOf.swift b/src/Pods/Nimble/Nimble/Matchers/BeAnInstanceOf.swift index d6024d2..3979616 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeAnInstanceOf.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeAnInstanceOf.swift @@ -1,5 +1,15 @@ import Foundation +// A Nimble matcher that catches attempts to use beAnInstanceOf with non Objective-C types +public func beAnInstanceOf(expectedClass: Any) -> NonNilMatcherFunc { + return NonNilMatcherFunc {actualExpression, failureMessage in + failureMessage.stringValue = "beAnInstanceOf only works on Objective-C types since" + + " the Swift compiler will automatically type check Swift-only types." + + " This expectation is redundant." + return false + } +} + /// A Nimble matcher that succeeds when the actual value is an instance of the given class. /// @see beAKindOf if you want to match against subclasses public func beAnInstanceOf(expectedClass: AnyClass) -> NonNilMatcherFunc { @@ -17,7 +27,7 @@ public func beAnInstanceOf(expectedClass: AnyClass) -> NonNilMatcherFunc NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in return beAnInstanceOf(expected).matches(actualExpression, failureMessage: failureMessage) } } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeCloseTo.swift b/src/Pods/Nimble/Nimble/Matchers/BeCloseTo.swift index fe41575..a1f4b50 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeCloseTo.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeCloseTo.swift @@ -1,6 +1,6 @@ import Foundation -let DefaultDelta = 0.0001 +internal let DefaultDelta = 0.0001 internal func isCloseTo(actualValue: Double?, expectedValue: Double, delta: Double, failureMessage: FailureMessage) -> Bool { failureMessage.postfixMessage = "be close to <\(stringify(expectedValue))> (within \(stringify(delta)))" @@ -45,7 +45,7 @@ public func beCloseTo(expectedValue: NMBDoubleConvertible, within delta: Double return actualExpression() as? NMBDoubleConvertible }) let expr = Expression(expression: actualBlock, location: location) - let matcher = NonNilMatcherWrapper(NonNilBasicMatcherWrapper(beCloseTo(self._expected, within: self._delta))) + let matcher = beCloseTo(self._expected, within: self._delta) return matcher.matches(expr, failureMessage: failureMessage) } @@ -54,7 +54,7 @@ public func beCloseTo(expectedValue: NMBDoubleConvertible, within delta: Double return actualExpression() as? NMBDoubleConvertible }) let expr = Expression(expression: actualBlock, location: location) - let matcher = NonNilMatcherWrapper(NonNilBasicMatcherWrapper(beCloseTo(self._expected, within: self._delta))) + let matcher = beCloseTo(self._expected, within: self._delta) return matcher.doesNotMatch(expr, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeEmpty.swift b/src/Pods/Nimble/Nimble/Matchers/BeEmpty.swift index 71d3501..da16088 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeEmpty.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeEmpty.swift @@ -60,7 +60,8 @@ public func beEmpty() -> NonNilMatcherFunc { extension NMBObjCMatcher { public class func beEmptyMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + let location = actualExpression.location let actualValue = actualExpression.evaluate() failureMessage.postfixMessage = "be empty" if let value = actualValue as? NMBCollection { diff --git a/src/Pods/Nimble/Nimble/Matchers/BeGreaterThan.swift b/src/Pods/Nimble/Nimble/Matchers/BeGreaterThan.swift index 8668d2c..4733a5f 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeGreaterThan.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeGreaterThan.swift @@ -29,7 +29,7 @@ public func >(lhs: Expectation, rhs: NMBComparable?) { extension NMBObjCMatcher { public class func beGreaterThanMatcher(expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let expr = actualExpression.cast { $0 as? NMBComparable } return beGreaterThan(expected).matches(expr, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeGreaterThanOrEqualTo.swift b/src/Pods/Nimble/Nimble/Matchers/BeGreaterThanOrEqualTo.swift index fd99f29..8e0c2e0 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeGreaterThanOrEqualTo.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeGreaterThanOrEqualTo.swift @@ -31,7 +31,7 @@ public func >=(lhs: Expectation, rhs: T) { extension NMBObjCMatcher { public class func beGreaterThanOrEqualToMatcher(expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let expr = actualExpression.cast { $0 as? NMBComparable } return beGreaterThanOrEqualTo(expected).matches(expr, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeIdenticalTo.swift b/src/Pods/Nimble/Nimble/Matchers/BeIdenticalTo.swift index c2f7f9d..40c730f 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeIdenticalTo.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeIdenticalTo.swift @@ -21,7 +21,7 @@ public func !==(lhs: Expectation, rhs: T?) { extension NMBObjCMatcher { public class func beIdenticalToMatcher(expected: NSObject?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in return beIdenticalTo(expected).matches(actualExpression, failureMessage: failureMessage) } } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeLessThan.swift b/src/Pods/Nimble/Nimble/Matchers/BeLessThan.swift index b20a0f8..9ea5699 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeLessThan.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeLessThan.swift @@ -28,7 +28,7 @@ public func <(lhs: Expectation, rhs: NMBComparable?) { extension NMBObjCMatcher { public class func beLessThanMatcher(expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let expr = actualExpression.cast { $0 as! NMBComparable? } return beLessThan(expected).matches(expr, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeLessThanOrEqual.swift b/src/Pods/Nimble/Nimble/Matchers/BeLessThanOrEqual.swift index a932e4e..6c4a457 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeLessThanOrEqual.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeLessThanOrEqual.swift @@ -29,7 +29,7 @@ public func <=(lhs: Expectation, rhs: T) { extension NMBObjCMatcher { public class func beLessThanOrEqualToMatcher(expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil:false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil:false) { actualExpression, failureMessage in let expr = actualExpression.cast { $0 as? NMBComparable } return beLessThanOrEqualTo(expected).matches(expr, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeLogical.swift b/src/Pods/Nimble/Nimble/Matchers/BeLogical.swift index 053fc5d..7d0a00f 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeLogical.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeLogical.swift @@ -1,16 +1,15 @@ import Foundation -internal func beBool(#expectedValue: BooleanType, #stringValue: String, #falseMatchesNil: Bool) -> MatcherFunc { - return MatcherFunc { actualExpression, failureMessage in - failureMessage.postfixMessage = "be \(stringValue)" - let actual = actualExpression.evaluate() - if expectedValue { - return actual?.boolValue == expectedValue.boolValue - } else if !falseMatchesNil { - return actual != nil && actual!.boolValue != !expectedValue.boolValue +internal func matcherWithFailureMessage(matcher: M, postprocessor: (FailureMessage) -> Void) -> FullMatcherFunc { + return FullMatcherFunc { actualExpression, failureMessage, isNegation in + let pass: Bool + if isNegation { + pass = matcher.doesNotMatch(actualExpression, failureMessage: failureMessage) } else { - return actual?.boolValue != !expectedValue.boolValue + pass = matcher.matches(actualExpression, failureMessage: failureMessage) } + postprocessor(failureMessage) + return pass } } @@ -18,16 +17,16 @@ internal func beBool(#expectedValue: BooleanType, #stringValue: String, #falseMa /// A Nimble matcher that succeeds when the actual value is exactly true. /// This matcher will not match against nils. -public func beTrue() -> NonNilMatcherFunc { - return basicMatcherWithFailureMessage(equal(true)) { failureMessage in +public func beTrue() -> FullMatcherFunc { + return matcherWithFailureMessage(equal(true)) { failureMessage in failureMessage.postfixMessage = "be true" } } /// A Nimble matcher that succeeds when the actual value is exactly false. /// This matcher will not match against nils. -public func beFalse() -> NonNilMatcherFunc { - return basicMatcherWithFailureMessage(equal(false)) { failureMessage in +public func beFalse() -> FullMatcherFunc { + return matcherWithFailureMessage(equal(false)) { failureMessage in failureMessage.postfixMessage = "be false" } } @@ -35,40 +34,58 @@ public func beFalse() -> NonNilMatcherFunc { // MARK: beTruthy() / beFalsy() /// A Nimble matcher that succeeds when the actual value is not logically false. -public func beTruthy() -> MatcherFunc { - return beBool(expectedValue: true, stringValue: "truthy", falseMatchesNil: true) +public func beTruthy() -> MatcherFunc { + return MatcherFunc { actualExpression, failureMessage in + failureMessage.postfixMessage = "be truthy" + let actualValue = actualExpression.evaluate() + if let actualValue = actualValue { + if let actualValue = actualValue as? BooleanType { + return actualValue.boolValue == true + } + } + return actualValue != nil + } } /// A Nimble matcher that succeeds when the actual value is logically false. /// This matcher will match against nils. -public func beFalsy() -> MatcherFunc { - return beBool(expectedValue: false, stringValue: "falsy", falseMatchesNil: true) +public func beFalsy() -> MatcherFunc { + return MatcherFunc { actualExpression, failureMessage in + failureMessage.postfixMessage = "be falsy" + let actualValue = actualExpression.evaluate() + if let actualValue = actualValue { + if let actualValue = actualValue as? BooleanType { + return actualValue.boolValue != true + } + } + return actualValue == nil + } } extension NMBObjCMatcher { public class func beTruthyMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage, location in + return NMBObjCMatcher { actualExpression, failureMessage in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false as BooleanType? } return beTruthy().matches(expr, failureMessage: failureMessage) } } public class func beFalsyMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage, location in + return NMBObjCMatcher { actualExpression, failureMessage in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false as BooleanType? } return beFalsy().matches(expr, failureMessage: failureMessage) } } public class func beTrueMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage, location in + return NMBObjCMatcher { actualExpression, failureMessage in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false as Bool? } return beTrue().matches(expr, failureMessage: failureMessage) } } public class func beFalseMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false as Bool? } return beFalse().matches(expr, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeNil.swift b/src/Pods/Nimble/Nimble/Matchers/BeNil.swift index b33ef1b..a3efe13 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeNil.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeNil.swift @@ -11,7 +11,7 @@ public func beNil() -> MatcherFunc { extension NMBObjCMatcher { public class func beNilMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage, location in + return NMBObjCMatcher { actualExpression, failureMessage in return beNil().matches(actualExpression, failureMessage: failureMessage) } } diff --git a/src/Pods/Nimble/Nimble/Matchers/BeginWith.swift b/src/Pods/Nimble/Nimble/Matchers/BeginWith.swift index 47d7071..f7da07e 100644 --- a/src/Pods/Nimble/Nimble/Matchers/BeginWith.swift +++ b/src/Pods/Nimble/Nimble/Matchers/BeginWith.swift @@ -39,7 +39,7 @@ public func beginWith(startingSubstring: String) -> NonNilMatcherFunc { extension NMBObjCMatcher { public class func beginWithMatcher(expected: AnyObject) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let actual = actualExpression.evaluate() if let actualString = actual as? String { let expr = actualExpression.cast { $0 as? String } diff --git a/src/Pods/Nimble/Nimble/Matchers/Contain.swift b/src/Pods/Nimble/Nimble/Matchers/Contain.swift index 50e4082..a04e8b2 100644 --- a/src/Pods/Nimble/Nimble/Matchers/Contain.swift +++ b/src/Pods/Nimble/Nimble/Matchers/Contain.swift @@ -54,7 +54,8 @@ public func contain(items: AnyObject?...) -> NonNilMatcherFunc { extension NMBObjCMatcher { public class func containMatcher(expected: NSObject?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + let location = actualExpression.location let actualValue = actualExpression.evaluate() if let value = actualValue as? NMBContainer { let expr = Expression(expression: ({ value as NMBContainer }), location: location) diff --git a/src/Pods/Nimble/Nimble/Matchers/EndWith.swift b/src/Pods/Nimble/Nimble/Matchers/EndWith.swift index 1dfd4aa..20c36a4 100644 --- a/src/Pods/Nimble/Nimble/Matchers/EndWith.swift +++ b/src/Pods/Nimble/Nimble/Matchers/EndWith.swift @@ -49,13 +49,14 @@ public func endWith(endingSubstring: String) -> NonNilMatcherFunc { extension NMBObjCMatcher { public class func endWithMatcher(expected: AnyObject) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + let location = actualExpression.location let actual = actualExpression.evaluate() if let actualString = actual as? String { - let expr = Expression(expression: ({ actualString }), location: location) + let expr = actualExpression.cast { $0 as? String } return endWith(expected as! String).matches(expr, failureMessage: failureMessage) } else { - let expr = Expression(expression: ({ actual as? NMBOrderedCollection }), location: location) + let expr = actualExpression.cast { $0 as? NMBOrderedCollection } return endWith(expected).matches(expr, failureMessage: failureMessage) } } diff --git a/src/Pods/Nimble/Nimble/Matchers/Equal.swift b/src/Pods/Nimble/Nimble/Matchers/Equal.swift index afcb7ec..4f927d0 100644 --- a/src/Pods/Nimble/Nimble/Matchers/Equal.swift +++ b/src/Pods/Nimble/Nimble/Matchers/Equal.swift @@ -138,7 +138,7 @@ public func !=(lhs: Expectation<[T: C]>, rhs: [T: C] extension NMBObjCMatcher { public class func equalMatcher(expected: NSObject) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in return equal(expected).matches(actualExpression, failureMessage: failureMessage) } } diff --git a/src/Pods/Nimble/Nimble/Matchers/Match.swift b/src/Pods/Nimble/Nimble/Matchers/Match.swift index f954a0a..2ca14b3 100644 --- a/src/Pods/Nimble/Nimble/Matchers/Match.swift +++ b/src/Pods/Nimble/Nimble/Matchers/Match.swift @@ -18,7 +18,7 @@ public func match(expectedValue: String?) -> NonNilMatcherFunc { extension NMBObjCMatcher { public class func matchMatcher(expected: NSString) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let actual = actualExpression.cast { $0 as? String } return match(expected.description).matches(actual, failureMessage: failureMessage) } diff --git a/src/Pods/Nimble/Nimble/Matchers/MatcherProtocols.swift b/src/Pods/Nimble/Nimble/Matchers/MatcherProtocols.swift index 687bd2e..533e7bd 100644 --- a/src/Pods/Nimble/Nimble/Matchers/MatcherProtocols.swift +++ b/src/Pods/Nimble/Nimble/Matchers/MatcherProtocols.swift @@ -1,44 +1,13 @@ import Foundation - -/// Implement this protocol if you want full control over to() and toNot() behaviors -/// when matching a value. +/// Implement this protocol to implement a custom matcher for Swift public protocol Matcher { typealias ValueType func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool } -/// Implement this protocol if you just want a simplier matcher. The negation -/// is provided for you automatically. -/// -/// If you just want a very simplified usage of BasicMatcher, -/// @see MatcherFunc. -public protocol BasicMatcher { - typealias ValueType - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool -} - - -/// Implement this protocol if you want a matcher only work for non-nil values. -/// The matcher still needs to properly handle nil values, but using this type will -/// tell Nimble to automatically postfix a nil match error (and automatically fail the match). -/// -/// Unlike a naive implementation of the matches interface, NonNilBasicMatcher will also -/// fail for the negation to a nil: -/// -/// // objc -/// expect(nil).to(matchWithMyCustomNonNilBasicMatcher()) // => fails -/// expect(nil).toNot(matchWithMyCustomNonNilBasicMatcher()) // => fails -/// -/// @see BasicMatcher -public protocol NonNilBasicMatcher { - typealias ValueType - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool -} - -/// Objective-C interface to the Swift variant of Matcher. This gives you full control over -/// to() and toNot() behaviors when matching a value. +/// Objective-C interface to the Swift variant of Matcher. @objc public protocol NMBMatcher { func matches(actualBlock: () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool func doesNotMatch(actualBlock: () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool diff --git a/src/Pods/Nimble/Nimble/Matchers/RaisesException.swift b/src/Pods/Nimble/Nimble/Matchers/RaisesException.swift index be764cd..6c28f12 100644 --- a/src/Pods/Nimble/Nimble/Matchers/RaisesException.swift +++ b/src/Pods/Nimble/Nimble/Matchers/RaisesException.swift @@ -1,188 +1,125 @@ import Foundation -internal struct RaiseExceptionMatchResult { - var success: Bool - var nameFailureMessage: FailureMessage? - var reasonFailureMessage: FailureMessage? - var userInfoFailureMessage: FailureMessage? -} - -internal func raiseExceptionMatcher(matches: (NSException?, SourceLocation) -> RaiseExceptionMatchResult) -> MatcherFunc { - return MatcherFunc { actualExpression, failureMessage in - failureMessage.actualValue = nil - - var exception: NSException? - var capture = NMBExceptionCapture(handler: ({ e in - exception = e - }), finally: nil) +/// A Nimble matcher that succeeds when the actual expression raises an +/// exception with the specified name, reason, and/or userInfo. +/// +/// Alternatively, you can pass a closure to do any arbitrary custom matching +/// to the raised exception. The closure only gets called when an exception +/// is raised. +/// +/// nil arguments indicates that the matcher should not attempt to match against +/// that parameter. +public func raiseException( + named: String? = nil, + reason: String? = nil, + userInfo: NSDictionary? = nil, + closure: ((NSException) -> Void)? = nil) -> MatcherFunc { + return MatcherFunc { actualExpression, failureMessage in + + var exception: NSException? + var capture = NMBExceptionCapture(handler: ({ e in + exception = e + }), finally: nil) + + capture.tryBlock { + actualExpression.evaluate() + return + } - capture.tryBlock { - actualExpression.evaluate() - return + setFailureMessageForException(failureMessage, exception, named, reason, userInfo, closure) + return exceptionMatchesNonNilFieldsOrClosure(exception, named, reason, userInfo, closure) } +} - let result = matches(exception, actualExpression.location) - +internal func setFailureMessageForException( + failureMessage: FailureMessage, + exception: NSException?, + named: String?, + reason: String?, + userInfo: NSDictionary?, + closure: ((NSException) -> Void)?) { failureMessage.postfixMessage = "raise exception" - if let nameFailureMessage = result.nameFailureMessage { - failureMessage.postfixMessage += " with name \(nameFailureMessage.postfixMessage)" + if let named = named { + failureMessage.postfixMessage += " with name <\(named)>" } - if let reasonFailureMessage = result.reasonFailureMessage { - failureMessage.postfixMessage += " with reason \(reasonFailureMessage.postfixMessage)" + if let reason = reason { + failureMessage.postfixMessage += " with reason <\(reason)>" } - if let userInfoFailureMessage = result.userInfoFailureMessage { - failureMessage.postfixMessage += " with userInfo \(userInfoFailureMessage.postfixMessage)" + if let userInfo = userInfo { + failureMessage.postfixMessage += " with userInfo <\(userInfo)>" } - if result.nameFailureMessage == nil && result.reasonFailureMessage == nil - && result.userInfoFailureMessage == nil { - failureMessage.postfixMessage = "raise any exception" + if let closure = closure { + failureMessage.postfixMessage += " that satisfies block" + } + if named == nil && reason == nil && userInfo == nil && closure == nil { + failureMessage.postfixMessage = "raise any exception" } - return result.success - } - + if let exception = exception { + failureMessage.actualValue = "\(NSStringFromClass(exception.dynamicType)) { name=\(exception.name), reason='\(stringify(exception.reason))', userInfo=\(stringify(exception.userInfo)) }" + } else { + failureMessage.actualValue = "no exception" + } } -// A Nimble matcher that succeeds when the actual expression raises an exception, which name, -// reason and userInfo match successfully with the provided matchers -public func raiseException( - named: NonNilMatcherFunc? = nil, - reason: NonNilMatcherFunc? = nil, - userInfo: NonNilMatcherFunc? = nil) -> MatcherFunc { - return raiseExceptionMatcher() { exception, location in - - var matches = exception != nil - - var nameFailureMessage: FailureMessage? - if let nameMatcher = named { - let wrapper = NonNilMatcherWrapper(NonNilBasicMatcherWrapper(nameMatcher)) - nameFailureMessage = FailureMessage() - matches = wrapper.matches( - Expression(expression: { exception?.name }, - location: location, - isClosure: false), - failureMessage: nameFailureMessage!) && matches - } +internal func exceptionMatchesNonNilFieldsOrClosure( + exception: NSException?, + named: String?, + reason: String?, + userInfo: NSDictionary?, + closure: ((NSException) -> Void)?) -> Bool { + var matches = false - var reasonFailureMessage: FailureMessage? - if let reasonMatcher = reason { - let wrapper = NonNilMatcherWrapper(NonNilBasicMatcherWrapper(reasonMatcher)) - reasonFailureMessage = FailureMessage() - matches = wrapper.matches( - Expression(expression: { exception?.reason }, - location: location, - isClosure: false), - failureMessage: reasonFailureMessage!) && matches - } + if let exception = exception { + matches = true - var userInfoFailureMessage: FailureMessage? - if let userInfoMatcher = userInfo { - let wrapper = NonNilMatcherWrapper(NonNilBasicMatcherWrapper(userInfoMatcher)) - userInfoFailureMessage = FailureMessage() - matches = wrapper.matches( - Expression(expression: { exception?.userInfo }, - location: location, - isClosure: false), - failureMessage: userInfoFailureMessage!) && matches + if named != nil && exception.name != named { + matches = false + } + if reason != nil && exception.reason != reason { + matches = false + } + if userInfo != nil && exception.userInfo != userInfo { + matches = false + } + if let closure = closure { + let assertions = gatherFailingExpectations { + closure(exception) + } + let messages = map(assertions) { $0.message } + if messages.count > 0 { + matches = false + } } - - return RaiseExceptionMatchResult( - success: matches, - nameFailureMessage: nameFailureMessage, - reasonFailureMessage: reasonFailureMessage, - userInfoFailureMessage: userInfoFailureMessage) } -} - -/// A Nimble matcher that succeeds when the actual expression raises an exception with -/// the specified name, reason, and userInfo. -public func raiseException(#named: String, #reason: String, #userInfo: NSDictionary) -> MatcherFunc { - return raiseException(named: equal(named), reason: equal(reason), userInfo: equal(userInfo)) -} - -/// A Nimble matcher that succeeds when the actual expression raises an exception with -/// the specified name and reason. -public func raiseException(#named: String, #reason: String) -> MatcherFunc { - return raiseException(named: equal(named), reason: equal(reason)) -} - - -/// A Nimble matcher that succeeds when the actual expression raises an exception with -/// the specified name. -public func raiseException(#named: String) -> MatcherFunc { - return raiseException(named: equal(named)) + + return matches } @objc public class NMBObjCRaiseExceptionMatcher : NMBMatcher { - var _name: String? - var _reason: String? - var _userInfo: NSDictionary? - var _nameMatcher: NMBMatcher? - var _reasonMatcher: NMBMatcher? - var _userInfoMatcher: NMBMatcher? - - init(name: String?, reason: String?, userInfo: NSDictionary?) { + internal var _name: String? + internal var _reason: String? + internal var _userInfo: NSDictionary? + internal var _block: ((NSException) -> Void)? + + internal init(name: String?, reason: String?, userInfo: NSDictionary?, block: ((NSException) -> Void)?) { _name = name _reason = reason _userInfo = userInfo - } - - init(nameMatcher: NMBMatcher?, reasonMatcher: NMBMatcher?, userInfoMatcher: NMBMatcher?) { - _nameMatcher = nameMatcher - _reasonMatcher = reasonMatcher - _userInfoMatcher = userInfoMatcher + _block = block } public func matches(actualBlock: () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let block: () -> Any? = ({ actualBlock(); return nil }) let expr = Expression(expression: block, location: location) - if _nameMatcher != nil || _reasonMatcher != nil || _userInfoMatcher != nil { - return raiseExceptionMatcher() { - exception, location in - - var matches = exception != nil - - var nameFailureMessage: FailureMessage? - if let nameMatcher = self._nameMatcher { - nameFailureMessage = FailureMessage() - matches = nameMatcher.matches({ exception?.name }, - failureMessage: nameFailureMessage!, - location: location) && matches - } - - var reasonFailureMessage: FailureMessage? - if let reasonMatcher = self._reasonMatcher { - reasonFailureMessage = FailureMessage() - matches = reasonMatcher.matches({ exception?.reason }, - failureMessage: reasonFailureMessage!, - location: location) && matches - } - - var userInfoFailureMessage: FailureMessage? - if let userInfoMatcher = self._userInfoMatcher { - userInfoFailureMessage = FailureMessage() - matches = userInfoMatcher.matches({ exception?.userInfo }, - failureMessage: userInfoFailureMessage!, - location: location) && matches - } - return RaiseExceptionMatchResult( - success: matches, - nameFailureMessage: nameFailureMessage, - reasonFailureMessage: reasonFailureMessage, - userInfoFailureMessage: userInfoFailureMessage) - - }.matches(expr, failureMessage: failureMessage) - } else if let name = _name, reason = _reason, userInfo = _userInfo { - return raiseException(named: name, reason: reason, userInfo: userInfo).matches(expr, failureMessage: failureMessage) - } else if let name = _name, reason = _reason { - return raiseException(named: name, reason: reason).matches(expr, failureMessage: failureMessage) - } else if let name = _name { - return raiseException(named: name).matches(expr, failureMessage: failureMessage) - } else { - return raiseException().matches(expr, failureMessage: failureMessage) - } + return raiseException( + named: _name, + reason: _reason, + userInfo: _userInfo, + closure: _block + ).matches(expr, failureMessage: failureMessage) } public func doesNotMatch(actualBlock: () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { @@ -191,46 +128,51 @@ public func raiseException(#named: String) -> MatcherFunc { public var named: (name: String) -> NMBObjCRaiseExceptionMatcher { return ({ name in - return NMBObjCRaiseExceptionMatcher(name: name, reason: self._reason, userInfo: self._userInfo) + return NMBObjCRaiseExceptionMatcher( + name: name, + reason: self._reason, + userInfo: self._userInfo, + block: self._block + ) }) } public var reason: (reason: String?) -> NMBObjCRaiseExceptionMatcher { return ({ reason in - return NMBObjCRaiseExceptionMatcher(name: self._name, reason: reason, userInfo: self._userInfo) + return NMBObjCRaiseExceptionMatcher( + name: self._name, + reason: reason, + userInfo: self._userInfo, + block: self._block + ) }) } public var userInfo: (userInfo: NSDictionary?) -> NMBObjCRaiseExceptionMatcher { return ({ userInfo in - return NMBObjCRaiseExceptionMatcher(name: self._name, reason: self._reason, userInfo: userInfo) - }) - } - - public var withName: (nameMatcher: NMBMatcher) -> NMBObjCRaiseExceptionMatcher { - return ({ nameMatcher in - return NMBObjCRaiseExceptionMatcher(nameMatcher: nameMatcher, - reasonMatcher: self._reasonMatcher, userInfoMatcher: self._userInfoMatcher) - }) - } - - public var withReason: (reasonMatcher: NMBMatcher) -> NMBObjCRaiseExceptionMatcher { - return ({ reasonMatcher in - return NMBObjCRaiseExceptionMatcher(nameMatcher: self._nameMatcher, - reasonMatcher: reasonMatcher, userInfoMatcher: self._userInfoMatcher) + return NMBObjCRaiseExceptionMatcher( + name: self._name, + reason: self._reason, + userInfo: userInfo, + block: self._block + ) }) } - public var withUserInfo: (userInfoMatcher: NMBMatcher) -> NMBObjCRaiseExceptionMatcher { - return ({ userInfoMatcher in - return NMBObjCRaiseExceptionMatcher(nameMatcher: self._nameMatcher, - reasonMatcher: self._reasonMatcher, userInfoMatcher: userInfoMatcher) + public var satisfyingBlock: (block: ((NSException) -> Void)?) -> NMBObjCRaiseExceptionMatcher { + return ({ block in + return NMBObjCRaiseExceptionMatcher( + name: self._name, + reason: self._reason, + userInfo: self._userInfo, + block: block + ) }) } } extension NMBObjCMatcher { public class func raiseExceptionMatcher() -> NMBObjCRaiseExceptionMatcher { - return NMBObjCRaiseExceptionMatcher(name: nil, reason: nil, userInfo: nil) + return NMBObjCRaiseExceptionMatcher(name: nil, reason: nil, userInfo: nil, block: nil) } } diff --git a/src/Pods/Nimble/Nimble/ObjCExpectation.swift b/src/Pods/Nimble/Nimble/ObjCExpectation.swift new file mode 100644 index 0000000..be73073 --- /dev/null +++ b/src/Pods/Nimble/Nimble/ObjCExpectation.swift @@ -0,0 +1,79 @@ +internal struct ObjCMatcherWrapper : Matcher { + let matcher: NMBMatcher + + func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { + return matcher.matches( + ({ actualExpression.evaluate() }), + failureMessage: failureMessage, + location: actualExpression.location) + } + + func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { + return matcher.doesNotMatch( + ({ actualExpression.evaluate() }), + failureMessage: failureMessage, + location: actualExpression.location) + } +} + +// Equivalent to Expectation, but for Nimble's Objective-C interface +public class NMBExpectation : NSObject { + internal let _actualBlock: () -> NSObject! + internal var _negative: Bool + internal let _file: String + internal let _line: UInt + internal var _timeout: NSTimeInterval = 1.0 + + public init(actualBlock: () -> NSObject!, negative: Bool, file: String, line: UInt) { + self._actualBlock = actualBlock + self._negative = negative + self._file = file + self._line = line + } + + private var expectValue: Expectation { + return expect(file: _file, line: _line){ + self._actualBlock() as NSObject? + } + } + + public var withTimeout: (NSTimeInterval) -> NMBExpectation { + return ({ timeout in self._timeout = timeout + return self + }) + } + + public var to: (NMBMatcher) -> Void { + return ({ matcher in + self.expectValue.to(ObjCMatcherWrapper(matcher: matcher)) + }) + } + + public var toNot: (NMBMatcher) -> Void { + return ({ matcher in + self.expectValue.toNot( + ObjCMatcherWrapper(matcher: matcher) + ) + }) + } + + public var notTo: (NMBMatcher) -> Void { return toNot } + + public var toEventually: (NMBMatcher) -> Void { + return ({ matcher in + self.expectValue.toEventually( + ObjCMatcherWrapper(matcher: matcher), + timeout: self._timeout + ) + }) + } + + public var toEventuallyNot: (NMBMatcher) -> Void { + return ({ matcher in + self.expectValue.toEventuallyNot( + ObjCMatcherWrapper(matcher: matcher), + timeout: self._timeout + ) + }) + } +} diff --git a/src/Pods/Nimble/Nimble/Utils/Stringers.swift b/src/Pods/Nimble/Nimble/Utils/Stringers.swift index c914a12..c13ea8d 100644 --- a/src/Pods/Nimble/Nimble/Utils/Stringers.swift +++ b/src/Pods/Nimble/Nimble/Utils/Stringers.swift @@ -15,7 +15,7 @@ internal func arrayAsString(items: [T], joiner: String = ", ") -> String { } } -@objc protocol NMBStringer { +@objc internal protocol NMBStringer { func NMB_stringify() -> String } diff --git a/src/Pods/Nimble/Nimble/Wrappers/AsyncMatcherWrapper.swift b/src/Pods/Nimble/Nimble/Wrappers/AsyncMatcherWrapper.swift index b893196..52a8449 100644 --- a/src/Pods/Nimble/Nimble/Wrappers/AsyncMatcherWrapper.swift +++ b/src/Pods/Nimble/Nimble/Wrappers/AsyncMatcherWrapper.swift @@ -1,6 +1,6 @@ import Foundation -struct AsyncMatcherWrapper: Matcher { +internal struct AsyncMatcherWrapper: Matcher { let fullMatcher: U let timeoutInterval: NSTimeInterval let pollInterval: NSTimeInterval @@ -40,75 +40,51 @@ struct AsyncMatcherWrapper: Matcher { } } -private let toEventuallyRequiresClosureError = "expect(...).toEventually(...) requires an explicit closure (eg - expect { ... }.toEventually(...) )\nSwift 1.2 @autoclosure behavior has changed in an incompatible way for Nimble to function" +private let toEventuallyRequiresClosureError = FailureMessage(stringValue: "expect(...).toEventually(...) requires an explicit closure (eg - expect { ... }.toEventually(...) )\nSwift 1.2 @autoclosure behavior has changed in an incompatible way for Nimble to function") extension Expectation { + /// Tests the actual value using a matcher to match by checking continuously + /// at each pollInterval until the timeout is reached. public func toEventually(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.01) { if expression.isClosure { - to(AsyncMatcherWrapper( - fullMatcher: FullMatcherWrapper( - matcher: matcher, - to: "to eventually", - toNot: "to eventually not"), - timeoutInterval: timeout, - pollInterval: pollInterval)) + let (pass, msg) = expressionMatches( + expression, + AsyncMatcherWrapper( + fullMatcher: matcher, + timeoutInterval: timeout, + pollInterval: pollInterval), + to: "to eventually" + ) + verify(pass, msg) } else { verify(false, toEventuallyRequiresClosureError) } } + /// Tests the actual value using a matcher to not match by checking + /// continuously at each pollInterval until the timeout is reached. public func toEventuallyNot(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.01) { if expression.isClosure { - toNot(AsyncMatcherWrapper( - fullMatcher: FullMatcherWrapper( - matcher: matcher, - to: "to eventually", - toNot: "to eventually not"), - timeoutInterval: timeout, - pollInterval: pollInterval)) + let (pass, msg) = expressionDoesNotMatch( + expression, + AsyncMatcherWrapper( + fullMatcher: matcher, + timeoutInterval: timeout, + pollInterval: pollInterval), + toNot: "to eventually not" + ) + verify(pass, msg) } else { verify(false, toEventuallyRequiresClosureError) } } - public func toEventually(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.01) { - toEventually( - FullMatcherWrapper( - matcher: BasicMatcherWrapper(matcher: matcher), - to: "to eventually", - toNot: "to eventually not"), - timeout: timeout, - pollInterval: pollInterval) - } - - public func toEventuallyNot(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.01) { - toEventuallyNot( - FullMatcherWrapper( - matcher: BasicMatcherWrapper(matcher: matcher), - to: "to eventually", - toNot: "to eventually not"), - timeout: timeout, - pollInterval: pollInterval) - } - - public func toEventually(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.1) { - toEventually( - FullMatcherWrapper( - matcher: NonNilMatcherWrapper(NonNilBasicMatcherWrapper(matcher)), - to: "to eventually", - toNot: "to eventually not"), - timeout: timeout, - pollInterval: pollInterval) - } - - public func toEventuallyNot(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.1) { - toEventuallyNot( - FullMatcherWrapper( - matcher: NonNilMatcherWrapper(NonNilBasicMatcherWrapper(matcher)), - to: "to eventually", - toNot: "to eventually not"), - timeout: timeout, - pollInterval: pollInterval) + /// Tests the actual value using a matcher to not match by checking + /// continuously at each pollInterval until the timeout is reached. + /// + /// Alias of toEventuallyNot() + public func toNotEventually(matcher: U, timeout: NSTimeInterval = 1, pollInterval: NSTimeInterval = 0.01) { + return toEventuallyNot(matcher, timeout: timeout, pollInterval: pollInterval) } } diff --git a/src/Pods/Nimble/Nimble/Wrappers/BasicMatcherWrapper.swift b/src/Pods/Nimble/Nimble/Wrappers/BasicMatcherWrapper.swift deleted file mode 100644 index e1600fe..0000000 --- a/src/Pods/Nimble/Nimble/Wrappers/BasicMatcherWrapper.swift +++ /dev/null @@ -1,28 +0,0 @@ -import Foundation - - -struct BasicMatcherWrapper: Matcher { - let matcher: M - - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - return matcher.matches(actualExpression, failureMessage: failureMessage) - } - - func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - return !matcher.matches(actualExpression, failureMessage: failureMessage) - } -} - -extension Expectation { - public func to(matcher: U) { - to(FullMatcherWrapper(matcher: BasicMatcherWrapper(matcher: matcher), to: "to", toNot: "to not")) - } - - public func toNot(matcher: U) { - toNot(FullMatcherWrapper(matcher: BasicMatcherWrapper(matcher: matcher), to: "to", toNot: "to not")) - } - - public func notTo(matcher: U) { - toNot(matcher) - } -} diff --git a/src/Pods/Nimble/Nimble/Wrappers/FullMatcherWrapper.swift b/src/Pods/Nimble/Nimble/Wrappers/FullMatcherWrapper.swift deleted file mode 100644 index 9c358ef..0000000 --- a/src/Pods/Nimble/Nimble/Wrappers/FullMatcherWrapper.swift +++ /dev/null @@ -1,18 +0,0 @@ -import Foundation - - -struct FullMatcherWrapper: Matcher { - let matcher: M - let to: String - let toNot: String - - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - failureMessage.to = to - return matcher.matches(actualExpression, failureMessage: failureMessage) - } - - func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - failureMessage.to = toNot - return matcher.doesNotMatch(actualExpression, failureMessage: failureMessage) - } -} diff --git a/src/Pods/Nimble/Nimble/Wrappers/MatcherFunc.swift b/src/Pods/Nimble/Nimble/Wrappers/MatcherFunc.swift index 224f8a0..7ca6cfb 100644 --- a/src/Pods/Nimble/Nimble/Wrappers/MatcherFunc.swift +++ b/src/Pods/Nimble/Nimble/Wrappers/MatcherFunc.swift @@ -1,5 +1,13 @@ -import Foundation - +/// A convenience API to build matchers that allow full control over +/// to() and toNot() match cases. +/// +/// The final bool argument in the closure is if the match is for negation. +/// +/// You may use this when implementing your own custom matchers. +/// +/// Use the Matcher protocol instead of this type to accept custom matchers as +/// input parameters. +/// @see allPass for an example that uses accepts other matchers as input. public struct FullMatcherFunc: Matcher { public let matcher: (Expression, FailureMessage, Bool) -> Bool @@ -12,11 +20,22 @@ public struct FullMatcherFunc: Matcher { } public func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - return !matcher(actualExpression, failureMessage, true) + return matcher(actualExpression, failureMessage, true) } } -public struct MatcherFunc: BasicMatcher { +/// A convenience API to build matchers that don't need special negation +/// behavior. The toNot() behavior is the negation of to(). +/// +/// @see NonNilMatcherFunc if you prefer to have this matcher fail when nil +/// values are recieved in an expectation. +/// +/// You may use this when implementing your own custom matchers. +/// +/// Use the Matcher protocol instead of this type to accept custom matchers as +/// input parameters. +/// @see allPass for an example that uses accepts other matchers as input. +public struct MatcherFunc: Matcher { public let matcher: (Expression, FailureMessage) -> Bool public init(_ matcher: (Expression, FailureMessage) -> Bool) { @@ -26,9 +45,24 @@ public struct MatcherFunc: BasicMatcher { public func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { return matcher(actualExpression, failureMessage) } + + public func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { + return !matcher(actualExpression, failureMessage) + } } -public struct NonNilMatcherFunc: NonNilBasicMatcher { +/// A convenience API to build matchers that don't need special negation +/// behavior. The toNot() behavior is the negation of to(). +/// +/// Unlike MatcherFunc, this will always fail if an expectation contains nil. +/// This applies regardless of using to() or toNot(). +/// +/// You may use this when implementing your own custom matchers. +/// +/// Use the Matcher protocol instead of this type to accept custom matchers as +/// input parameters. +/// @see allPass for an example that uses accepts other matchers as input. +public struct NonNilMatcherFunc: Matcher { public let matcher: (Expression, FailureMessage) -> Bool public init(_ matcher: (Expression, FailureMessage) -> Bool) { @@ -36,20 +70,26 @@ public struct NonNilMatcherFunc: NonNilBasicMatcher { } public func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - return matcher(actualExpression, failureMessage) + let pass = matcher(actualExpression, failureMessage) + if attachNilErrorIfNeeded(actualExpression, failureMessage: failureMessage) { + return false + } + return pass } -} -public func fullMatcherFromBasicMatcher(matcher: M) -> FullMatcherFunc { - return FullMatcherFunc { actualExpression, failureMessage, expectingToNotMatch in - return matcher.matches(actualExpression, failureMessage: failureMessage) != expectingToNotMatch + public func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { + let pass = !matcher(actualExpression, failureMessage) + if attachNilErrorIfNeeded(actualExpression, failureMessage: failureMessage) { + return false + } + return pass } -} -public func basicMatcherWithFailureMessage(matcher: M, postprocessor: (FailureMessage) -> Void) -> NonNilMatcherFunc { - return NonNilMatcherFunc { actualExpression, failureMessage in - let result = matcher.matches(actualExpression, failureMessage: failureMessage) - postprocessor(failureMessage) - return result + internal func attachNilErrorIfNeeded(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { + if actualExpression.evaluate() == nil { + failureMessage.postfixActual = " (use beNil() to match nils)" + return true + } + return false } } diff --git a/src/Pods/Nimble/Nimble/Wrappers/NonNilMatcherWrapper.swift b/src/Pods/Nimble/Nimble/Wrappers/NonNilMatcherWrapper.swift deleted file mode 100644 index cbd40de..0000000 --- a/src/Pods/Nimble/Nimble/Wrappers/NonNilMatcherWrapper.swift +++ /dev/null @@ -1,56 +0,0 @@ -struct NonNilMatcherWrapper: Matcher { - let matcher: M - let nilMessage = " (use beNil() to match nils)" - - init(_ matcher: M) { - self.matcher = matcher - } - - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - let pass = matcher.matches(actualExpression, failureMessage: failureMessage) - if actualExpression.evaluate() == nil { - failureMessage.postfixActual = nilMessage - return false - } - return pass - } - - func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - let pass = matcher.doesNotMatch(actualExpression, failureMessage: failureMessage) - if actualExpression.evaluate() == nil { - failureMessage.postfixActual = nilMessage - return false - } - return pass - } -} - -struct NonNilBasicMatcherWrapper: Matcher { - let matcher: M - - init(_ matcher: M) { - self.matcher = matcher - } - - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - return matcher.matches(actualExpression, failureMessage: failureMessage) - } - - func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - return !matcher.matches(actualExpression, failureMessage: failureMessage) - } -} - -extension Expectation { - public func to(matcher: U) { - to(FullMatcherWrapper(matcher: NonNilMatcherWrapper(NonNilBasicMatcherWrapper(matcher)), to: "to", toNot: "to not")) - } - - public func toNot(matcher: U) { - toNot(FullMatcherWrapper(matcher: NonNilMatcherWrapper(NonNilBasicMatcherWrapper(matcher)), to: "to", toNot: "to not")) - } - - public func notTo(matcher: U) { - toNot(matcher) - } -} diff --git a/src/Pods/Nimble/Nimble/Wrappers/ObjCMatcher.swift b/src/Pods/Nimble/Nimble/Wrappers/ObjCMatcher.swift index 6f86a14..daf9597 100644 --- a/src/Pods/Nimble/Nimble/Wrappers/ObjCMatcher.swift +++ b/src/Pods/Nimble/Nimble/Wrappers/ObjCMatcher.swift @@ -1,111 +1,37 @@ import Foundation -struct ObjCMatcherWrapper : Matcher { - let matcher: NMBMatcher - let to: String - let toNot: String - - func matches(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - failureMessage.to = to - return matcher.matches(({ actualExpression.evaluate() }), failureMessage: failureMessage, location: actualExpression.location) - } - - func doesNotMatch(actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - failureMessage.to = toNot - return matcher.doesNotMatch(({ actualExpression.evaluate() }), failureMessage: failureMessage, location: actualExpression.location) - } -} - -// Equivalent to Expectation, but simplified for ObjC objects only -public class NMBExpectation : NSObject { - let _actualBlock: () -> NSObject! - var _negative: Bool - let _file: String - let _line: UInt - var _timeout: NSTimeInterval = 1.0 - - public init(actualBlock: () -> NSObject!, negative: Bool, file: String, line: UInt) { - self._actualBlock = actualBlock - self._negative = negative - self._file = file - self._line = line - } - - public var withTimeout: (NSTimeInterval) -> NMBExpectation { - return ({ timeout in self._timeout = timeout - return self - }) - } - - public var to: (matcher: NMBMatcher) -> Void { - return ({ matcher in - expect(file: self._file, line: self._line){ self._actualBlock() as NSObject? }.to( - ObjCMatcherWrapper(matcher: matcher, to: "to", toNot: "to not") - ) - }) - } - - public var toNot: (matcher: NMBMatcher) -> Void { - return ({ matcher in - expect(file: self._file, line: self._line){ self._actualBlock() as NSObject? }.toNot( - ObjCMatcherWrapper(matcher: matcher, to: "to", toNot: "to not") - ) - }) - } - - public var notTo: (matcher: NMBMatcher) -> Void { return toNot } - - public var toEventually: (matcher: NMBMatcher) -> Void { - return ({ matcher in - expect(file: self._file, line: self._line){ self._actualBlock() as NSObject? }.toEventually( - ObjCMatcherWrapper(matcher: matcher, to: "to", toNot: "to not"), - timeout: self._timeout - ) - }) - } - - public var toEventuallyNot: (matcher: NMBMatcher) -> Void { - return ({ matcher in - expect(file: self._file, line: self._line){ self._actualBlock() as NSObject? }.toEventuallyNot( - ObjCMatcherWrapper(matcher: matcher, to: "to", toNot: "to not"), - timeout: self._timeout - ) - }) - } -} - -typealias MatcherBlock = (actualExpression: Expression, failureMessage: FailureMessage, location: SourceLocation) -> Bool -typealias FullMatcherBlock = (actualExpression: Expression, failureMessage: FailureMessage, location: SourceLocation, shouldNotMatch: Bool) -> Bool +public typealias MatcherBlock = (actualExpression: Expression, failureMessage: FailureMessage) -> Bool +public typealias FullMatcherBlock = (actualExpression: Expression, failureMessage: FailureMessage, shouldNotMatch: Bool) -> Bool @objc public class NMBObjCMatcher : NMBMatcher { let _match: MatcherBlock let _doesNotMatch: MatcherBlock let canMatchNil: Bool - init(canMatchNil: Bool, matcher: MatcherBlock, notMatcher: MatcherBlock) { + public init(canMatchNil: Bool, matcher: MatcherBlock, notMatcher: MatcherBlock) { self.canMatchNil = canMatchNil self._match = matcher self._doesNotMatch = notMatcher } - convenience init(matcher: MatcherBlock) { + public convenience init(matcher: MatcherBlock) { self.init(canMatchNil: true, matcher: matcher) } - convenience init(canMatchNil: Bool, matcher: MatcherBlock) { - self.init(canMatchNil: canMatchNil, matcher: matcher, notMatcher: ({ actualExpression, failureMessage, location in - return !matcher(actualExpression: actualExpression, failureMessage: failureMessage, location: location) + public convenience init(canMatchNil: Bool, matcher: MatcherBlock) { + self.init(canMatchNil: canMatchNil, matcher: matcher, notMatcher: ({ actualExpression, failureMessage in + return !matcher(actualExpression: actualExpression, failureMessage: failureMessage) })) } - convenience init(matcher: FullMatcherBlock) { + public convenience init(matcher: FullMatcherBlock) { self.init(canMatchNil: true, matcher: matcher) } - convenience init(canMatchNil: Bool, matcher: FullMatcherBlock) { - self.init(canMatchNil: canMatchNil, matcher: ({ actualExpression, failureMessage, location in - return matcher(actualExpression: actualExpression, failureMessage: failureMessage, location: location, shouldNotMatch: false) - }), notMatcher: ({ actualExpression, failureMessage, location in - return matcher(actualExpression: actualExpression, failureMessage: failureMessage, location: location, shouldNotMatch: true) + public convenience init(canMatchNil: Bool, matcher: FullMatcherBlock) { + self.init(canMatchNil: canMatchNil, matcher: ({ actualExpression, failureMessage in + return matcher(actualExpression: actualExpression, failureMessage: failureMessage, shouldNotMatch: false) + }), notMatcher: ({ actualExpression, failureMessage in + return matcher(actualExpression: actualExpression, failureMessage: failureMessage, shouldNotMatch: true) })) } @@ -118,11 +44,10 @@ typealias FullMatcherBlock = (actualExpression: Expression, failureMes } public func matches(actualBlock: () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { - let expr = Expression(expression: actualBlock, location: SourceLocation()) + let expr = Expression(expression: actualBlock, location: location) let result = _match( actualExpression: expr, - failureMessage: failureMessage, - location: location) + failureMessage: failureMessage) if self.canMatch(Expression(expression: actualBlock, location: location), failureMessage: failureMessage) { return result } else { @@ -131,11 +56,10 @@ typealias FullMatcherBlock = (actualExpression: Expression, failureMes } public func doesNotMatch(actualBlock: () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { - let expr = Expression(expression: actualBlock, location: SourceLocation()) + let expr = Expression(expression: actualBlock, location: location) let result = _doesNotMatch( actualExpression: expr, - failureMessage: failureMessage, - location: location) + failureMessage: failureMessage) if self.canMatch(Expression(expression: actualBlock, location: location), failureMessage: failureMessage) { return result } else { diff --git a/src/Pods/Nimble/Nimble/objc/DSL.h b/src/Pods/Nimble/Nimble/objc/DSL.h index 8186e1f..70a1d9f 100644 --- a/src/Pods/Nimble/Nimble/objc/DSL.h +++ b/src/Pods/Nimble/Nimble/objc/DSL.h @@ -106,11 +106,11 @@ NIMBLE_SHORT(id allPass(id matcher), typedef void (^NMBWaitUntilTimeoutBlock)(NSTimeInterval timeout, void (^action)(void (^)(void))); typedef void (^NMBWaitUntilBlock)(void (^action)(void (^)(void))); -NIMBLE_EXPORT NMBWaitUntilTimeoutBlock nmb_wait_until_timeout_builder(NSString *file, NSUInteger line); -NIMBLE_EXPORT NMBWaitUntilBlock nmb_wait_until_builder(NSString *file, NSUInteger line); +NIMBLE_EXPORT NMBWaitUntilTimeoutBlock NMB_waitUntilTimeoutBuilder(NSString *file, NSUInteger line); +NIMBLE_EXPORT NMBWaitUntilBlock NMB_waitUntilBuilder(NSString *file, NSUInteger line); -#define NMB_waitUntilTimeout nmb_wait_until_timeout_builder(@(__FILE__), __LINE__) -#define NMB_waitUntil nmb_wait_until_builder(@(__FILE__), __LINE__) +#define NMB_waitUntilTimeout NMB_waitUntilTimeoutBuilder(@(__FILE__), __LINE__) +#define NMB_waitUntil NMB_waitUntilBuilder(@(__FILE__), __LINE__) #ifndef NIMBLE_DISABLE_SHORT_SYNTAX #define expect(...) NMB_expect(^id{ return (__VA_ARGS__); }, __FILE__, __LINE__) diff --git a/src/Pods/Nimble/Nimble/objc/DSL.m b/src/Pods/Nimble/Nimble/objc/DSL.m index 9a33271..a36275a 100644 --- a/src/Pods/Nimble/Nimble/objc/DSL.m +++ b/src/Pods/Nimble/Nimble/objc/DSL.m @@ -1,6 +1,14 @@ #import #import +SWIFT_CLASS("_TtC6Nimble7NMBWait") +@interface NMBWait : NSObject + ++ (void)untilTimeout:(NSTimeInterval)timeout file:(NSString *)file line:(NSUInteger)line action:(void(^)())action; ++ (void)untilFile:(NSString *)file line:(NSUInteger)line action:(void(^)())action; + +@end + NIMBLE_EXPORT NMBExpectation *NMB_expect(id(^actualBlock)(), const char *file, unsigned int line) { return [[NMBExpectation alloc] initWithActualBlock:actualBlock negative:NO @@ -92,13 +100,13 @@ return [NMBObjCMatcher raiseExceptionMatcher]; } -NIMBLE_EXPORT NMBWaitUntilTimeoutBlock nmb_wait_until_timeout_builder(NSString *file, NSUInteger line) { +NIMBLE_EXPORT NMBWaitUntilTimeoutBlock NMB_waitUntilTimeoutBuilder(NSString *file, NSUInteger line) { return ^(NSTimeInterval timeout, void (^action)(void (^)(void))) { [NMBWait untilTimeout:timeout file:file line:line action:action]; }; } -NIMBLE_EXPORT NMBWaitUntilBlock nmb_wait_until_builder(NSString *file, NSUInteger line) { +NIMBLE_EXPORT NMBWaitUntilBlock NMB_waitUntilBuilder(NSString *file, NSUInteger line) { return ^(void (^action)(void (^)(void))) { [NMBWait untilFile:file line:line action:action]; }; diff --git a/src/Pods/Nimble/README.md b/src/Pods/Nimble/README.md index 42014b1..b6e81cf 100644 --- a/src/Pods/Nimble/README.md +++ b/src/Pods/Nimble/README.md @@ -1,6 +1,6 @@ # Nimble -[![Build Status](https://travis-ci.org/Quick/Nimble.svg?branch=swift-1.1)](https://travis-ci.org/Quick/Nimble) +[![Circle CI](https://circleci.com/gh/Quick/Nimble/tree/master.svg?style=svg&circle-token=6115c5d83f74a6c59a484dd8921b97096404a5f3)](https://circleci.com/gh/Quick/Nimble/tree/master) Use Nimble to express the expected outcomes of Swift or Objective-C expressions. Inspired by @@ -99,7 +99,7 @@ expect(seagull.squawk).to(equal("Squee!")) ```objc // Objective-C -#import +@import Nimble; expect(seagull.squawk).to(equal(@"Squee!")); ``` @@ -123,7 +123,7 @@ expect(seagull.squawk).notTo(equal("Oh, hello there!")) ```objc // Objective-C -#import +@import Nimble; expect(seagull.squawk).toNot(equal(@"Oh, hello there!")); expect(seagull.squawk).notTo(equal(@"Oh, hello there!")); @@ -212,6 +212,11 @@ expectAction([exception raise]).to(raiseException(). named(NSInternalInconsistencyException). reason("Not enough fish in the sea"). userInfo(@{@"something": @"is fishy"})); + +// You can also pass a block for custom matching of the raised exception +expectAction(exception.raise()).to(raiseException().satisfyingBlock(^(NSException *exception) { + expect(exception.name).to(beginWith(NSInternalInconsistencyException)); +})); ``` ## C Primitives @@ -346,7 +351,7 @@ to keep in mind when using Nimble in Objective-C: ```objc // Objective-C - #import + @import Nimble; expect(@(1 + 1)).to(equal(@2)); expect(@"Hello world").to(contain(@"world")); @@ -372,7 +377,7 @@ importing Nimble: ```objc #define NIMBLE_DISABLE_SHORT_SYNTAX 1 -#import +@import Nimble; NMB_expect(^{ return seagull.squawk; }, __FILE__, __LINE__).to(NMB_equal(@"Squee!")); ``` @@ -631,15 +636,11 @@ expect(actual).to(raiseException(named: name)) // Passes if actual raises an exception with the given name and reason: expect(actual).to(raiseException(named: name, reason: reason)) -// Passes if actual raises an exception with a name equal "a name" -expect(actual).to(raiseException(named: equal("a name"))) - -// Passes if actual raises an exception with a reason that begins with "a r" -expect(actual).to(raiseException(reason: beginWith("a r"))) - -// Passes if actual raises an exception with a name equal "a name" -// and a reason that begins with "a r" -expect(actual).to(raiseException(named: equal("a name"), reason: beginWith("a r"))) +// Passes if actual raises an exception and it passes expectations in the block +// (in this case, if name begins with 'a r') +expect { exception.raise() }.to(raiseException { exception in + expect(exception.name).to(beginWith("a r")) +}) ``` ```objc @@ -654,15 +655,11 @@ expect(actual).to(raiseException().named(name)) // Passes if actual raises an exception with the given name and reason: expect(actual).to(raiseException().named(name).reason(reason)) -// Passes if actual raises an exception with a name equal "a name" -expect(actual).to(raiseException().withName(equal("a name"))) - -// Passes if actual raises an exception with a reason that begins with "a r" -expect(actual).to(raiseException().withName(withReason(beginWith(@"a r"))) - -// Passes if actual raises an exception with a name equal "a name" -// and a reason that begins with "a r" -expect(actual).to(raiseException().withName(equal("a name")).withReason(beginWith(@"a r"))) +// Passes if actual raises an exception and it passes expectations in the block +// (in this case, if name begins with 'a r') +expect(actual).to(raiseException().satisfyingBlock(^(NSException *exception) { + expect(exception.name).to(beginWith(@"a r")); +})); ``` Note: Swift currently doesn't have exceptions. Only Objective-C code can raise @@ -997,7 +994,7 @@ public func beginWith NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage, location in + return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in let actual = actualExpression.evaluate() let expr = actualExpression.cast { $0 as? NMBOrderedCollection } return beginWith(expected).matches(expr, failureMessage: failureMessage) diff --git a/src/Pods/Pods.xcodeproj/project.pbxproj b/src/Pods/Pods.xcodeproj/project.pbxproj index 1074f41..306390f 100644 --- a/src/Pods/Pods.xcodeproj/project.pbxproj +++ b/src/Pods/Pods.xcodeproj/project.pbxproj @@ -8,748 +8,744 @@ /* Begin PBXBuildFile section */ 0009F5D38CFE7901ED5457048456C36D /* POPAnimatorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E7728EF3FF3398E815CB1CCF42CBC2 /* POPAnimatorPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 001D6988F3BFDAB0BE07D0405AC58139 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = 983C0C513420899DB73E6341F0A12B43 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 002282FF9A109A33B2540469DC3CE83F /* KIF-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FF546ED49400843116E9B9D787EB4 /* KIF-dummy.m */; }; - 00C04D3E94F96887F061EC5329FCE905 /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = AE56208F2505A11D9640FF5D3D3C11B6 /* NMBExceptionCapture.m */; }; - 02B300ADCCE13816914AC2AAE123756C /* UIEvent+KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBBEF180F7C83EB57CDEF44F4D82F1 /* UIEvent+KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 035A10FBC2E283E867612B01FBAFC9F6 /* NSException-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C367F519EF3A0C1BBE24CE6B36BDDF /* NSException-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03CAF36D1E0082A1F670322145183766 /* JTSImageViewController-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 14228DCFE7BC1F1D2FE58E7C8559C8FA /* JTSImageViewController-dummy.m */; }; - 04F6BC6DB811E85D8E5EC3A9474B3F2C /* CGGeometry-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A1024F31854EAD79EC5D7F7481E60C /* CGGeometry-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 007918BC8156FDD535DD7A5FFC0BD616 /* UIView-Debugging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B394F5B770D37085919D03E52F17918 /* UIView-Debugging.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 00995563BEB95C15DD0BF291360BEEBD /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ADBF919CE04B632187FC04B32D4E50B /* World.swift */; }; + 010D42207B1B88F57CBB188510698D0B /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA3A8EF5FFD884DB1B5D37102EC6EAA7 /* AllPass.swift */; }; + 022DAA09A03F5B9ECE13654CDFF690B2 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BB43F30B0C3D230FBC16FC1E0A889B /* DSL.swift */; }; + 02983CC18A92486D27E12C2C6BF9416E /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53F42045FF26A0DD6DAD6C4B000B43 /* BeGreaterThanOrEqualTo.swift */; }; + 0466339F5F62D9A4BAAF09D80CA90AFC /* NSException-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 035D275BA5343C1353C238795B168BF7 /* NSException-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 052FB42234329B48043CDAAD2BEB13E6 /* SSArrayDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F03D7CE4DC4E857B7C0991F55189D72 /* SSArrayDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0549405ADA2862B483994CBAD00BACA3 /* KIFSystemTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C3F2BE48FDE522D3FB342C32F373B0A /* KIFSystemTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05D8AF36C3BA909454B946884EE913F2 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = B60F652ECFF5E8AEFADDD53F5CE3B82B /* BeginWith.swift */; }; 060F17E4A9001E8E0F7B60BA6EF49069 /* POPAnimationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = DA447E371077258D9DC3FC29DFC1632A /* POPAnimationExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0645ED0B535B6646D762566A02148024 /* TTTAttributedLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 8104D344ABCA9FC578ADF8CA11F4C201 /* TTTAttributedLabel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 068C772EAD412A5DEF12DDF164875BA1 /* KIFTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = D6C1865120E97306E542B3BFCE6BF5C9 /* KIFTestActor.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 08450B67134B00154D33C4DE4F587918 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80618011C4C7C5C6FC6C6F3E4B44837E /* BeAnInstanceOf.swift */; }; + 08460171AAC730278EFAA303AA199075 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BB72E2B37A07BEAC2648FDC5394A8C /* Validation.swift */; }; + 086694D8F186B98A183090106C9A3213 /* JTSImageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FFDA6E1850A160A5A789334B2FF87B8 /* JTSImageInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08C161AFB72B36858F3D0041FC1E4330 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58BEFE52277E40721C5945997E3C0D00 /* EndWith.swift */; }; 098777988FC937D110D4926619705B12 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + 09EAD6D74C2FBD545E2BFEC6F5E130DA /* KIFTestStepValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = FB2DB4F317BEF45BEC62C2FAA229126B /* KIFTestStepValidation.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 0BD3DBF286F2B52233D586C747BEBDB2 /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C3FD0F350AD317741D270236ED41E55 /* Closures.swift */; }; + 0DE38C6755E9FAE8AE687AC58242D3C2 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FB37AA4C0E9EA8C536C48528DD71B0D /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E39502C5F13F4791CBE95BE6C8F4F81 /* KIFTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 69AD8BD7FCC1E3E6CE8CEE0AAF005BFA /* KIFTestCase.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 0E5EF9229351B576461C710E0394D84B /* POPPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C98DA9122E860CE8F45C8AE646A4749 /* POPPropertyAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 101AAEBA93C2A0A2A94E6BC386EAC9BF /* UIScrollView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B878A23F5526A96B72F14C8DE50D54 /* UIScrollView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 104F549D01B2765A0510292B3DFE9A2B /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A3D5BAA21C1105C935D38828A825060 /* Functional.swift */; }; + 113FDE2E23CA349923662481E01F0CE0 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B8A72200325E7D37C8BCE4F261CF0B /* QuickSpec.m */; }; + 11A9B464E6DEB9575F836E2B6A8B02AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 397E935E1758C55C5428F19A235024C9 /* UIKit.framework */; }; + 11CC12F1D0E567BA1DB1F017451529EB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + 1347FB18B1F2BCC42C22CD732CE9A9B2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B136A6325B1A5354FF5E227EAF2CD08E /* CoreGraphics.framework */; }; 13955DF6D646BA0273220E3A225B9D6B /* SSExpandingDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = ACE457106000F6DDAB2B35B1CF706ACC /* SSExpandingDataSource.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + 13A1EA169C63584AC1684F863F8C8633 /* ObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C16C7DB602EBBEFD0FEF4A685EAF5B /* ObjCMatcher.swift */; }; + 13BC32876F5E60E6524E354F7606AAF0 /* UITouch-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A7DC1108D53AFB15564AF955DEE0328 /* UITouch-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13C05FDDA4CB7D07DA5D62D08CA74122 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA2A3B9A02E4B84D316CCA3383E0CFCB /* Filter.swift */; }; 146BBDE24E056FFBA9110AE2C586A827 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30ABDDB885B263A81EE4BCC13B55D2A8 /* ConstraintItem.swift */; }; - 14D47E4F6642D0A022BE0A297BC5E1A6 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA5991416A6C2ADE8FFC71DABDBF8E29 /* World+DSL.swift */; }; - 158F39C63BAC709851EE613132BFD455 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC9DFE87A486FCE6105E4EDCC3DC2CC5 /* CoreText.framework */; }; + 1484AB9EEA0329484C15CA8E6B99A844 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F0DBE09CB013241C192D440C8F87D92 /* ExampleHooks.swift */; }; + 150445C7B3C4DCCCD4BC73A29470B229 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = EFEE802E4F1CEA5AFC4B4450BE52C161 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1628679CF5B26F4D017FB629F5E5A4AF /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D037E16E49485FD4DB696430CCB0A210 /* ConstraintMaker.swift */; }; - 1934EA88503742BB6C666DBF2CE84F60 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB05123443C01AD94145A437BA6FD55 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 179B6D255528FFF92F434A4A08B4DE64 /* KIFTypist.m in Sources */ = {isa = PBXBuildFile; fileRef = 8701B65DC7C09DDA31B53BE85E9A89DD /* KIFTypist.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 1A221EF9A08464C77CCDDC2FFDD9D90C /* UIAutomationHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 062A78CA879E0ED84A17F3796E3B6295 /* UIAutomationHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1A43E56EE49F5D94E8B388575BCF5655 /* POPAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E361D860C526E3BA01EC6C9DEF63DDD6 /* POPAction.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1AE4E14DE31BAA9C7E89F5F9C0CBD50F /* POPAnimationEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C51DACCC217294EE5BC99120A7F4080E /* POPAnimationEventInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1BD727F07D7FDDDE66274EBD3D2810E5 /* POPGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = E94516303AC2A52B95A18178F613F33F /* POPGeometry.mm */; }; 1BD8DB8F452788363F007534F9C1378A /* TTTAttributedLabel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DE7F5AAD936B52BA7BCBFED95169BEA6 /* TTTAttributedLabel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1C168686C61AEC48FC2D87FF91636FDB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; 1E8F4F89C531C7A52166F4316C450C89 /* SSDataSources-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F408D3D7EBB4662BEF183A8BB92EB1C5 /* SSDataSources-dummy.m */; }; - 1F9E8FC2764F92EDC7F0864AD86B60DD /* CYRTextStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = CC9B4658655549EA9CCA56FC9CC90BCA /* CYRTextStorage.m */; }; - 22102E443851FF99F1DAE62046108051 /* UITableView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DC0B9275C255E70810A66865D2AB2E7 /* UITableView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23B66E4691AA4FFF3E7FF895B6D19A79 /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE817D03B67EEC5CBA8CB2D180BFB417 /* AllPass.swift */; }; - 24512E2D6CCD3E66231FFF4CEB61C33E /* BasicMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BF5D01A54960E559E96B8C7938A5631 /* BasicMatcherWrapper.swift */; }; - 248C2FF47C9FEA32F7CABD380173F04D /* UIImage+JTSImageEffects.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E62A74ECEAF84C75D6BC1EB2585E9D /* UIImage+JTSImageEffects.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 26098CD761EFCAF2035220D3B9D8BE0E /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437B75CB837A4C95ABE7081B94D54D23 /* MatcherProtocols.swift */; }; + 2153622CC085CAC68DEDFE1BF768E153 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9828A9F58180B6EF3B6EEB345E5C27EB /* BeLessThanOrEqual.swift */; }; + 2435DAB8651AC35B748EF1DD1C059F9F /* UIView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CBF6CEB14B406FBA2015072D1759A52 /* UIView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2569BE73468A680283C2F1F45EBA4534 /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B4688EF7FA44258A94CA6DC682F27E /* ExampleMetadata.swift */; }; + 261CE9FE28B9C92C97B57F0F5AF6D398 /* Manager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9E891CB9DF8657942E071D38C98E43 /* Manager.swift */; }; + 270B7DD0330572926436952CBECD7916 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FA1F276813E47738EA734A428A55F29 /* Expectation.swift */; }; 276DD0F65CB68B531F3B6172388D5B32 /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 721020A02B66A14D61C9E07D18D2448D /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2927B6175F99F7EFE9491AB4A41872F7 /* POPLayerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BF8A7B711739F2C5CA6496D03C7CB7 /* POPLayerExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 29ABD0A2260C9E4E4FE13886545F9AA9 /* NSError-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D6E38888B2D2A7A629BC69149EFEB1C /* NSError-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 29F4AB97F9A875426FC1612E41E9B087 /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87BB7874A32228CFA47876C3A5DF07A5 /* BeAKindOf.swift */; }; 2B2BB4AAE6790C72E3E75732423A30A2 /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = B31F3C641AAB64AAE4619AFC361FB94D /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2B2C3B341EF90D85F71DA6268FF82507 /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D065AE32A9E56898F5AFF1D81EC34B0 /* DSL+Wait.swift */; }; - 2BCD1EC9383F08BEA423F51EADD33FD5 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C37AF22394B563EF6316337CF16DB14E /* Filter.swift */; }; + 2B35387A4CCE54ECEA6C37380E4666D7 /* ObjCExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955DF05579F0D466971C213A9556DE30 /* ObjCExpectation.swift */; }; + 2BBE245DFFDD461F9E868060E680B7C5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D11FFC40B46BA1D66BB69626C75B98E3 /* ImageIO.framework */; }; + 2C428722E675B36E92054A2892F9C6E5 /* UIWindow-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F3CDA150B06F676A6067EAD427EC2A /* UIWindow-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 2CA6DF756BBEDEE62FB51C48B04FD525 /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF361654C5142AF241256F6E523A093 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2CC4E7443084C2F6688CC4551074B092 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 397E935E1758C55C5428F19A235024C9 /* UIKit.framework */; }; 2F2751038EE5ED3767F098AC49F5D94C /* Pods-Bequest-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 836E7B98499CB1A351E14668AB5B32A8 /* Pods-Bequest-dummy.m */; }; + 2FF215FDC27D542DF27FC2DAD161DCA2 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76750EAB7AAA1536D32EC294EFAA561A /* Stringers.swift */; }; + 307BCBEC8D65F4F583A02A548FB4E620 /* CGGeometry-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F52A5ED228D7ADB20FFFC9FA6D215F /* CGGeometry-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 30C0C521CAFECFBDB48935B46D02685C /* NSBundle-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D2CA23EAFFF389CDB8493E5BCA83167 /* NSBundle-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 3126ADB60FA0923B6A0BCA18529D819D /* POPSpringAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 27091F10BC8BA7BB110438A184A99BDF /* POPSpringAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 31E3C10D854DB07B87998CF6D7336FD1 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C24DABE538BC6499E3C0B1F35C62F02A /* CoreData.framework */; }; + 33B1CF9EE9C30160D560CB08101F3F50 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 11921B0F41019368FEECD4D0B4A10BDF /* Quick-dummy.m */; }; + 34992C93702DDE7F1F54BFEFE73CBF4A /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C1E52E63883123E38C86D4E1451DA1 /* FailureMessage.swift */; }; + 3579B4868C84DB1FE547DAAB7BD1C24E /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6760C75C78D828F56BED77EFCBA3047B /* BeIdenticalTo.swift */; }; 358B45788E04191139B175A8B55D0305 /* POPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D848FAE6D8BA134F5FD0D589F886476 /* POPVector.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 35D13FC5714ACA7FAB7A1D91283239E5 /* CYRTextView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C7DD1670DDC0C9489B52862E424F303 /* CYRTextView-dummy.m */; }; - 37A28A6DC6E82253DD6BCE93A0BEFA18 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1274BD1A86317611969E3F0E49048D31 /* BeLessThan.swift */; }; 38C307B30322F47D909A82F572218548 /* POPAnimationRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 82132FCBE7E9C1635E35BCF78B152734 /* POPAnimationRuntime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 39EC2E8E4A9FE96516A0226C2EF0E2F8 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB78ADC58737B0400A0BA46CE14A7E5 /* Configuration.swift */; }; - 3A83FB2A5FD24FFE8AB7AA596195D853 /* UIWindow-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AE10E0E375FC9C8A04916DDCC98BB67 /* UIWindow-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C8E05E0CF716D772515E30FD7481E16 /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D7652F17DE602CFD8B5EFCC0BB3731F /* Closures.swift */; }; - 3CE78CB679D5BACDF1182ECF9AD0B829 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = E56650250E429AE0B79D642E1DCC7B70 /* DSL.m */; }; - 3DBFDE0764894289A1BAA3AEFD7A4FDF /* CYRToken.m in Sources */ = {isa = PBXBuildFile; fileRef = BA26307755DEE022B98617FC8146C281 /* CYRToken.m */; }; + 3B7542547F32BA8AE9BEE3B5B10E430D /* UIApplication-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C7CACBF53DA3D4391494BDD84A0961B /* UIApplication-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 3E20651FB5EDED062C1E22B607F485FD /* SSSection.m in Sources */ = {isa = PBXBuildFile; fileRef = D30AB0E30F239C6313AADA2E3224590F /* SSSection.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 4079483A58DB57303441D8C8D3363F63 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 036FE32CC86F2C51B51B6E02EB054FA2 /* Alamofire-dummy.m */; }; - 421553E28971BC0CA47C849244F5DB57 /* KIFSystemTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = E379BE7E83580A321E09D3A327F56DFD /* KIFSystemTestActor.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 440E4DA73492CE61DA90990A31C03C9F /* UIView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DC391260C084E1FA9A9DEF31252D787E /* UIView-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 3FF3B211BBCE2CD4502BCE85F3CF9DA1 /* NSFileManager-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE6F423FEBCED9012594B701701A3F5 /* NSFileManager-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 422096F6D5D4D30D07214A4C4D30A1FB /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D35921395040F7CF27C93219AA395CC /* ExampleGroup.swift */; }; + 449AF98AF2FD7834C500D434A74BD419 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19AA3DAB83839B4BD80EA3E5F24AB029 /* NimbleXCTestHandler.swift */; }; + 44DB6BB3C7A83A4FD093954889DCAA0B /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 37D24890E15C71EC3086568721D9FBEA /* QCKDSL.m */; }; 4629DF6D86A53102243A27924715BE6D /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DCD2F19C4D1EB749FFD896AF7A1C5A99 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 466A345861F990352FFC94F4E6CB8B8F /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2BBA7BFB7812D7935B20277FC701E7B /* ResponseSerialization.swift */; }; - 466FD2B1F57B841C374622E915E5C0DA /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C222836E3AFC21A88B3F064D9CB083 /* Alamofire.swift */; }; + 464518EE5050E150794654B29E06F6E0 /* CYRLayoutManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C6565E2B17227A7C515119434DF4176E /* CYRLayoutManager.m */; }; + 46D4C611B3138FF303AE8834B997F57C /* UIEvent+KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 405B4502D4AB2D836108D1FED5C43C08 /* UIEvent+KIFAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 470449147BDA8970551CB09A5316F7D1 /* POPSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = D9AF7E5D7CB2963C2EF19E9C7D465231 /* POPSpringAnimation.mm */; }; - 4709CCFD6F322FFF8FE3FB05370DC181 /* NSFileManager-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 67AF72F76F678FBECE6D876DC06780C4 /* NSFileManager-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 4761AD96E4D48E65AE1786B4F5E859D0 /* JTSSimpleImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = AD8459A2B4424D6434E1B04646BD9F20 /* JTSSimpleImageDownloader.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 4803C3BF93003E216D7436F69071E849 /* KIF-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E944AF0B4742B96E444369C667F8FC29 /* KIF-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 48CED3E879671A899C9CFB80ECEBC0A9 /* UIApplication+JTSImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99D19B9C51464D38F037647963ED567D /* UIApplication+JTSImageViewController.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; 49500C7F1898258A476B7D331892C1E7 /* POPAnimationTracerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 67BD5EA9ED222D571C909B92355A7943 /* POPAnimationTracerInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 497E35FC20BE60DF772F3AF660607334 /* POP.h in Headers */ = {isa = PBXBuildFile; fileRef = FBCCE00E4FC72B3012CEAE7ED5F5167D /* POP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 49974904AB9EB9FB1B2572A064383E86 /* NSFileManager-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8209D37BD19D6E89AFA0B71DCC801C /* NSFileManager-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4AE2D24BA226BBE7DD3328D0FBFC668C /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */; }; + 4AE30D0CD5315BB2689B8304DACF6AD5 /* Upload.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE46934D5B27CDB63C71BFCE7421A0F6 /* Upload.swift */; }; 4B6E0BC1D1B32E4DD9B65F2950F8C415 /* POPAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = DC311913D559D3CAFB3D4B69A0A62736 /* POPAnimation.mm */; }; - 4BE910F5770D0CB0856232ECF16915D7 /* XCTestCase-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = ABE851CF4FC6AAE3F3D99D49FEA9C343 /* XCTestCase-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4D2DFC6A77ABDD4D9E355189E7252491 /* UIView-Debugging.h in Headers */ = {isa = PBXBuildFile; fileRef = DF61F7DF564800B373C387A903B6932B /* UIView-Debugging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DBB691C1128ECD8B3F59C4B4367DB16 /* UIView-Debugging.m in Sources */ = {isa = PBXBuildFile; fileRef = 4048B66EDA617685CCC5C61BFF8DC6B5 /* UIView-Debugging.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 4DF8010E86C0913B48A6367EA512C2F9 /* JTSAnimatedGIFUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4207D4FAC8BCC7D946C89454832601 /* JTSAnimatedGIFUtility.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 4E48B46A18B070A6418D834B69D2549C /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = E34161F2F67ACE96157134927E148AED /* BeGreaterThanOrEqualTo.swift */; }; + 4C1854B885811831934522AA34E23F0B /* KIFSystemTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = 475D0D878B7489C0C645C3B07FF33C2D /* KIFSystemTestActor.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 4CAF7AB24D945DB3E9FB939CAAEADDE0 /* CYRTextView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AF8E190716C2C0C1BCCB4917CF835086 /* CYRTextView-dummy.m */; }; + 4D85B195DFCA008ED14783D68C90BD93 /* NSString+QCKSelectorName.m in Sources */ = {isa = PBXBuildFile; fileRef = F194CEDD1266262BAD0A980E4FBBDB34 /* NSString+QCKSelectorName.m */; }; 4EF27DFCB58938A4DF3C0C759B885029 /* SSBaseTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1422EF9D4580B4C4B64CB69D6110EAD6 /* SSBaseTableCell.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 4F351C68A79A9A2811C7FA52E95ABC8E /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFEBEAF2FB99F85583067406562491A3 /* Example.swift */; }; - 4F978C485B057A6E4F1C02E08D452C46 /* UIScrollView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C11FA47D82A7C693CC3EC15B24F384CD /* UIScrollView-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 5163C786DE00B201B1649B1874DC4407 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 214DA1CE5B42230841839DFB2316442C /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 509EBE2639F8AF219606F6E594559B45 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 3897373441411B469F9993E28898F233 /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; 52E6163533D1C90D6DDDACD58C618F70 /* TTTAttributedLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = A41053A37D82FAAC3F512BCD06C5F77C /* TTTAttributedLabel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 533C285F5515CAAFED18AD2922CC2308 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269C3D45634633F92240A75F9C1A2782 /* BeNil.swift */; }; 5352C992DED1551F1734AD07E388AEFF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - 535DAED43C53B1F72762DAF43C30EECF /* UIView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A468974117B51BBA51F4F6A4F01DC941 /* UIView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 537AF1E5789F2A1EA09BD78C94DFE9ED /* POPCustomAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = ADE932DFE1DD76AC0D15F958BECDE899 /* POPCustomAnimation.mm */; }; 53E721E1E1AE4D029C7CAABEDB142034 /* POPDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4EBCC76422111CCD5387F73F46298427 /* POPDecayAnimation.mm */; }; + 545FFC584BC8B1DD9EBE7C5355C4E1C6 /* XCTestCase-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FF53F1392CA25B5C1ADAE5C3CA1E6495 /* XCTestCase-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 55F992E8BFBEBB5416A634916D7F155E /* SSBaseCollectionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8D7BB186F179D69135F3536A7FF05B /* SSBaseCollectionCell.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 563A4BE0A6C21C6F38534D231E356A9F /* CYRLayoutManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44363D6432F3FF3BC36B21B63954CE28 /* CYRLayoutManager.m */; }; - 565F6CC3F956923C4D0EAA243A5B5DDC /* JTSAnimatedGIFUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = DBCAE34641DD4B51B32A7BCB44A1D247 /* JTSAnimatedGIFUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5781D0310253A1E44E04A262A0C79C9F /* Pods-BequestTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E64C2BD53937D60CF1AE22F166522 /* Pods-BequestTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58E8FABA571FAAF0846DD17DBC21BE42 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10AEB7551B52C7F2D3CA534E7DED6195 /* Expectation.swift */; }; 5957F066035E350900D3836AB09F2B88 /* SSBaseCollectionReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8996A7AF03454B50FFFC3D4A2614590F /* SSBaseCollectionReusableView.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 5D0A7C094316F5E03B6B2A5EF946E072 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 397E935E1758C55C5428F19A235024C9 /* UIKit.framework */; }; - 5DBCF41BB88EBE096574B70158A5792F /* KIFTypist.h in Headers */ = {isa = PBXBuildFile; fileRef = 087D2166DCB0E74DD68F82C3491EAFB5 /* KIFTypist.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BBEB2A24726921B8091C7EA7A416752 /* UIApplication+JTSImageViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E742E34998B3D7CFBD57EA6C0B61912 /* UIApplication+JTSImageViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BBFD1F1CC8E46ED1D639F3136B29DDA /* UIImage+JTSImageEffects.m in Sources */ = {isa = PBXBuildFile; fileRef = FFA1AFED6EFD76D364B37C4DA3261E2F /* UIImage+JTSImageEffects.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + 5C5FC5BA2D05B8536A5A53C3907F45D5 /* UIView-Debugging.h in Headers */ = {isa = PBXBuildFile; fileRef = 7888B13154E5D32CB2F5C4FCE9DEF62A /* UIView-Debugging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D19318CE874AA177F84D409DB0A502C /* UITouch-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FB747C622C0B15E163B6146AFF32EB6E /* UITouch-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 5DFE412C4094C41DD2357394C9DF7B12 /* POPAnimatableProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = C7997284BF247182201AE9A3AE800E2D /* POPAnimatableProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F13A431304FFFD2237DA929E10E3049 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 610CE93A508A7A4EFA7DEEDA068C623A /* BeginWith.swift */; }; - 5F3EF098097EBB5F1A549239E7133683 /* UIScrollView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CF011BBC6009B662C75E31FA93B7F5E3 /* UIScrollView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6069D02A2A2CB53F51E2A929D27FB41E /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = D50BD7CF5D2EFE6AEE2A4052C843141D /* Example.swift */; }; 613166E29C5E825518DCAEA568A68B96 /* POPMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6C2C89FBF8FA3BD91E6E2E3F4CBCA1BA /* POPMath.mm */; }; - 639AFE7246B3AD8F01520D6AA1728105 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA051DDA5702F6885A2E948F2775DE72 /* FailureMessage.swift */; }; + 6363009AA7EBA2F2F36420AF2C74B645 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + 65324F6A177F845403684AFBF8927E0C /* Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE8F30E701A01A09D021D2BA5D7E88DE /* Download.swift */; }; + 656E62EC2793E9996E4838F6FD323AF5 /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 65B55221EF4AEA606C2E6CC2D2F493D7 /* QuickConfiguration.m */; }; 658C5044C22BCA2A2C502DC34FBD8A8F /* FloatConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F4269A2EC839DFB62FD0C2F5340D5F7 /* FloatConversion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 676FF4D46EA9C0ECDC82542EAC37D256 /* UIWindow-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 329386B6A7EAE352BCE3A9D5C3BBAA39 /* UIWindow-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 67C4B612D9303D0394CA50911CED1727 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6F580907FAACA67BE2837DA09556DCD /* BeLessThanOrEqual.swift */; }; - 68448996142FB52CEA8221E709F746CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + 6705CCB75D92F70B5A3ED02DD4824E76 /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACCAEE32479C3E260B73959576CE44B7 /* Callsite.swift */; }; 68A45B5C6594E889850723C6308DA582 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 397E935E1758C55C5428F19A235024C9 /* UIKit.framework */; }; - 6A3BD78BDA65603B635FE69E4EA5822D /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EEF6241A0B8460DB41FF427CE2E0D25 /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68D51F7B12D590B1B35D3D532DEF6183 /* UITableView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 753ECB26DF02BC6FB5EDCE015FA94FC3 /* UITableView-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 6923B46F695F3B1FE5C9F66766798346 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABA8C21D9E18208876108E15CBC96705 /* World+DSL.swift */; }; + 6A038D7C4DF0E697707B08360F38243C /* CYRTextStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = F8ADDA04D25209507484635153B6F9B0 /* CYRTextStorage.m */; }; 6A3BDBB1CA9D8A855D8712240A4F2C7A /* POPAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CF66387E643942640095339385517A5 /* POPAnimationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6A63CF1A86B879497D48E921EB28CCE7 /* JTSImageInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 28B6A4EFAA9D1DFD880FE9D09B5C49F3 /* JTSImageInfo.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + 6A7E3A5817F6B38B7A90926191FB8428 /* JTSImageViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C682FAF2DD677E70C206574DB1BE4F /* JTSImageViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6BFC77AD735A5AC6C6AF8E06A17DBB36 /* SSBaseDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = CCCD8E3983BAC02BA0E9A89D168EFAC5 /* SSBaseDataSource.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; 6C86821943D905A91D1D49D1CFDEE96F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + 6D2B507C5B3B98A8C9AD5ED6BEA130AB /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = B2EC90D463703DE93D0F8613257AFD45 /* DSL.m */; }; 6DB9157D955D7365AEC62E2DDF14DEDD /* POPPropertyAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B066F38CAEBB80FF7917FA4FA83EC9 /* POPPropertyAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F79A308D766464DD45183FDB4CD3E1D /* NSError-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 21BC45083650789D03E1C1E6664EFA93 /* NSError-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DC7D18F3A2A3A1AFF3BFA06B14B7D74 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23C1B38437A221819669F6FFC6779980 /* ParameterEncoding.swift */; }; + 6DE12EA711A973785FFE31C4477FE314 /* KIF-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 29614F8874FE9CC2EF123F76F3080906 /* KIF-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E13E992FF1FFD57022D45364650E5B6 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2075C1BBB0ECFA131E6FE3FD7D6694B1 /* Request.swift */; }; 70A37764CBE2B682475C6795E8C31690 /* POPAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 689BB4771D8CD52D6DE8D9DD7F096485 /* POPAnimator.mm */; }; + 71A20D13266746E22A42C7B56FA7FBBB /* JTSImageViewController-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 90FD5C22228E2BC5D1F37774F0BA7A83 /* JTSImageViewController-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 72A419A8759D43F79D683F9525796A44 /* POPAnimationTracer.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABBBED96611C1932AE6F405F412F465E /* POPAnimationTracer.mm */; }; 7336DF8D01E489BDEF831EF49468A841 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28712CD139461B926037F77B1AFA710C /* ConstraintAttributes.swift */; }; - 73703644D9FF2112AD60B8F607B86824 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 650456B7B50E845613048E90422E2EA0 /* BeNil.swift */; }; - 758861CC6811195E84C404EAE640F579 /* XCTestCase-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D11D94173E0133D260AA0EF7DF417FC9 /* XCTestCase-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 759BF7C51C217B4E17F94EEE445066F4 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A88464405BE2ED2CF196574036EE57 /* Request.swift */; }; + 74003B06ED0AEA8667DB2CEF42A54309 /* JTSImageInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A688F456FE2DE8A5067DFBE9678E762E /* JTSImageInfo.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + 75A3198C1FD3F6BEB9BF48FA8D74B5E7 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23267DDBB4E7CEB976A40B6F9B0ADE82 /* BeLessThan.swift */; }; + 75A7827DAF5F3D2C9B6572BBB6BAACD6 /* KIFTypist.h in Headers */ = {isa = PBXBuildFile; fileRef = E51D2436653E7EFAA008FB0DEE635EE6 /* KIFTypist.h */; settings = {ATTRIBUTES = (Public, ); }; }; 75BFE4DB0D76E23C8A6BEC4F11EBB450 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - 77F90352AA8B3767E8C3CDC10B05D440 /* CYRToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCF01E6614650FAF12BB1D93C20E651 /* CYRToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B57FC0F9BF0A08D908CB1B348C64B6E /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2001056F1DEF43E1CF7A7F54888F0432 /* ParameterEncoding.swift */; }; + 7754543A3D16F28B4F6696118C7FB89B /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = D14EF8C2A88DF1EC84AA04CA65026462 /* Expression.swift */; }; + 78CA35A9DF13C835F67CDC94E8154AC6 /* UIApplication+JTSImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CB01ECACE93D277AFCC9E1749ED74E33 /* UIApplication+JTSImageViewController.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + 7B53E35027AF047E7462BAEFD88F43CB /* CYRLayoutManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 39A805F257A1568648EABF56D91D0A6C /* CYRLayoutManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B799BF42493DFC7BE130E3D3CF866A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; 7C13922216DF212881C9F8424285A3A4 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6124A9BA9F7E5282280C279E5387D351 /* ConstraintRelation.swift */; }; - 7CC4AD9EFDB43651144717A4190A1265 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B91680F55467B5878C583A829705269B /* Equal.swift */; }; - 8069253FB9F472D0F14FF97229F267B8 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F70B00664F3038D09C26CC0DC7A74B0 /* QCKDSL.m */; }; + 7C180151C76455EAE00D13E644A62DB5 /* KIFUITestActor-ConditionalTests.h in Headers */ = {isa = PBXBuildFile; fileRef = E9DDF51FAC1520B970AE51B7756345EE /* KIFUITestActor-ConditionalTests.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7CBF7CF5DA81A97E19990131054968AA /* UIEvent+KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B2DC855073031200B3AC1AE680F8877C /* UIEvent+KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 7E7E28705024198EA4729102F8CF749A /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3CB3A558C8B720ABD20E13B5EEBD2A4 /* BeLogical.swift */; }; 80A94F886A1B09AA0E53B363A7D6F30A /* SSSectionedDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = A0087E35D8A90A16F8B76E10B32B5F30 /* SSSectionedDataSource.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - 819F154CF437DBF34D630B9A17CDAD77 /* JTSImageViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ADE7702F486B81E4C6CE9D4EC1CAD4A5 /* JTSImageViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8121C36C49EF9C51B1FABD00BFD2BC13 /* JTSSimpleImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DD91541467ED26B85591597AEB3BDD /* JTSSimpleImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 820C9E56A42CC0ECE34527F50B518986 /* NSFileManager-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CD03E7C28338874946FE6E9FCDDE18C5 /* NSFileManager-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 82DB77A326F3B616309F96E7CDD516E7 /* POPPropertyAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = BA21D97739A1EEF98861CE741EE3D809 /* POPPropertyAnimation.mm */; }; - 8402B29DD08990B98184AD407CDDA2DE /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */; }; 844A476E2DE7D7213DB4AAACD3CE2825 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514C8DB54367192914F16B7A194FAB03 /* LayoutConstraint.swift */; }; - 852F3CE74BB435C75C28768DDAB97CF3 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FCB051007D7D3A42CC2F39279691FFD /* IOKit.framework */; }; - 853CE6DA93AF934CDDFD41756604FBCB /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = F793BA5167079D8E35BA39A16F133899 /* ExampleMetadata.swift */; }; + 84EA0CB2E6FD200077F57295B9DA876B /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC9DFE87A486FCE6105E4EDCC3DC2CC5 /* CoreText.framework */; }; + 85224F12056CF650F07C9819B6A76DFC /* KIFUITestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = FDE3A6FDFFFF6C0CFEED3BA08BF60A16 /* KIFUITestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 868A7C9CCD7DEC5648309048A924308F /* KIFUITestActor-ConditionalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F1CA679E2CB7619B5F3F140293624ED /* KIFUITestActor-ConditionalTests.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 86CC42E3FC2BD24FB22E4ADDF280A89B /* POPLayerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 415A63F3B45DB4DD3277C62FB42B0B4E /* POPLayerExtras.mm */; }; - 8709E57BC4CB57A9C5B39343D4D5BCCF /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B2720A6085B1C998C84A8F3D0AA6EBF /* Contain.swift */; }; - 8838BC6B6BDDC12BB454B1E06254363C /* KIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7B2B085203D6DCF3D1FAD30E065A61 /* KIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88DF3F9D7E0C1885DF56E91A93D42869 /* JTSImageViewController-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D999996A39F15D4AD18B8E0CF60F51 /* JTSImageViewController-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 878795E5B78294B4024CF9CDB46F4E93 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094006D4589037CD3DB20DE626E294B4 /* SuiteHooks.swift */; }; + 879A51AF9A4EC36EB729C25655FC8E28 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1356BD643088E178B626A3FC26B561C8 /* Alamofire.swift */; }; 892E8C344F4BF5CF38402ED5AC7CA1E2 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25A08ED3B934FF2DD94ECF1E8B540E40 /* QuartzCore.framework */; }; - 893BCED6509BB1738A27E37FA78BC35B /* KIFTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = E7519003ACE6AFA0BE3BB7445042F9C7 /* KIFTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 898769ACC22253A6EC3E520995A5B8CA /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADC6CCED64B61234BC9216B58B06AD /* BeAnInstanceOf.swift */; }; - 8995940D0A94B6B96EF4C6912A403A7A /* NSString+QCKSelectorName.m in Sources */ = {isa = PBXBuildFile; fileRef = 046DBA2CCAE3EEED15162E94BE2D36AD /* NSString+QCKSelectorName.m */; }; 8A5B0551154B2FD7A7EE665051BBE262 /* POPCGUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 4020E892773275E8C45D090B2B792C19 /* POPCGUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8BE61CC7758C627A75D8303938B61A14 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA054AD5DEFD496815B3B7728F2AF840 /* BeEmpty.swift */; }; + 8A67C8ED84D7EA8ABC44E43F780E0274 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + 8B4E2C185B67E2E7EDE2942EF4249FA0 /* NSBundle-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FA008EE30364D602D1930094D30483D0 /* NSBundle-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BDC921BCF93FEAD90EEDE160E8179A9 /* UIView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FB68EB3B0F219FA98C50E8609E9C2819 /* UIView-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; 8C00766892CFE46FAAFAF1313900C409 /* UnitBezier.h in Headers */ = {isa = PBXBuildFile; fileRef = 0742B06ED47AC4EEB3EA32313F723647 /* UnitBezier.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C97ECDF11FAB52BFE10E71D55107ECC /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672B9EEC660D3187E7FA7DE73B5FA277 /* BeIdenticalTo.swift */; }; + 8D4C62520B66D9BADB38868272F3D95A /* KIFTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = C5078BE2E1640399F162F290FBA6FE62 /* KIFTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8E7486843590554494ADF3A6B59471F1 /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B16F533E2A634317763401F7D7BACCE4 /* Nimble-dummy.m */; }; 9062F0E99F19D8AAD060E50401FC0F32 /* TransformationMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 62367CB40CF5DB60DCA3D47CDD221365 /* TransformationMatrix.h */; settings = {ATTRIBUTES = (Project, ); }; }; 911F22D1070D570A4DE059315B3D10A9 /* EdgeInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31E34DF4E2EB0B2E234065F1CD662A7C /* EdgeInsets.swift */; }; - 9293C2D19412BEAD64E0866C869D2888 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57AF7DD09BD544E2B51BE30372C0E70C /* ImageIO.framework */; }; + 92511D7E5ED16F520F4492CF980B382D /* CYRTextView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 07680125337245D3547A02BD969CDD30 /* CYRTextView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9262F424952171A078D466F6D5308F96 /* UITableView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E6607BAC49E10D6B6AF6079E2C5B7162 /* UITableView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 92D3A710B624AC5E16235FAF5AE3D4FA /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B207866F1BE787B22B90B1236A5F395 /* AssertionDispatcher.swift */; }; 937DD8FF157CC872B81781F97B84DD33 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2688D8BC06F609A9140EDE2649FB667 /* Constraint.swift */; }; + 93B99C83B57BDB3FF88670574B49BC08 /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6271D265339354367BE6413FD280535E /* SourceLocation.swift */; }; + 93FD43FD1A3C0928B8A9ECAAC27A9869 /* UIAccessibilityElement-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 41CEE46F312E5EA1DFC16168F1D1AE74 /* UIAccessibilityElement-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + 95A83699377C16ECB2BC74662D90B062 /* JTSAnimatedGIFUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 77523018BC098F720990ED8DF56A15DA /* JTSAnimatedGIFUtility.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; 95C4745EB88BC687CF5D030A717A8241 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC9DFE87A486FCE6105E4EDCC3DC2CC5 /* CoreText.framework */; }; 971FB1BC9FC84315A80EC669D32D0AB3 /* POPCustomAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = F317558711CB11705575EDCD975560F3 /* POPCustomAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9823D946D180D46C69C493597B600C4B /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11CE684C396D416BEE56FAA4894E04BE /* BeLogical.swift */; }; - 99655D95D7F478B6D291B72A5DE9B02E /* NSException-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B18026DF79E6BC324C1F0275AD2612C2 /* NSException-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 9A4BC67761F69A0C644D3355DF1D9512 /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54398A32EDCB73AA88BECA887B69A2F2 /* BeCloseTo.swift */; }; - 9AD534F03A59E7665CAE36F986DD8884 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A8FC02377E2495A2A2ADA7ABE8A4090 /* EndWith.swift */; }; 9C60A22CF81D5BCF374E1F73C49DCEFC /* SnapKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944707D7E520E4A6A72976E29743AE8B /* SnapKit.swift */; }; - 9CA91367F2B6FF0751E231ADB08904AE /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FB1596AC74EF1200A36674569A943DB /* Expression.swift */; }; - 9DCF49195C6AA075B8DF10AE3E682D83 /* FullMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78485C36E80C830B139AA2A46AE699C1 /* FullMatcherWrapper.swift */; }; - 9EBEE7F782A2704D70EE95EBCB068CBE /* UIAutomationHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = CF4D52F119559C5A84C5A3D8836C6D78 /* UIAutomationHelper.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - 9FCAFCF049DD40F007351BC3B855D384 /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EB8DC6EAAC0B1B546773DD233817E7B /* MatcherFunc.swift */; }; A087D7C30AEFAD956212059A2D679B3C /* SSBaseTableCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 4482DEC2DA0E46C72E5B7817FA9894F9 /* SSBaseTableCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A0B15230468F27C9FDF6CEEA5DF04CD2 /* KIFUITestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = B65E9F7F1774F58506D11B2EC9DD6417 /* KIFUITestActor.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; A16A43BF66433381055AC13F41E8328B /* SSBaseDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = D4BA6AC9BF036CD0E9EA2D5E59C37FB1 /* SSBaseDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A225A4C8D22F1C439E9181CA273F2321 /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83AB69D3BE8A7AC58F8CF33F0140B391 /* World.swift */; }; - A50722C592E87363DB52635AAFD960AD /* KIFUITestActor-ConditionalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D33E32413017C926870DFF44DD0EFD37 /* KIFUITestActor-ConditionalTests.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + A276C72D4E99DC26CE560F94583162A0 /* KIFTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E9D8B4CB0E0C65527FB3442BF4550B /* KIFTestActor.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + A2FD131700E3FC40290FFECB9ED59B91 /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 121096CE7676F61FC414EFD4F14DF26D /* BeGreaterThan.swift */; }; + A4B800FFDF9D824945DB2875D761A2E2 /* CGGeometry-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D5160815F9BF8B11241C54F803A80F96 /* CGGeometry-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A554FF02F1AB4C472039D791A3D1657E /* CYRToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 218A12E4ED0A2F1A3A4B4C3BFA4C71C6 /* CYRToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; A5AAE37DF0CD2B99C97DEFA45E2AEBAE /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ED7F52C55237E4B17DB13FB3C8260DC /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; A5EA70A6D8038ACC06E1B0213B0FC82C /* POPBasicAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D14E368A36EBBBC8D5ADF7EDAB1618 /* POPBasicAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A698890366EEF1BAB9E7004884A78363 /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = B99882AB73E4D8C276A1C774C19A6A3D /* QuickConfiguration.m */; }; - A7253F6258052A3CE384A0073C1CD3FB /* CYRTextView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5384F92373DBD8B2710D215774CC361B /* CYRTextView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; A7B9003F032D298D489A7C07216DEEBD /* POPDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D43A04254D2E74269A271E313A9EE3 /* POPDecayAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A837A23AF27753FFFE69C62D4EC20E82 /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11F2FD41A9536D10CA99285EC83A4D67 /* ExampleGroup.swift */; }; + AB914A302B3BC49EBB05D2B06A2619FA /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = A210EC4B3119DEE15AA316B80344562D /* DSL+Wait.swift */; }; + ABBB01AC232DADB726DE420B30DEC46C /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B6709EB25DE3912375784AD3BC1B514 /* NMBExceptionCapture.m */; }; AC13514A240194F70FE340F0F10A6786 /* View+SnapKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB4750529B585A32CFCF2DC9E1B5BFC /* View+SnapKit.swift */; }; AC2E8EA35FA96E844DAF8C336223343E /* NSString+QCKSelectorName.h in Headers */ = {isa = PBXBuildFile; fileRef = F9995A2B22F21A240B4743FEB32E2CC4 /* NSString+QCKSelectorName.h */; settings = {ATTRIBUTES = (Public, ); }; }; ACC7D4766A169F7003CECE9B2C7CD223 /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24632C3A020ED1452A4573BB11223E5F /* POPCGUtils.mm */; }; - AD0A9A1D2E8F169FACAB297689C1181D /* UIImage+JTSImageEffects.h in Headers */ = {isa = PBXBuildFile; fileRef = 54A0E49A0F061F8D323C06BA83DFB1D8 /* UIImage+JTSImageEffects.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AD31801E2CD80B5C87EF2583BD479980 /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22C1428F3C8EFE2D15880C48F1ABA754 /* Match.swift */; }; AD3A46974238A5FE72D66AC2FEFEB6A3 /* POPAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F144CE6E684AC0402633E64A3864A76 /* POPAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ADE3627725BC1DCB0079DA4DB727F678 /* NSBundle-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 28263CEC31313F9D9314B54C1CA3237E /* NSBundle-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + AE1CBFE838E3A6F5CC99675AC987AE1B /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E1B75FAF675634E24F1B5CF0253AFCF /* MatcherFunc.swift */; }; AE75AF7DB61E221282BEE2F75043F234 /* SSSectionedDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2985BC0701AC72452DC34865D8A11E19 /* SSSectionedDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AEDF7D3583143DE4577297E95DD496D2 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 069990848444C8024DA9366925BDB093 /* ResponseSerialization.swift */; }; + AF13DC5BFD64A6FE150748B11F9654FF /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AA0F0C8192B78B685B619E1F765909 /* Alamofire-dummy.m */; }; + AF1B610BA9FBEA9520B17078DC48F114 /* AsyncMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D7A54B8D6AD7457B3462617555C5AE /* AsyncMatcherWrapper.swift */; }; AF2666FC819662D33580C22BDEB20640 /* POPBasicAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6B77315AF0616A0B0786460C78A8804B /* POPBasicAnimation.mm */; }; - AF285A8D68676C82F287570580203469 /* UIApplication+JTSImageViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F8CDF5724264809BE89F82137FB7B6A4 /* UIApplication+JTSImageViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF9ACFB441B71FEC0A75363AB7A7FD42 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D3A462E7FEBB18F60382B9363819A9 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; B031E39DB9A8539B5562A77B82903D54 /* POPSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D8806EFDFBD7F493C9C42910880CE2 /* POPSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B0B1D4C8ADB18AAE23554831EC898EB4 /* NSError-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 16F99199CDF32A38C25120A5C277EC36 /* NSError-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; B0FB5138DBC567A7E9027BC6ED460561 /* Pods-BequestTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E4B3CC32D25684C2979070113ED86086 /* Pods-BequestTests-dummy.m */; }; - B19305C0FF1D2BC33D8E4B3CD62A9C40 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E1F94C884E9389A431665CC7182F48C /* Accelerate.framework */; }; + B17E96533F3FA287D72105F3E2BE283A /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C154808C3EA0C9780330FA192084A03 /* AdapterProtocols.swift */; }; + B2219E3D2E30FEF2E60E2C50E31AAE9D /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B37C6FDCF8CA2E3E232F5A87219EFDB /* BeAKindOf.swift */; }; + B347E6485A232EF4C03993C4656A8B28 /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CBFAC9EFC6FBC7943F88A012583478 /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3F3CA6D6D5732DF8CD52262EF383A65 /* SSBaseHeaderFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5C56B263950F5D42ECB9195F84F3D23 /* SSBaseHeaderFooterView.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - B4670DE1C51108CC4D00DFB749B92272 /* JTSImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C99CF984B2FC7F068DF0CD67AE859885 /* JTSImageViewController.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - B4D7A816A5E694DE27DCFF6E4031C888 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - B5E50CDE97D57DCF2225EFE1DA32979F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - B77BBC4C3435F6021C116A406F21A7FE /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10332E3BE2AFCFBBC7899BE55657D321 /* AdapterProtocols.swift */; }; - B7A938B6C7DA8C5B128F10CF839B2D92 /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D259423DBC31528C00931142607EAF2 /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B515054C43964801C1FA34EF7B7E115D /* UIApplication-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F8C09D3FD6DFBB1996D234B846D9B5FD /* UIApplication-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B6D66C26E69F8378577D2E400E946A07 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40811F91302EFA74F5A323FD165B53A7 /* DSL.swift */; }; B7AC2FE22E5D10748DE792E5B24E0AA8 /* POPSpringSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A0CC7DB911BCEA6045E738CFC15D936 /* POPSpringSolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7DA23F55F763AEE4D474789075F3A1D /* UITouch-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E935E71EAA7C5DE12990929C24A34029 /* UITouch-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B82DD362F9C5A7377459520C6AEFAF6C /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = E74FDA4FB19B66410CE2ACB7AAA1E68D /* Callsite.swift */; }; - B83FA17049F93A0C1E64B0C80CD47F7E /* KIFUITestActor-ConditionalTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A85EC60E0173AE3F015DE9C7327BE3A /* KIFUITestActor-ConditionalTests.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B99AE3788CDD56B794955FEA8BE73522 /* KIFTestStepValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82917B6BA3AE9B900168292BE331999 /* KIFTestStepValidation.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + B9D8ED0FC3497BF5F16A1CAACBD104CB /* CYRTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E6B3F03591552C5C37B930182D7680 /* CYRTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; BA46169E7275C83F093BD06ADD69AA8C /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 123B9C0A891B3518B9EC6A4ABD725720 /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BAD0FA002371A92E00EC60318BB37941 /* Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFE157C77B6EB894C72D360B3F73C210 /* Poll.swift */; }; - BB40142D8BA03512BEA0EB80FA7D5707 /* JTSSimpleImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B2569224F03B235C29D6510005280E /* JTSSimpleImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBBE50C02FF26EBC6E0A6B55F5746EC0 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B136A6325B1A5354FF5E227EAF2CD08E /* CoreGraphics.framework */; }; - BC0758CA41C786FBE31BCF5CB5EEE945 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40C72F790FF06E977893C02369BE9D43 /* Validation.swift */; }; - BC2F901FDDFBDC34763C7E4B0BD33A3C /* NSBundle-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FEEFCCE6BAAB831CA8E159D10D685CFB /* NSBundle-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BA69513861A2D3FCDCF951C0D90FBE53 /* KIFTestStepValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 531BA86958F8C95862577AE08939E2A0 /* KIFTestStepValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BB3D88E28573BBDAF3B256D40528393A /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05E7BBAAE088779A08C1B3411FF166DB /* Contain.swift */; }; BC7876D66E571A873C5EE6397D000A98 /* SSDataSources.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B78237471AA661C5DF07E8640FE02B4 /* SSDataSources.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BCBCD725232A376A15407C4A55CB5E59 /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78766D569CB30DE7F1D87A6489949F4 /* Functional.swift */; }; - BCDEACFED683E73BE4EC7FF4B5BC288B /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 434BE4C3770384B66333265AE2D38434 /* Nimble-dummy.m */; }; - BFCB44EF0A89E3BFB89DA14EEA4B6A46 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 662556BC03F803F72810B10B3AF78486 /* Quick-dummy.m */; }; + BE557320C69D4929F9961968B61B4C6F /* KIF-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E6FE759AE5E55439A0E716FEA242F420 /* KIF-dummy.m */; }; + BF27FE3E40BB081DBDF208AB8269559C /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26ADABE84F4F635F0797C002EC1F0471 /* RaisesException.swift */; }; C01222A819A11FC9A6914573288279BB /* POPAnimatableProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = C1F9039AB80645BDE7B5126C3A00C437 /* POPAnimatableProperty.mm */; }; - C0D7FBE89CD2A9D13A2466AA281D08C3 /* UITouch-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A731DD2A4467CF346F9E25CEE15C4C27 /* UITouch-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - C0F2AFAE8A80EECA9C8B20D56FFCC638 /* KIFTestStepValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = C22F427C17409288B95CFDA10409D209 /* KIFTestStepValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C231A66B075021D2A164BE2136E218EF /* UIApplication-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 39F01D027E4644063A527D3BB6BCCCBC /* UIApplication-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C064E3E4FE99290EDF7151FAC4816999 /* JTSImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C2885885385210B89003CC63E3576D9 /* JTSImageViewController.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + C09A6B620D806CB99A52B7F8E6D49290 /* JTSAnimatedGIFUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 82FA4886BF6369E9D60D7A2B57FD2A6A /* JTSAnimatedGIFUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; C2C20B9A2B24045F715A7BB236DBEAA8 /* SSDataSources-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AA0D3F06522D73208ECEEF119CE8E118 /* SSDataSources-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C570E1B0AFB97981CA0A4B8187B92946 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + C4694BFFF3E476A3E16CC65FB97AE3B6 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D0788A0F13385145E57F6A4150CAF8 /* Equal.swift */; }; + C6AF6A19E9DE15A681C673A50DC693C0 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D2A14A7210EFB872EFE003D6968AA77 /* BeEmpty.swift */; }; C6F95211709CB415CF43A6394470F14B /* TTTAttributedLabel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B105BB63A3A12B56512A137A924B862 /* TTTAttributedLabel-dummy.m */; }; - C7B336406A2D06BACE5778EED5628B5F /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0351753118C5DD243581B3BBEE521CF6 /* DSL.swift */; }; + C71C2006F6A55F2813D491BF82935B58 /* KIFTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = 2864BD94E5D7F20714BED9039F8AA94A /* KIFTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; C7FB4B4DC5200C1A038E287AD021BA51 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D9DDD97934306A251EF1B719B887E30 /* Debugging.swift */; }; - C9964835B7A65B992CDA3EDF7DDD03A0 /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 483FB256E5E1CB1D268FB61C1C910229 /* SourceLocation.swift */; }; - C9C31C5A9DE6CC66669EA1025CB1EE3E /* CYRLayoutManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1580515EC3D41C6647D57573FEB266 /* CYRLayoutManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9E3A36E00F1835BD14CE13CB2D7F2AA /* Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7FB49BB8FB96D615DCE56D7D1269A /* Poll.swift */; }; CA07D59D4AB0590A038B7696D914D439 /* POPAnimationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 52926D1EFE376232CC712C2502E85488 /* POPAnimationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; CAA769DF109AFA2C2C1F2B0E714E7C37 /* SSExpandingDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFC40FC4CB3C47A068CE02A8FA03DAF /* SSExpandingDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; CB5CA49B4ABB03CBC1FEECBDD591134C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - CB7871BE1FDDA0422E817EFE8B4358DA /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48BD0D5FB3BBB26C910CEEED43B820E6 /* Stringers.swift */; }; CBE5485E751F4E3222E2EE5DF3BB845C /* ViewController+SnapKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB368C98C0B5B006F33471D08DBD10D /* ViewController+SnapKit.swift */; }; + CD967B73EF036F9F394B01897FF5353C /* XCTestCase-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A8BDD2E65C2335A718A8B38A53738C /* XCTestCase-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; CE0C81772E75BD888724F0DA0B0C4348 /* POPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EFB64412F9649B67736601C7E7A92353 /* POPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; CE2DE14D4B605210E3F2CEA83D8759AD /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F2D54582BC8558EB887C567B1E3E57 /* SnapKit-dummy.m */; }; - CE79E9A4ECFAAE0652424B3514E019F0 /* ObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E80EF836A66EAF45EE1207B2BC3DA4 /* ObjCMatcher.swift */; }; - CF89532146837F595119707AF26B7B1A /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F28050447910467D43ECBAD090F8C58 /* RaisesException.swift */; }; - D0FB098A12FC802F5FE6DB3BD13101DD /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = A704DE73DE7894D9A6A07A6FC3324587 /* DSL.swift */; }; - D15F46C1025C2975B02DA41DF6E2E3A6 /* UIAutomationHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97273F05A5F62071897A4CAC274F75F0 /* UIAutomationHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0190A53ECAB9B63D3083C6994281EF9 /* LoadableCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = BF86C460396687B0B1F8054DE3C654E0 /* LoadableCategory.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D031F9C56309E31B24A7D5DB47EA659E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; + D046D8D50E7F0CBA3D4EECCDB8353EC2 /* JTSImageViewController-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE730C706DB011548491EBED4D397484 /* JTSImageViewController-dummy.m */; }; D17437A32E6E8C780B1BB294F4555501 /* POPAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4893F89B33578F1546F10CF6341FB22A /* POPAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; D186A3CFD16690FE1644D3CEF9E4B6C8 /* POPDecayAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F1C80EF9465314B024FE3E8B7E19AE53 /* POPDecayAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2BEA95134596F2AC5C197C96DB923E8 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */; }; - D305F00210C5F6E3307C9BC305011FFE /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410F221B8E275FA4F458BCA908710F03 /* BeGreaterThan.swift */; }; - D339F85D0F23F79050AEB15154543725 /* CGGeometry-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE066F57D695162A8BF42B7089544C39 /* CGGeometry-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; D38E38716B9214774B4DBA8CB0F64E63 /* POPVector.mm in Sources */ = {isa = PBXBuildFile; fileRef = CEDAA8CE81F660CAE500AE89CAF39643 /* POPVector.mm */; }; - D3E46F7C464A23D9F9D2E4469BFC5095 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A357FB205502BB3DF4123EC4345F10A9 /* NimbleXCTestHandler.swift */; }; D46D4528ACB41EDDE91BE3B4C9FF2DBA /* SSBaseCollectionCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 8622FA625369C32FD340637128EF7AA8 /* SSBaseCollectionCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D52007E280295B445AACEE7303FBD805 /* NSException-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 52178278EAC9B330CAE536D89D686220 /* NSException-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; D5C23F84F651EE311AE39E49A1F518BD /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAEFB31B003AE9E0EAE851B8974F02F7 /* TransformationMatrix.cpp */; }; - D63C520D963CA29A45749B78CC012B01 /* Failure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44CBDE1FAFE5DFD99B551E90F8C77150 /* Failure.swift */; }; - D665F0B801CC09BA9A6991C1F43D51C0 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE445A6F79FE74E418837D4BFC3DB13 /* ExampleHooks.swift */; }; D709A034DB246CA0932CE399DF41AC04 /* SSSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 723CFE8D4DBA96145DC7E7CB51A2B564 /* SSSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D85705EED684D376D0037DC2F7A44421 /* NSError-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0558B8756146EF14B438DA7AF8D82915 /* NSError-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; D8BC2AA0906BB73044888F169B2B35C0 /* SSArrayDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 0284D33D87AB6A8FEB4B0AAE8BA8312B /* SSArrayDataSource.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; - DA2067F7395D351F1A50FC1C9827F0C7 /* Manager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E60A291A996D763009B8E633C643A078 /* Manager.swift */; }; - DA6CBFBED4736C31EF15823525A1F9AB /* UIApplication-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A164BF32F4B3E62B607F661F27840667 /* UIApplication-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - DB190C995B2C8C5BC12935395AC23437 /* UIAccessibilityElement-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DD06A0669BBF15D0871B9252ADBF6AD9 /* UIAccessibilityElement-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DAA25ADAA2F5C601B8E8DC05581C7916 /* UIWindow-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2D931C920C5062E0FFD2BB92A131B9 /* UIWindow-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DB3D96475338219D7517B108028CCA64 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */; }; DB5BDE2492EE8E8E0CE66FFC0CB3D27B /* POPAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 611665DAAE257E6C45AF83648DF8055B /* POPAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC67D87959F61AF77A4DD1984ABED5CE /* CYRTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94C4DC0F8F5B1F152E6DC6633FD5B3AB /* CYRTextView.m */; }; - DD6E9740FCDB89A8AB797DE55C30788B /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A582751F1C012739125699AC538F0C /* SuiteHooks.swift */; }; + DD61506353F237451EE25ED5027A324D /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = A820C5F5CFA7DA0573E5BECA3296FBA9 /* MatcherProtocols.swift */; }; DDC3FC56A86DD9D3E3C91C2F718B72FB /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 989589C49DD27EC8EA7DB9760C63EFBF /* ConstraintDescription.swift */; }; - DE498AC78D87D232D067EA329D9F8309 /* KIFTypist.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AFC59EDABF3295A16CED3E93ED88185 /* KIFTypist.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; DEBBB567A8239D34DC5C20555F9984BB /* SSCoreDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B8F1BE143A1FB262DCC1DB76B894F3A2 /* SSCoreDataSource.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + DF45D39412D609D8831083DD815EFF80 /* CYRTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E5ABA8DFA84D76375886BE453E65FE6 /* CYRTextView.m */; }; E115108096E3BF5FFBE2BAFBBCF288EC /* Pods-Bequest-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 516F7A9DF0414C9A90AA2241CA7EBEB5 /* Pods-Bequest-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E14A2BDC4E05C394FC3B90149E6C89E0 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDE6231B5FBFECF6B9C8790F881104B3 /* IOKit.framework */; }; + E3CEB9B7098C96B3D4906998588C16F9 /* UIScrollView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 052FD7CCFF9C1AEEF83BAFFC973878CA /* UIScrollView-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + E3F45ABE09D7B66C31938C9B76473C81 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C12B5AAB10C9D34B23FBC3B8791683D /* Configuration.swift */; }; + E48634C694C50DB16BD5FB6CFE14FCD4 /* KIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6F8939B88FAA3DB9901A65839AB9C3 /* KIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; E53B12CBFCE18D90528077AB1448EF48 /* pop-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEF0AB3531576DDC522DC748F1E7E63 /* pop-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6CB9BD3259D88A9AFB885922E7EF080 /* KIFSystemTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = 173D186B6DEA70130C864E9CB35C0111 /* KIFSystemTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; E740F83C39DAC7177C38F192C3F8C38D /* SSCoreDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = A4FBA2EDB070637586E46851905B46DC /* SSCoreDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; E7EDB5FEF8FEA219B818474C65D4CBC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - E90D7CACBFF4794C6B88A019E4720664 /* CYRTextStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = C5C807B4FD04E504973A11DAAA607A7F /* CYRTextStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EADBA719947BDDE9A01CF0B7EC76652C /* Upload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4561013D0933D6F25EB1739A533A1039 /* Upload.swift */; }; - EB3C53F89C8AE9D7A4D033500CE25A64 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = A69780536F605A9CD445862B1F3093A4 /* QuickSpec.m */; }; - EB761B7F891EB5701C1C01320BFF7C86 /* KIFTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 363424511CB41EA0594034DC201187B3 /* KIFTestCase.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - EBED6864D242119662C41058C78BDB33 /* KIFUITestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0840A447E390CF17AC63D22BD90BF576 /* KIFUITestActor.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; - EC17E1097CBB0FEBEF09204BFEB6DF30 /* KIFTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = A73B4773D257674B1A1AE2E72CCF4EF5 /* KIFTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE108F2C9CDD5725C421B51C92DCABE7 /* Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ABAA6E33165C6A0E93AAF684ACA9A0C /* Download.swift */; }; + E9D7FCB384726298A07FA5219B1C831C /* CYRToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 79711F3D8428ECCC1DFDF49D06BCD89D /* CYRToken.m */; }; + EB0E3A2544AAEF1E1EFE0A7F7BA79FF2 /* UIAutomationHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B5A5AB58CA309B42C69A6AA43312325 /* UIAutomationHelper.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + EDBFFE53BD69BD3FCB63EFDC96618CAE /* JTSSimpleImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2CA13226BC5E34B462016CDB7CAC10 /* JTSSimpleImageDownloader.m */; settings = {COMPILER_FLAGS = "-fmodules"; }; }; + EDF85D53FE9F34A7E6CD1EC98B0863B3 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11605F3A03E9FFC751ADB04D6D253E91 /* Accelerate.framework */; }; EF47CC825ABF436C43A0221532722BD2 /* POPAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8A18DA0A5B6ABC6C1AAC04D51568F62C /* POPAnimationEvent.mm */; }; - EFC6912C35A83FB5657587331FB833F0 /* LoadableCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 00D7B41A6B3CF91CF88F5A4E76380520 /* LoadableCategory.h */; settings = {ATTRIBUTES = (Project, ); }; }; EFC8291B033238C044547179C5D5931F /* POPAnimationTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A6EA13BCA3D2362191AE75C028C596A /* POPAnimationTracer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F05A670B0505DB923CEBF413D3D04D07 /* UIEvent+KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = ECB92CDD7DEF451318CF3F5D68BB4B57 /* UIEvent+KIFAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F14F36CD0A341446C0F3D8CF60B4508B /* NonNilMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BEF08A236B789F09F9726F32FF67319 /* NonNilMatcherWrapper.swift */; }; + F0369DB36A4C79447EEDC654471C6A25 /* UIImage+JTSImageEffects.h in Headers */ = {isa = PBXBuildFile; fileRef = 372907426260F8F2104726D84EFA921B /* UIImage+JTSImageEffects.h */; settings = {ATTRIBUTES = (Public, ); }; }; F182026D2C8AEF5A45151EBE91041FCF /* pop-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 319D533F7AAA2E5FB95178146E0D58A0 /* pop-dummy.m */; }; - F280470263303ABE0D03B2280E080E66 /* UIAccessibilityElement-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA12261A7706A6ED68FB40958A7CB2C /* UIAccessibilityElement-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; + F1CE934A72EF0CCA570A3CF8F76DD1A5 /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E7423F1630FCAC235A64B03E328E8D /* Match.swift */; }; + F223E4EC507ECED7B5B1405AC1E8150F /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABF16314F074E4672CDAC392884CFD52 /* BeCloseTo.swift */; }; F2E6FCDF98DF2AD7EC9F73D5AC127422 /* POPMath.h in Headers */ = {isa = PBXBuildFile; fileRef = D00D1E6FCBB3B39690AE00EA9056A33C /* POPMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F52E29761542F0EC16ED6C3CBA1FC92E /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E4D99E7DC90CC09A54051ABC3F3EC7 /* AssertionRecorder.swift */; }; - F57463A2A2F635B60483336A534263F8 /* CYRTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B616162927A9417C221CF80C94CAB87 /* CYRTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F42C6690614B831726F5DB097806BF5A /* UIAccessibilityElement-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E32B9222D899D714B268A32C4B498B0 /* UIAccessibilityElement-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; F57C5CC4E09FD140F0B04F0B5D77A9A6 /* SSBaseHeaderFooterView.h in Headers */ = {isa = PBXBuildFile; fileRef = A6F3F9C495FE0D3A92641C51B48841BC /* SSBaseHeaderFooterView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F59D1FE9BD77D2F1A0E228CF1980BBB7 /* UITableView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A479E13490C090B52C4D03CE31283FA2 /* UITableView-KIFAdditions.m */; settings = {COMPILER_FLAGS = "-DKIF_XCTEST -DOS_OBJECT_USE_OBJC=0"; }; }; F70311123ACE3C4114C1BE221A854E55 /* POPBasicAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 022C15C4D7E9154401999ABE9B4B74C6 /* POPBasicAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; F77715E57D9DACBB52D06A90D8D361AB /* POPAnimationExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 04572CB433C8E34F4E39B5A614E6EBAA /* POPAnimationExtras.mm */; }; - F7A5576CED8F48B82941FE6965631026 /* JTSImageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 099470FECEE53070EE731FD0D805B206 /* JTSImageInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F9BC14D7FE279B73C238321D0347BF06 /* AsyncMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4754A3AD9737028621E094661F11854C /* AsyncMatcherWrapper.swift */; }; F9DF823112AB6E71F3DA2F126292259F /* POPAnimationRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 61E561EC7D919F1AF827E71C9BDAC67F /* POPAnimationRuntime.mm */; }; - FA2A87B1E92944475354B5468F572153 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */; }; - FA642326BE246F8448777B5233DCAAE3 /* KIFUITestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = 500643C46CC0FE7BF20A92CEFBAE689A /* KIFUITestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAD0E8B1001DD755F94517ADEB916057 /* SSBaseCollectionReusableView.h in Headers */ = {isa = PBXBuildFile; fileRef = EC68F0486B200F615FC0671EE5ADC74A /* SSBaseCollectionReusableView.h */; settings = {ATTRIBUTES = (Public, ); }; }; FBDD806E1AC97B31132F0AF1540854FE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B136A6325B1A5354FF5E227EAF2CD08E /* CoreGraphics.framework */; }; FD11A5977F8BE093C6C5A29BFD096DF6 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */; }; + FD358A527476F5D30F8C23404138156F /* CYRTextStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = B02F19E19157DD63D9656412EEF253E0 /* CYRTextStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDC27A097EE936C86BC548A515E9E807 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FFF2A6A74643EE485885896525C38A5 /* AssertionRecorder.swift */; }; FF9D2C6E6F05ED304A575A856C88C323 /* POPGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B9CDEA756546FB26B1F62F80558788F5 /* POPGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 19501B119E79BC3F2AC7F72923BD4CFC /* PBXContainerItemProxy */ = { + 0BDD0DC68160489B7A696018F45468D8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E27CF2AFC333B671EE1C0D4341E992CD; - remoteInfo = Nimble; + remoteGlobalIDString = E7A30C0AA8CA6849C1467A8AC95839D3; + remoteInfo = SnapKit; }; - 44E154C807C05ADAA3D8229FF4571731 /* PBXContainerItemProxy */ = { + 1E4FEBC8662682DD7D556C5E2AC580B4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = B57C66D183C12FC103FCB320318BF1D7; - remoteInfo = SSDataSources; + remoteGlobalIDString = BBCCB84F06AB1991DEC386664C3407CE; + remoteInfo = JTSImageViewController; }; - 454D2F3A652D1DB043135B4BE86B57CB /* PBXContainerItemProxy */ = { + 220BADC09E6F58161C052781EBA395BE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 8722EE56E6573BA693B2361B2A56EC26; - remoteInfo = Quick; + remoteGlobalIDString = C749208C55C80001E30C7B67B2F86837; + remoteInfo = CYRTextView; }; - 83DD7820CD03F3AE46818F7E4D4B4FDF /* PBXContainerItemProxy */ = { + 280D3A1B567FA8E47FD03840F8960E7F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = D03709FE87DAFA974B5B844D5ECFCD4D; - remoteInfo = Alamofire; + remoteGlobalIDString = C749208C55C80001E30C7B67B2F86837; + remoteInfo = CYRTextView; }; - 88E4904ABDB08F7CF18FE37B443B3336 /* PBXContainerItemProxy */ = { + 3306DF7ADBC1908392967A57FD8BAB90 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0C9EA721C4794C2C6EC3A967530000CE; - remoteInfo = KIF; + remoteGlobalIDString = 5041A2D25D2C3BF3F7F0561DA3A4358C; + remoteInfo = Alamofire; }; - 890720F9AE7EC6C52DA5A876397A0476 /* PBXContainerItemProxy */ = { + 3E2A679B2E626C93EC90311CAC7E1074 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A0FC735534CA6C20DB688A41935ED185; - remoteInfo = pop; + remoteGlobalIDString = B57C66D183C12FC103FCB320318BF1D7; + remoteInfo = SSDataSources; }; - 89B82C5C50CEDFDB6A303601263294D1 /* PBXContainerItemProxy */ = { + 45673A21478411F8032E9B8D129F5FEB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 88A25EA9B964D7CA3CE29D07655E085F; - remoteInfo = TTTAttributedLabel; + remoteGlobalIDString = 8722EE56E6573BA693B2361B2A56EC26; + remoteInfo = Quick; }; - 8B58FF1862544E208C121ADCCF29D3F6 /* PBXContainerItemProxy */ = { + 5A249E4E3796CB1B44C15A20CBAB4518 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 88A25EA9B964D7CA3CE29D07655E085F; - remoteInfo = TTTAttributedLabel; + remoteGlobalIDString = 9F0773CD55C506D3F7D39E42CB9D0C0C; + remoteInfo = Nimble; }; - AA5D1E916AFDC0BB81065CDC702F2A6E /* PBXContainerItemProxy */ = { + 5FFD77E9860E88EEDED440178E6ABEFC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = B57C66D183C12FC103FCB320318BF1D7; - remoteInfo = SSDataSources; + remoteGlobalIDString = BBCCB84F06AB1991DEC386664C3407CE; + remoteInfo = JTSImageViewController; }; - AC0C8B1E8CF62BF160F8074F41A13C05 /* PBXContainerItemProxy */ = { + 856820FF7DA9A1FBCB0B8E6C447114A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0765F27455305D57358AFD081270DE48; - remoteInfo = CYRTextView; + remoteGlobalIDString = 5041A2D25D2C3BF3F7F0561DA3A4358C; + remoteInfo = Alamofire; }; - AC605CD4414A16E54DB2AC269B68E530 /* PBXContainerItemProxy */ = { + 90293A832E0AF377D56975DDECBDFC39 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E7A30C0AA8CA6849C1467A8AC95839D3; - remoteInfo = SnapKit; + remoteGlobalIDString = 172C48CA97657A0792774CB69F139E16; + remoteInfo = KIF; }; - B3147877F2D7442B501C91C85E36031F /* PBXContainerItemProxy */ = { + A843987C2382EB884B5E08F33752FF14 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E7A30C0AA8CA6849C1467A8AC95839D3; - remoteInfo = SnapKit; + remoteGlobalIDString = A0FC735534CA6C20DB688A41935ED185; + remoteInfo = pop; }; - B48405195491A90498E69A33AA239B84 /* PBXContainerItemProxy */ = { + B1220D2B8A1F44514060DEF837B75222 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6E78E48BDD22A4CDF5E263FF71B66E8B; - remoteInfo = JTSImageViewController; + remoteGlobalIDString = B57C66D183C12FC103FCB320318BF1D7; + remoteInfo = SSDataSources; }; - CD0A05C2BD0AA918A249011567CE9514 /* PBXContainerItemProxy */ = { + B4F72CD7F5F27440655F67B6D6033171 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6E78E48BDD22A4CDF5E263FF71B66E8B; - remoteInfo = JTSImageViewController; + remoteGlobalIDString = 88A25EA9B964D7CA3CE29D07655E085F; + remoteInfo = TTTAttributedLabel; }; - D0ECAEE69655EC243E73431720354852 /* PBXContainerItemProxy */ = { + DBCAF4411784F3AB5610901363CACB55 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = D03709FE87DAFA974B5B844D5ECFCD4D; - remoteInfo = Alamofire; + remoteGlobalIDString = E7A30C0AA8CA6849C1467A8AC95839D3; + remoteInfo = SnapKit; }; - E0E1F8D1A8640FEA05AEDD37927C2163 /* PBXContainerItemProxy */ = { + E54C65D4B3343A5E73947F4A19F83AEC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = A0FC735534CA6C20DB688A41935ED185; remoteInfo = pop; }; - E62DAC8C8E9CC90E31256254B96010B5 /* PBXContainerItemProxy */ = { + FE7A7B162F5E17B954F9343BCB101A14 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0765F27455305D57358AFD081270DE48; - remoteInfo = CYRTextView; + remoteGlobalIDString = 88A25EA9B964D7CA3CE29D07655E085F; + remoteInfo = TTTAttributedLabel; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 0091F65C72600D5428205CDA4283DD1C /* pop.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = pop.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 00D7B41A6B3CF91CF88F5A4E76380520 /* LoadableCategory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LoadableCategory.h; path = Additions/LoadableCategory.h; sourceTree = ""; }; 022C15C4D7E9154401999ABE9B4B74C6 /* POPBasicAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPBasicAnimationInternal.h; path = pop/POPBasicAnimationInternal.h; sourceTree = ""; }; 0284D33D87AB6A8FEB4B0AAE8BA8312B /* SSArrayDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSArrayDataSource.m; path = SSDataSources/SSArrayDataSource.m; sourceTree = ""; }; - 03355D3D3DE08A8236D9F506181CB915 /* JTSImageViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JTSImageViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0351753118C5DD243581B3BBEE521CF6 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Quick/DSL/DSL.swift; sourceTree = ""; }; - 036FE32CC86F2C51B51B6E02EB054FA2 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + 035D275BA5343C1353C238795B168BF7 /* NSException-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSException-KIFAdditions.m"; path = "Additions/NSException-KIFAdditions.m"; sourceTree = ""; }; 04572CB433C8E34F4E39B5A614E6EBAA /* POPAnimationExtras.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationExtras.mm; path = pop/POPAnimationExtras.mm; sourceTree = ""; }; - 046DBA2CCAE3EEED15162E94BE2D36AD /* NSString+QCKSelectorName.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+QCKSelectorName.m"; path = "Quick/NSString+QCKSelectorName.m"; sourceTree = ""; }; + 04929BC9D885D7321E68EADE3085E663 /* CYRTextView-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CYRTextView-Private.xcconfig"; sourceTree = ""; }; + 052FD7CCFF9C1AEEF83BAFFC973878CA /* UIScrollView-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView-KIFAdditions.m"; path = "Additions/UIScrollView-KIFAdditions.m"; sourceTree = ""; }; + 0558B8756146EF14B438DA7AF8D82915 /* NSError-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError-KIFAdditions.h"; path = "Additions/NSError-KIFAdditions.h"; sourceTree = ""; }; + 05E7BBAAE088779A08C1B3411FF166DB /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Nimble/Matchers/Contain.swift; sourceTree = ""; }; + 062A78CA879E0ED84A17F3796E3B6295 /* UIAutomationHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIAutomationHelper.h; path = Classes/UIAutomationHelper.h; sourceTree = ""; }; + 069990848444C8024DA9366925BDB093 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; 07314B426FDE51E6F87EA277F08C1694 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0742B06ED47AC4EEB3EA32313F723647 /* UnitBezier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnitBezier.h; path = pop/WebCore/UnitBezier.h; sourceTree = ""; }; - 0840A447E390CF17AC63D22BD90BF576 /* KIFUITestActor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFUITestActor.m; path = Classes/KIFUITestActor.m; sourceTree = ""; }; - 087D2166DCB0E74DD68F82C3491EAFB5 /* KIFTypist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTypist.h; path = Classes/KIFTypist.h; sourceTree = ""; }; + 07680125337245D3547A02BD969CDD30 /* CYRTextView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CYRTextView-umbrella.h"; sourceTree = ""; }; 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 099470FECEE53070EE731FD0D805B206 /* JTSImageInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSImageInfo.h; path = Source/JTSImageInfo.h; sourceTree = ""; }; + 094006D4589037CD3DB20DE626E294B4 /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; 0A0CC7DB911BCEA6045E738CFC15D936 /* POPSpringSolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPSpringSolver.h; path = pop/POPSpringSolver.h; sourceTree = ""; }; 0A34BD814A2514C78BD20674DD262BC6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0AE10E0E375FC9C8A04916DDCC98BB67 /* UIWindow-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWindow-KIFAdditions.h"; path = "Additions/UIWindow-KIFAdditions.h"; sourceTree = ""; }; + 0A3D5BAA21C1105C935D38828A825060 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Nimble/Utils/Functional.swift; sourceTree = ""; }; + 0A9E891CB9DF8657942E071D38C98E43 /* Manager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Manager.swift; path = Source/Manager.swift; sourceTree = ""; }; + 0B6709EB25DE3912375784AD3BC1B514 /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Nimble/objc/NMBExceptionCapture.m; sourceTree = ""; }; 0B92BE0766CCF8576965938482AFF1AF /* KIF.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = KIF.modulemap; sourceTree = ""; }; - 0CF163798AB40BC182BADF1A70C1FF26 /* Nimble-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Nimble-Private.xcconfig"; sourceTree = ""; }; - 10332E3BE2AFCFBBC7899BE55657D321 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; - 10AEB7551B52C7F2D3CA534E7DED6195 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Nimble/Expectation.swift; sourceTree = ""; }; - 11CE684C396D416BEE56FAA4894E04BE /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; - 11F2FD41A9536D10CA99285EC83A4D67 /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Quick/ExampleGroup.swift; sourceTree = ""; }; + 0CBF6CEB14B406FBA2015072D1759A52 /* UIView-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView-KIFAdditions.h"; path = "Additions/UIView-KIFAdditions.h"; sourceTree = ""; }; + 0D35921395040F7CF27C93219AA395CC /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Quick/ExampleGroup.swift; sourceTree = ""; }; + 0EAF74E2C746BB82B523BCB3E054B356 /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; + 11605F3A03E9FFC751ADB04D6D253E91 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; + 11921B0F41019368FEECD4D0B4A10BDF /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; + 121096CE7676F61FC414EFD4F14DF26D /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; 123B9C0A891B3518B9EC6A4ABD725720 /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Quick/QuickSpec.h; sourceTree = ""; }; - 1274BD1A86317611969E3F0E49048D31 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; + 1356BD643088E178B626A3FC26B561C8 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; 13787225460CD3BB08ED46683D41AE07 /* Pods-Bequest.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Bequest.release.xcconfig"; sourceTree = ""; }; - 14228DCFE7BC1F1D2FE58E7C8559C8FA /* JTSImageViewController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JTSImageViewController-dummy.m"; sourceTree = ""; }; 1422EF9D4580B4C4B64CB69D6110EAD6 /* SSBaseTableCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSBaseTableCell.m; path = SSDataSources/SSBaseTableCell.m; sourceTree = ""; }; + 14A8BDD2E65C2335A718A8B38A53738C /* XCTestCase-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase-KIFAdditions.m"; path = "Additions/XCTestCase-KIFAdditions.m"; sourceTree = ""; }; + 16CBFAC9EFC6FBC7943F88A012583478 /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; + 16E6B3F03591552C5C37B930182D7680 /* CYRTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRTextView.h; path = CYRTextView/CYRTextView.h; sourceTree = ""; }; + 16F99199CDF32A38C25120A5C277EC36 /* NSError-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError-KIFAdditions.m"; path = "Additions/NSError-KIFAdditions.m"; sourceTree = ""; }; 171EA280C12F9C7778B8A9CB9CDF9659 /* Pods_Bequest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Bequest.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 173D186B6DEA70130C864E9CB35C0111 /* KIFSystemTestActor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFSystemTestActor.h; path = Classes/KIFSystemTestActor.h; sourceTree = ""; }; + 180108BAEB2ABD0B8466FFC482CD37CC /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Quick.modulemap; sourceTree = ""; }; 18355821A99BD8AD6B134A6FA48C800E /* Pods-BequestTests.adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BequestTests.adhoc.xcconfig"; sourceTree = ""; }; - 1A7B2B085203D6DCF3D1FAD30E065A61 /* KIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIF.h; path = Classes/KIF.h; sourceTree = ""; }; - 1AB78ADC58737B0400A0BA46CE14A7E5 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Quick/Configuration/Configuration.swift; sourceTree = ""; }; + 19AA3DAB83839B4BD80EA3E5F24AB029 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; 1ACCD4B72AAC4953442561EB463CE484 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1ADBF919CE04B632187FC04B32D4E50B /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Quick/World.swift; sourceTree = ""; }; 1B8D7BB186F179D69135F3536A7FF05B /* SSBaseCollectionCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSBaseCollectionCell.m; path = SSDataSources/SSBaseCollectionCell.m; sourceTree = ""; }; - 1C1580515EC3D41C6647D57573FEB266 /* CYRLayoutManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRLayoutManager.h; path = CYRTextView/CYRLayoutManager.h; sourceTree = ""; }; 1C1804343814EE7BB8F700DFC02DC46A /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1D42BD70609DDD05BAB86D86E9E6DE36 /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D6F8939B88FAA3DB9901A65839AB9C3 /* KIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIF.h; path = Classes/KIF.h; sourceTree = ""; }; 1DCAC1BE615E21660FD5C5925D16ABC4 /* Pods-Bequest-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Bequest-frameworks.sh"; sourceTree = ""; }; - 1F28050447910467D43ECBAD090F8C58 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; - 1FB1596AC74EF1200A36674569A943DB /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Nimble/Expression.swift; sourceTree = ""; }; - 1FCB051007D7D3A42CC2F39279691FFD /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/IOKit.framework; sourceTree = DEVELOPER_DIR; }; - 2001056F1DEF43E1CF7A7F54888F0432 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - 214DA1CE5B42230841839DFB2316442C /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Nimble/objc/DSL.h; sourceTree = ""; }; - 21BC45083650789D03E1C1E6664EFA93 /* NSError-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError-KIFAdditions.h"; path = "Additions/NSError-KIFAdditions.h"; sourceTree = ""; }; - 22C1428F3C8EFE2D15880C48F1ABA754 /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Nimble/Matchers/Match.swift; sourceTree = ""; }; + 1E1B75FAF675634E24F1B5CF0253AFCF /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Nimble/Wrappers/MatcherFunc.swift; sourceTree = ""; }; + 2075C1BBB0ECFA131E6FE3FD7D6694B1 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + 218A12E4ED0A2F1A3A4B4C3BFA4C71C6 /* CYRToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRToken.h; path = CYRTextView/CYRToken.h; sourceTree = ""; }; + 22BB72E2B37A07BEAC2648FDC5394A8C /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 22F3CDA150B06F676A6067EAD427EC2A /* UIWindow-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWindow-KIFAdditions.m"; path = "Additions/UIWindow-KIFAdditions.m"; sourceTree = ""; }; + 23267DDBB4E7CEB976A40B6F9B0ADE82 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; 237806E638FF350179CA13CA4A47F118 /* SSDataSources.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SSDataSources.modulemap; sourceTree = ""; }; 237C9A33C1E94317DD1147355FDC2737 /* Pods-BequestTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BequestTests-acknowledgements.plist"; sourceTree = ""; }; 23A6A75A34628FF1101A29F5692EFC84 /* pop-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "pop-Private.xcconfig"; sourceTree = ""; }; - 23E2289DE6960595CF06BCE8A360C4E9 /* JTSImageViewController-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "JTSImageViewController-Private.xcconfig"; sourceTree = ""; }; + 23C1B38437A221819669F6FFC6779980 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; 24632C3A020ED1452A4573BB11223E5F /* POPCGUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPCGUtils.mm; path = pop/POPCGUtils.mm; sourceTree = ""; }; + 2590A184E37A486B93A65D2386A5C8C5 /* KIF.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KIF.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 25A08ED3B934FF2DD94ECF1E8B540E40 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 25DF34C922C01ED58777F2F685BC9558 /* Quick-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Quick-Private.xcconfig"; sourceTree = ""; }; - 26883E9AE1B6D60D79EA37543B332075 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 269C3D45634633F92240A75F9C1A2782 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Nimble/Matchers/BeNil.swift; sourceTree = ""; }; + 26ADABE84F4F635F0797C002EC1F0471 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; 26F549AC9999BC18CC4DE9C1EFFE1876 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SnapKit.modulemap; sourceTree = ""; }; 27091F10BC8BA7BB110438A184A99BDF /* POPSpringAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPSpringAnimationInternal.h; path = pop/POPSpringAnimationInternal.h; sourceTree = ""; }; - 27825E317DB57D68905680EFF3CE1AAC /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; + 2724112B9EB2318D6A1E62307B8B9FE0 /* JTSImageViewController-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "JTSImageViewController-Private.xcconfig"; sourceTree = ""; }; 27F2D54582BC8558EB887C567B1E3E57 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; - 28263CEC31313F9D9314B54C1CA3237E /* NSBundle-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle-KIFAdditions.m"; path = "Additions/NSBundle-KIFAdditions.m"; sourceTree = ""; }; + 2864BD94E5D7F20714BED9039F8AA94A /* KIFTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTestCase.h; path = Classes/KIFTestCase.h; sourceTree = ""; }; 28712CD139461B926037F77B1AFA710C /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; - 28B6A4EFAA9D1DFD880FE9D09B5C49F3 /* JTSImageInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSImageInfo.m; path = Source/JTSImageInfo.m; sourceTree = ""; }; + 29614F8874FE9CC2EF123F76F3080906 /* KIF-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KIF-umbrella.h"; sourceTree = ""; }; 2985BC0701AC72452DC34865D8A11E19 /* SSSectionedDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSSectionedDataSource.h; path = SSDataSources/SSSectionedDataSource.h; sourceTree = ""; }; - 2A4207D4FAC8BCC7D946C89454832601 /* JTSAnimatedGIFUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSAnimatedGIFUtility.m; path = Source/JTSAnimatedGIFUtility.m; sourceTree = ""; }; - 2A8FC02377E2495A2A2ADA7ABE8A4090 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Nimble/Matchers/EndWith.swift; sourceTree = ""; }; - 2BEF08A236B789F09F9726F32FF67319 /* NonNilMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NonNilMatcherWrapper.swift; path = Nimble/Wrappers/NonNilMatcherWrapper.swift; sourceTree = ""; }; 2F1AD8441A3B8DBF242FF047A1C5EFCC /* TTTAttributedLabel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TTTAttributedLabel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2F4FF546ED49400843116E9B9D787EB4 /* KIF-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "KIF-dummy.m"; sourceTree = ""; }; + 2F1CA679E2CB7619B5F3F140293624ED /* KIFUITestActor-ConditionalTests.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "KIFUITestActor-ConditionalTests.m"; path = "Classes/KIFUITestActor-ConditionalTests.m"; sourceTree = ""; }; 2F5E0F40C8F6EE210ED176991E10D74D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2F70B00664F3038D09C26CC0DC7A74B0 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Quick/DSL/QCKDSL.m; sourceTree = ""; }; 30ABDDB885B263A81EE4BCC13B55D2A8 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; 319D533F7AAA2E5FB95178146E0D58A0 /* pop-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "pop-dummy.m"; sourceTree = ""; }; - 31D999996A39F15D4AD18B8E0CF60F51 /* JTSImageViewController-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JTSImageViewController-umbrella.h"; sourceTree = ""; }; 31E34DF4E2EB0B2E234065F1CD662A7C /* EdgeInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EdgeInsets.swift; path = Source/EdgeInsets.swift; sourceTree = ""; }; - 32037A908779F87A06239145440D57A7 /* Alamofire-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Alamofire-Private.xcconfig"; sourceTree = ""; }; - 329386B6A7EAE352BCE3A9D5C3BBAA39 /* UIWindow-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWindow-KIFAdditions.m"; path = "Additions/UIWindow-KIFAdditions.m"; sourceTree = ""; }; 32D8806EFDFBD7F493C9C42910880CE2 /* POPSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPSpringAnimation.h; path = pop/POPSpringAnimation.h; sourceTree = ""; }; - 363424511CB41EA0594034DC201187B3 /* KIFTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTestCase.m; path = Classes/KIFTestCase.m; sourceTree = ""; }; + 372907426260F8F2104726D84EFA921B /* UIImage+JTSImageEffects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+JTSImageEffects.h"; path = "Source/UIImage+JTSImageEffects.h"; sourceTree = ""; }; + 37D24890E15C71EC3086568721D9FBEA /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Quick/DSL/QCKDSL.m; sourceTree = ""; }; + 3897373441411B469F9993E28898F233 /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Nimble/objc/NMBExceptionCapture.h; sourceTree = ""; }; + 38E7423F1630FCAC235A64B03E328E8D /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Nimble/Matchers/Match.swift; sourceTree = ""; }; 397E935E1758C55C5428F19A235024C9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 39F01D027E4644063A527D3BB6BCCCBC /* UIApplication-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication-KIFAdditions.h"; path = "Additions/UIApplication-KIFAdditions.h"; sourceTree = ""; }; - 3AFC59EDABF3295A16CED3E93ED88185 /* KIFTypist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTypist.m; path = Classes/KIFTypist.m; sourceTree = ""; }; + 39A805F257A1568648EABF56D91D0A6C /* CYRLayoutManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRLayoutManager.h; path = CYRTextView/CYRLayoutManager.h; sourceTree = ""; }; 3B78237471AA661C5DF07E8640FE02B4 /* SSDataSources.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSDataSources.h; path = SSDataSources/SSDataSources.h; sourceTree = ""; }; 3BE0A5474231E681FF31BC4C5588001A /* Pods-BequestTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BequestTests-frameworks.sh"; sourceTree = ""; }; - 3EC5941FCB26DBFFFF600B6D89D3A81D /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; + 3C154808C3EA0C9780330FA192084A03 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; 4020E892773275E8C45D090B2B792C19 /* POPCGUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPCGUtils.h; path = pop/POPCGUtils.h; sourceTree = ""; }; - 4048B66EDA617685CCC5C61BFF8DC6B5 /* UIView-Debugging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView-Debugging.m"; path = "Additions/UIView-Debugging.m"; sourceTree = ""; }; - 40C72F790FF06E977893C02369BE9D43 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - 410F221B8E275FA4F458BCA908710F03 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; + 405B4502D4AB2D836108D1FED5C43C08 /* UIEvent+KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIEvent+KIFAdditions.h"; path = "Additions/UIEvent+KIFAdditions.h"; sourceTree = ""; }; + 40811F91302EFA74F5A323FD165B53A7 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Quick/DSL/DSL.swift; sourceTree = ""; }; 415A63F3B45DB4DD3277C62FB42B0B4E /* POPLayerExtras.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPLayerExtras.mm; path = pop/POPLayerExtras.mm; sourceTree = ""; }; - 434BE4C3770384B66333265AE2D38434 /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; - 437B75CB837A4C95ABE7081B94D54D23 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; - 44363D6432F3FF3BC36B21B63954CE28 /* CYRLayoutManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRLayoutManager.m; path = CYRTextView/CYRLayoutManager.m; sourceTree = ""; }; + 41CEE46F312E5EA1DFC16168F1D1AE74 /* UIAccessibilityElement-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAccessibilityElement-KIFAdditions.m"; path = "Additions/UIAccessibilityElement-KIFAdditions.m"; sourceTree = ""; }; 4482DEC2DA0E46C72E5B7817FA9894F9 /* SSBaseTableCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSBaseTableCell.h; path = SSDataSources/SSBaseTableCell.h; sourceTree = ""; }; - 44A582751F1C012739125699AC538F0C /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; - 44CBDE1FAFE5DFD99B551E90F8C77150 /* Failure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Failure.swift; path = Quick/Failure.swift; sourceTree = ""; }; - 4561013D0933D6F25EB1739A533A1039 /* Upload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Upload.swift; path = Source/Upload.swift; sourceTree = ""; }; + 44AA0F0C8192B78B685B619E1F765909 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; 46A9D6A08AFD05365FEBE1A95ADDDDB9 /* SSDataSources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SSDataSources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4754A3AD9737028621E094661F11854C /* AsyncMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncMatcherWrapper.swift; path = Nimble/Wrappers/AsyncMatcherWrapper.swift; sourceTree = ""; }; - 483FB256E5E1CB1D268FB61C1C910229 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; + 475D0D878B7489C0C645C3B07FF33C2D /* KIFSystemTestActor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFSystemTestActor.m; path = Classes/KIFSystemTestActor.m; sourceTree = ""; }; 4893F89B33578F1546F10CF6341FB22A /* POPAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationInternal.h; path = pop/POPAnimationInternal.h; sourceTree = ""; }; - 48BD0D5FB3BBB26C910CEEED43B820E6 /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Nimble/Utils/Stringers.swift; sourceTree = ""; }; + 4A7DC1108D53AFB15564AF955DEE0328 /* UITouch-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITouch-KIFAdditions.h"; path = "Additions/UITouch-KIFAdditions.h"; sourceTree = ""; }; 4B105BB63A3A12B56512A137A924B862 /* TTTAttributedLabel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TTTAttributedLabel-dummy.m"; sourceTree = ""; }; - 4C3F2BE48FDE522D3FB342C32F373B0A /* KIFSystemTestActor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFSystemTestActor.h; path = Classes/KIFSystemTestActor.h; sourceTree = ""; }; - 4CB05123443C01AD94145A437BA6FD55 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - 4D6E38888B2D2A7A629BC69149EFEB1C /* NSError-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError-KIFAdditions.m"; path = "Additions/NSError-KIFAdditions.m"; sourceTree = ""; }; - 4D7652F17DE602CFD8B5EFCC0BB3731F /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Quick/Hooks/Closures.swift; sourceTree = ""; }; 4DD409AD9110720BCEB0C89B539DDD5B /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 4E2D931C920C5062E0FFD2BB92A131B9 /* UIWindow-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWindow-KIFAdditions.h"; path = "Additions/UIWindow-KIFAdditions.h"; sourceTree = ""; }; 4EBCC76422111CCD5387F73F46298427 /* POPDecayAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPDecayAnimation.mm; path = pop/POPDecayAnimation.mm; sourceTree = ""; }; 4F03D7CE4DC4E857B7C0991F55189D72 /* SSArrayDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSArrayDataSource.h; path = SSDataSources/SSArrayDataSource.h; sourceTree = ""; }; + 4F0DBE09CB013241C192D440C8F87D92 /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; 4F144CE6E684AC0402633E64A3864A76 /* POPAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimator.h; path = pop/POPAnimator.h; sourceTree = ""; }; 4F6D2E4C31E8DCE3AE98E77FD3F6BE3E /* Pods-BequestTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-BequestTests.modulemap"; sourceTree = ""; }; - 500643C46CC0FE7BF20A92CEFBAE689A /* KIFUITestActor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFUITestActor.h; path = Classes/KIFUITestActor.h; sourceTree = ""; }; + 4FA1F276813E47738EA734A428A55F29 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Nimble/Expectation.swift; sourceTree = ""; }; 502F035A629479EF9DAF5B7EDBE39CD9 /* Pods-BequestTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BequestTests-resources.sh"; sourceTree = ""; }; - 50ADC6CCED64B61234BC9216B58B06AD /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; 50BF8A7B711739F2C5CA6496D03C7CB7 /* POPLayerExtras.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPLayerExtras.h; path = pop/POPLayerExtras.h; sourceTree = ""; }; 514C8DB54367192914F16B7A194FAB03 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; 516F7A9DF0414C9A90AA2241CA7EBEB5 /* Pods-Bequest-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Bequest-umbrella.h"; sourceTree = ""; }; - 51A88464405BE2ED2CF196574036EE57 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - 51B2569224F03B235C29D6510005280E /* JTSSimpleImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSSimpleImageDownloader.h; path = Source/JTSSimpleImageDownloader.h; sourceTree = ""; }; - 527F7C2AC9F6C38201D2894F44308243 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 52178278EAC9B330CAE536D89D686220 /* NSException-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSException-KIFAdditions.h"; path = "Additions/NSException-KIFAdditions.h"; sourceTree = ""; }; 52926D1EFE376232CC712C2502E85488 /* POPAnimationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationPrivate.h; path = pop/POPAnimationPrivate.h; sourceTree = ""; }; - 52E62A74ECEAF84C75D6BC1EB2585E9D /* UIImage+JTSImageEffects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+JTSImageEffects.m"; path = "Source/UIImage+JTSImageEffects.m"; sourceTree = ""; }; - 5384F92373DBD8B2710D215774CC361B /* CYRTextView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CYRTextView-umbrella.h"; sourceTree = ""; }; - 54398A32EDCB73AA88BECA887B69A2F2 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; - 547D8D6BB97C66ACBFEBE650814898D0 /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; - 54A0E49A0F061F8D323C06BA83DFB1D8 /* UIImage+JTSImageEffects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+JTSImageEffects.h"; path = "Source/UIImage+JTSImageEffects.h"; sourceTree = ""; }; + 52D7FB49BB8FB96D615DCE56D7D1269A /* Poll.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poll.swift; path = Nimble/Utils/Poll.swift; sourceTree = ""; }; + 531BA86958F8C95862577AE08939E2A0 /* KIFTestStepValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTestStepValidation.h; path = Classes/KIFTestStepValidation.h; sourceTree = ""; }; + 53C682FAF2DD677E70C206574DB1BE4F /* JTSImageViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSImageViewController.h; path = Source/JTSImageViewController.h; sourceTree = ""; }; + 54BB43F30B0C3D230FBC16FC1E0A889B /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Nimble/DSL.swift; sourceTree = ""; }; 54D503870D4C47209120F7E3AA2E3C22 /* CYRTextView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CYRTextView.xcconfig; sourceTree = ""; }; - 57AF7DD09BD544E2B51BE30372C0E70C /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - 5A85EC60E0173AE3F015DE9C7327BE3A /* KIFUITestActor-ConditionalTests.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "KIFUITestActor-ConditionalTests.h"; path = "Classes/KIFUITestActor-ConditionalTests.h"; sourceTree = ""; }; + 54F52A5ED228D7ADB20FFFC9FA6D215F /* CGGeometry-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CGGeometry-KIFAdditions.m"; path = "Additions/CGGeometry-KIFAdditions.m"; sourceTree = ""; }; + 55DD91541467ED26B85591597AEB3BDD /* JTSSimpleImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSSimpleImageDownloader.h; path = Source/JTSSimpleImageDownloader.h; sourceTree = ""; }; + 58BEFE52277E40721C5945997E3C0D00 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Nimble/Matchers/EndWith.swift; sourceTree = ""; }; 5A903B8C9632310801B91FD678FB2CFF /* Pods-Bequest.adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Bequest.adhoc.xcconfig"; sourceTree = ""; }; + 5B37C6FDCF8CA2E3E232F5A87219EFDB /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; 5CF66387E643942640095339385517A5 /* POPAnimationEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationEvent.h; path = pop/POPAnimationEvent.h; sourceTree = ""; }; - 5D065AE32A9E56898F5AFF1D81EC34B0 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Nimble/DSL+Wait.swift"; sourceTree = ""; }; - 610CE93A508A7A4EFA7DEEDA068C623A /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; + 5DE6F423FEBCED9012594B701701A3F5 /* NSFileManager-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager-KIFAdditions.m"; path = "Additions/NSFileManager-KIFAdditions.m"; sourceTree = ""; }; + 5E5ABA8DFA84D76375886BE453E65FE6 /* CYRTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRTextView.m; path = CYRTextView/CYRTextView.m; sourceTree = ""; }; + 5FB37AA4C0E9EA8C536C48528DD71B0D /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; 611665DAAE257E6C45AF83648DF8055B /* POPAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimation.h; path = pop/POPAnimation.h; sourceTree = ""; }; 6124A9BA9F7E5282280C279E5387D351 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; + 61B878A23F5526A96B72F14C8DE50D54 /* UIScrollView-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView-KIFAdditions.h"; path = "Additions/UIScrollView-KIFAdditions.h"; sourceTree = ""; }; + 61B8A72200325E7D37C8BCE4F261CF0B /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Quick/QuickSpec.m; sourceTree = ""; }; 61E561EC7D919F1AF827E71C9BDAC67F /* POPAnimationRuntime.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationRuntime.mm; path = pop/POPAnimationRuntime.mm; sourceTree = ""; }; 62367CB40CF5DB60DCA3D47CDD221365 /* TransformationMatrix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransformationMatrix.h; path = pop/WebCore/TransformationMatrix.h; sourceTree = ""; }; + 6271D265339354367BE6413FD280535E /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 64E7728EF3FF3398E815CB1CCF42CBC2 /* POPAnimatorPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimatorPrivate.h; path = pop/POPAnimatorPrivate.h; sourceTree = ""; }; - 650456B7B50E845613048E90422E2EA0 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Nimble/Matchers/BeNil.swift; sourceTree = ""; }; - 662556BC03F803F72810B10B3AF78486 /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; + 65B55221EF4AEA606C2E6CC2D2F493D7 /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Quick/Configuration/QuickConfiguration.m; sourceTree = ""; }; 668C0442E0974104A447B839AD9D34E5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 67025B82BCA39932BB42BE549C0BED39 /* CYRTextView-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CYRTextView-Private.xcconfig"; sourceTree = ""; }; - 672B9EEC660D3187E7FA7DE73B5FA277 /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; - 67AF72F76F678FBECE6D876DC06780C4 /* NSFileManager-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager-KIFAdditions.m"; path = "Additions/NSFileManager-KIFAdditions.m"; sourceTree = ""; }; + 6760C75C78D828F56BED77EFCBA3047B /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; 67B066F38CAEBB80FF7917FA4FA83EC9 /* POPPropertyAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPPropertyAnimationInternal.h; path = pop/POPPropertyAnimationInternal.h; sourceTree = ""; }; 67BD5EA9ED222D571C909B92355A7943 /* POPAnimationTracerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationTracerInternal.h; path = pop/POPAnimationTracerInternal.h; sourceTree = ""; }; 67CA5F0D6F5C6F9D71B4529E68F93F7C /* pop-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "pop-prefix.pch"; sourceTree = ""; }; 689BB4771D8CD52D6DE8D9DD7F096485 /* POPAnimator.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimator.mm; path = pop/POPAnimator.mm; sourceTree = ""; }; + 69AD8BD7FCC1E3E6CE8CEE0AAF005BFA /* KIFTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTestCase.m; path = Classes/KIFTestCase.m; sourceTree = ""; }; 69DBF49E63F81C263F21068D73D359B9 /* SnapKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SnapKit-Private.xcconfig"; sourceTree = ""; }; - 6B616162927A9417C221CF80C94CAB87 /* CYRTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRTextView.h; path = CYRTextView/CYRTextView.h; sourceTree = ""; }; 6B77315AF0616A0B0786460C78A8804B /* POPBasicAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPBasicAnimation.mm; path = pop/POPBasicAnimation.mm; sourceTree = ""; }; 6BC8433E1A487D9726719E1CC8AC8EA1 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6C2885885385210B89003CC63E3576D9 /* JTSImageViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSImageViewController.m; path = Source/JTSImageViewController.m; sourceTree = ""; }; 6C2C89FBF8FA3BD91E6E2E3F4CBCA1BA /* POPMath.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPMath.mm; path = pop/POPMath.mm; sourceTree = ""; }; - 6C7DD1670DDC0C9489B52862E424F303 /* CYRTextView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CYRTextView-dummy.m"; sourceTree = ""; }; + 6C7CACBF53DA3D4391494BDD84A0961B /* UIApplication-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication-KIFAdditions.m"; path = "Additions/UIApplication-KIFAdditions.m"; sourceTree = ""; }; 6C98DA9122E860CE8F45C8AE646A4749 /* POPPropertyAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPPropertyAnimation.h; path = pop/POPPropertyAnimation.h; sourceTree = ""; }; 6D2547065552707BF0AB18F37B2B1B5A /* Pods-Bequest-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Bequest-acknowledgements.markdown"; sourceTree = ""; }; - 6D259423DBC31528C00931142607EAF2 /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; 6D75DAF66935015006B1396B8D6943DC /* JTSImageViewController-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JTSImageViewController-prefix.pch"; sourceTree = ""; }; - 6DC0B9275C255E70810A66865D2AB2E7 /* UITableView-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView-KIFAdditions.h"; path = "Additions/UITableView-KIFAdditions.h"; sourceTree = ""; }; + 6E53F42045FF26A0DD6DAD6C4B000B43 /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; 6E6D031151C0087A3CACE7B9B09DA52F /* TTTAttributedLabel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = TTTAttributedLabel.modulemap; sourceTree = ""; }; + 70C16C7DB602EBBEFD0FEF4A685EAF5B /* ObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjCMatcher.swift; path = Nimble/Wrappers/ObjCMatcher.swift; sourceTree = ""; }; 721020A02B66A14D61C9E07D18D2448D /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; 723CFE8D4DBA96145DC7E7CB51A2B564 /* SSSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSSection.h; path = SSDataSources/SSSection.h; sourceTree = ""; }; + 753ECB26DF02BC6FB5EDCE015FA94FC3 /* UITableView-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView-KIFAdditions.m"; path = "Additions/UITableView-KIFAdditions.m"; sourceTree = ""; }; 766AC80DB88F137D6672831084534CA8 /* TTTAttributedLabel-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "TTTAttributedLabel-Private.xcconfig"; sourceTree = ""; }; + 76750EAB7AAA1536D32EC294EFAA561A /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Nimble/Utils/Stringers.swift; sourceTree = ""; }; 76E8C24585A58DB88F54A8D1F5454994 /* CYRTextView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = CYRTextView.modulemap; sourceTree = ""; }; - 78485C36E80C830B139AA2A46AE699C1 /* FullMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FullMatcherWrapper.swift; path = Nimble/Wrappers/FullMatcherWrapper.swift; sourceTree = ""; }; + 77523018BC098F720990ED8DF56A15DA /* JTSAnimatedGIFUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSAnimatedGIFUtility.m; path = Source/JTSAnimatedGIFUtility.m; sourceTree = ""; }; + 7888B13154E5D32CB2F5C4FCE9DEF62A /* UIView-Debugging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView-Debugging.h"; path = "Additions/UIView-Debugging.h"; sourceTree = ""; }; + 78B4688EF7FA44258A94CA6DC682F27E /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Quick/ExampleMetadata.swift; sourceTree = ""; }; + 78C1E52E63883123E38C86D4E1451DA1 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Nimble/FailureMessage.swift; sourceTree = ""; }; + 79711F3D8428ECCC1DFDF49D06BCD89D /* CYRToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRToken.m; path = CYRTextView/CYRToken.m; sourceTree = ""; }; 7A6EA13BCA3D2362191AE75C028C596A /* POPAnimationTracer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationTracer.h; path = pop/POPAnimationTracer.h; sourceTree = ""; }; - 7ABAA6E33165C6A0E93AAF684ACA9A0C /* Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Download.swift; path = Source/Download.swift; sourceTree = ""; }; 7AFC40FC4CB3C47A068CE02A8FA03DAF /* SSExpandingDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSExpandingDataSource.h; path = SSDataSources/SSExpandingDataSource.h; sourceTree = ""; }; + 7B207866F1BE787B22B90B1236A5F395 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; 7BFB434A29B47ACF223E3201A6D1DE32 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; + 7C12B5AAB10C9D34B23FBC3B8791683D /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Quick/Configuration/Configuration.swift; sourceTree = ""; }; 7CCF80C1C7EAD56F24BC6B2B531F7D9C /* JTSImageViewController.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = JTSImageViewController.modulemap; sourceTree = ""; }; + 7E32B9222D899D714B268A32C4B498B0 /* UIAccessibilityElement-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAccessibilityElement-KIFAdditions.h"; path = "Additions/UIAccessibilityElement-KIFAdditions.h"; sourceTree = ""; }; + 7E742E34998B3D7CFBD57EA6C0B61912 /* UIApplication+JTSImageViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+JTSImageViewController.h"; path = "Source/UIApplication+JTSImageViewController.h"; sourceTree = ""; }; 7EADD47CB95E2526CBBF186336E724BE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7EB8DC6EAAC0B1B546773DD233817E7B /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Nimble/Wrappers/MatcherFunc.swift; sourceTree = ""; }; 7F4269A2EC839DFB62FD0C2F5340D5F7 /* FloatConversion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FloatConversion.h; path = pop/WebCore/FloatConversion.h; sourceTree = ""; }; 7FF8D115BC96ABEC9602F9FD8E3C15AF /* KIF.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = KIF.xcconfig; sourceTree = ""; }; + 7FFDA6E1850A160A5A789334B2FF87B8 /* JTSImageInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSImageInfo.h; path = Source/JTSImageInfo.h; sourceTree = ""; }; + 80618011C4C7C5C6FC6C6F3E4B44837E /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; 80B48B71F3C4D9947C748FD64F971AA0 /* pop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = pop.xcconfig; sourceTree = ""; }; 8104D344ABCA9FC578ADF8CA11F4C201 /* TTTAttributedLabel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TTTAttributedLabel.h; path = TTTAttributedLabel/TTTAttributedLabel.h; sourceTree = ""; }; 82132FCBE7E9C1635E35BCF78B152734 /* POPAnimationRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationRuntime.h; path = pop/POPAnimationRuntime.h; sourceTree = ""; }; + 82FA4886BF6369E9D60D7A2B57FD2A6A /* JTSAnimatedGIFUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSAnimatedGIFUtility.h; path = Source/JTSAnimatedGIFUtility.h; sourceTree = ""; }; 836E7B98499CB1A351E14668AB5B32A8 /* Pods-Bequest-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Bequest-dummy.m"; sourceTree = ""; }; - 83AB69D3BE8A7AC58F8CF33F0140B391 /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Quick/World.swift; sourceTree = ""; }; - 84123766E5DBAA45AAB65B2375C008AB /* KIF.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KIF.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8622FA625369C32FD340637128EF7AA8 /* SSBaseCollectionCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSBaseCollectionCell.h; path = SSDataSources/SSBaseCollectionCell.h; sourceTree = ""; }; + 8701B65DC7C09DDA31B53BE85E9A89DD /* KIFTypist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTypist.m; path = Classes/KIFTypist.m; sourceTree = ""; }; 875E37BB951B888AE46D6049333E62AC /* SSDataSources-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SSDataSources-Private.xcconfig"; sourceTree = ""; }; - 87BB7874A32228CFA47876C3A5DF07A5 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; + 87D0788A0F13385145E57F6A4150CAF8 /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Nimble/Matchers/Equal.swift; sourceTree = ""; }; 8867D26D0EC15150306EAEF03D036A51 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 88D7A54B8D6AD7457B3462617555C5AE /* AsyncMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncMatcherWrapper.swift; path = Nimble/Wrappers/AsyncMatcherWrapper.swift; sourceTree = ""; }; + 88E9D8B4CB0E0C65527FB3442BF4550B /* KIFTestActor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTestActor.m; path = Classes/KIFTestActor.m; sourceTree = ""; }; 898734022DCBD64412BFFCE37801FF57 /* SSDataSources.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SSDataSources.xcconfig; sourceTree = ""; }; 8996A7AF03454B50FFFC3D4A2614590F /* SSBaseCollectionReusableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSBaseCollectionReusableView.m; path = SSDataSources/SSBaseCollectionReusableView.m; sourceTree = ""; }; 8A18DA0A5B6ABC6C1AAC04D51568F62C /* POPAnimationEvent.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationEvent.mm; path = pop/POPAnimationEvent.mm; sourceTree = ""; }; 8ABA375A0F69245074812899E06EE5AF /* Pods_BequestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_BequestTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8BF5D01A54960E559E96B8C7938A5631 /* BasicMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BasicMatcherWrapper.swift; path = Nimble/Wrappers/BasicMatcherWrapper.swift; sourceTree = ""; }; + 8B128DCB5E5CB4E466C021E1D8C5850D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8B394F5B770D37085919D03E52F17918 /* UIView-Debugging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView-Debugging.m"; path = "Additions/UIView-Debugging.m"; sourceTree = ""; }; 8C35E03F999CD44A4EF5CB9A6CDE0349 /* Pods-Bequest-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Bequest-resources.sh"; sourceTree = ""; }; 8C397F68579C0849CC335AC09943704B /* Pods-BequestTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BequestTests-acknowledgements.markdown"; sourceTree = ""; }; + 8C3FD0F350AD317741D270236ED41E55 /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Quick/Hooks/Closures.swift; sourceTree = ""; }; + 8D2A14A7210EFB872EFE003D6968AA77 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; + 8D2CA23EAFFF389CDB8493E5BCA83167 /* NSBundle-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle-KIFAdditions.m"; path = "Additions/NSBundle-KIFAdditions.m"; sourceTree = ""; }; 8D9DDD97934306A251EF1B719B887E30 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; - 8DE445A6F79FE74E418837D4BFC3DB13 /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; - 8E1F94C884E9389A431665CC7182F48C /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; - 8E8209D37BD19D6E89AFA0B71DCC801C /* NSFileManager-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager-KIFAdditions.h"; path = "Additions/NSFileManager-KIFAdditions.h"; sourceTree = ""; }; 8EDDD7A4D57C63360CE9D203E573C272 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; 8F2AE40A2AF416AB7D324B86C78B44E1 /* Pods-BequestTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BequestTests.debug.xcconfig"; sourceTree = ""; }; + 90FD5C22228E2BC5D1F37774F0BA7A83 /* JTSImageViewController-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JTSImageViewController-umbrella.h"; sourceTree = ""; }; + 9127717A2F26101C582130A25DB9799D /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Nimble.modulemap; sourceTree = ""; }; 944707D7E520E4A6A72976E29743AE8B /* SnapKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SnapKit.swift; path = Source/SnapKit.swift; sourceTree = ""; }; - 94C4DC0F8F5B1F152E6DC6633FD5B3AB /* CYRTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRTextView.m; path = CYRTextView/CYRTextView.m; sourceTree = ""; }; - 97273F05A5F62071897A4CAC274F75F0 /* UIAutomationHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIAutomationHelper.h; path = Classes/UIAutomationHelper.h; sourceTree = ""; }; + 955DF05579F0D466971C213A9556DE30 /* ObjCExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjCExpectation.swift; path = Nimble/ObjCExpectation.swift; sourceTree = ""; }; 97330252BC897995B0C4F10DDFC124A4 /* Pods-Bequest.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Bequest.debug.xcconfig"; sourceTree = ""; }; - 983C0C513420899DB73E6341F0A12B43 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Nimble/Nimble.h; sourceTree = ""; }; + 9828A9F58180B6EF3B6EEB345E5C27EB /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; 989589C49DD27EC8EA7DB9760C63EFBF /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; - 99D19B9C51464D38F037647963ED567D /* UIApplication+JTSImageViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+JTSImageViewController.m"; path = "Source/UIApplication+JTSImageViewController.m"; sourceTree = ""; }; - 9B2720A6085B1C998C84A8F3D0AA6EBF /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Nimble/Matchers/Contain.swift; sourceTree = ""; }; + 9AD8AAD3940890649806F83E37DC2A59 /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; + 9B5A5AB58CA309B42C69A6AA43312325 /* UIAutomationHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UIAutomationHelper.m; path = Classes/UIAutomationHelper.m; sourceTree = ""; }; 9C82D9964D43D47DFB2BDABFDBC07CE6 /* Pods-Bequest.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Bequest.modulemap"; sourceTree = ""; }; + 9D2CA13226BC5E34B462016CDB7CAC10 /* JTSSimpleImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSSimpleImageDownloader.m; path = Source/JTSSimpleImageDownloader.m; sourceTree = ""; }; 9D848FAE6D8BA134F5FD0D589F886476 /* POPVector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPVector.h; path = pop/POPVector.h; sourceTree = ""; }; 9DF361654C5142AF241256F6E523A093 /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Quick/DSL/QCKDSL.h; sourceTree = ""; }; 9ED7F52C55237E4B17DB13FB3C8260DC /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Quick/Configuration/QuickConfiguration.h; sourceTree = ""; }; - 9EEF6241A0B8460DB41FF427CE2E0D25 /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Nimble/objc/NMBExceptionCapture.h; sourceTree = ""; }; - 9FA12261A7706A6ED68FB40958A7CB2C /* UIAccessibilityElement-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAccessibilityElement-KIFAdditions.m"; path = "Additions/UIAccessibilityElement-KIFAdditions.m"; sourceTree = ""; }; - 9FCF01E6614650FAF12BB1D93C20E651 /* CYRToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRToken.h; path = CYRTextView/CYRToken.h; sourceTree = ""; }; + 9FFF2A6A74643EE485885896525C38A5 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; A0087E35D8A90A16F8B76E10B32B5F30 /* SSSectionedDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSSectionedDataSource.m; path = SSDataSources/SSSectionedDataSource.m; sourceTree = ""; }; A0D594924180B39F8A5834459112D445 /* TTTAttributedLabel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TTTAttributedLabel-prefix.pch"; sourceTree = ""; }; - A164BF32F4B3E62B607F661F27840667 /* UIApplication-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication-KIFAdditions.m"; path = "Additions/UIApplication-KIFAdditions.m"; sourceTree = ""; }; - A357FB205502BB3DF4123EC4345F10A9 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; + A210EC4B3119DEE15AA316B80344562D /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Nimble/DSL+Wait.swift"; sourceTree = ""; }; + A279DCABBCCEEFB7178E0E5563B9734F /* JTSImageViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JTSImageViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A2F335E608E9B0F0B935C64E1882A39D /* Alamofire-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Alamofire-Private.xcconfig"; sourceTree = ""; }; A41053A37D82FAAC3F512BCD06C5F77C /* TTTAttributedLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TTTAttributedLabel.m; path = TTTAttributedLabel/TTTAttributedLabel.m; sourceTree = ""; }; - A468974117B51BBA51F4F6A4F01DC941 /* UIView-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView-KIFAdditions.h"; path = "Additions/UIView-KIFAdditions.h"; sourceTree = ""; }; - A479E13490C090B52C4D03CE31283FA2 /* UITableView-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView-KIFAdditions.m"; path = "Additions/UITableView-KIFAdditions.m"; sourceTree = ""; }; - A4E4D99E7DC90CC09A54051ABC3F3EC7 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; + A4DEE8D5121520CCD099DA0175AC7D2C /* CYRTextView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CYRTextView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A4FBA2EDB070637586E46851905B46DC /* SSCoreDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSCoreDataSource.h; path = SSDataSources/SSCoreDataSource.h; sourceTree = ""; }; - A69780536F605A9CD445862B1F3093A4 /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Quick/QuickSpec.m; sourceTree = ""; }; + A688F456FE2DE8A5067DFBE9678E762E /* JTSImageInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSImageInfo.m; path = Source/JTSImageInfo.m; sourceTree = ""; }; A6A305819A84B004436129EA00306EFF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A6D3A462E7FEBB18F60382B9363819A9 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Nimble/Nimble.h; sourceTree = ""; }; A6F3F9C495FE0D3A92641C51B48841BC /* SSBaseHeaderFooterView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSBaseHeaderFooterView.h; path = SSDataSources/SSBaseHeaderFooterView.h; sourceTree = ""; }; - A6F580907FAACA67BE2837DA09556DCD /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; - A704DE73DE7894D9A6A07A6FC3324587 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Nimble/DSL.swift; sourceTree = ""; }; - A731DD2A4467CF346F9E25CEE15C4C27 /* UITouch-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITouch-KIFAdditions.m"; path = "Additions/UITouch-KIFAdditions.m"; sourceTree = ""; }; - A73B4773D257674B1A1AE2E72CCF4EF5 /* KIFTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTestCase.h; path = Classes/KIFTestCase.h; sourceTree = ""; }; A75E64C2BD53937D60CF1AE22F166522 /* Pods-BequestTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-BequestTests-umbrella.h"; sourceTree = ""; }; A7D14E368A36EBBBC8D5ADF7EDAB1618 /* POPBasicAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPBasicAnimation.h; path = pop/POPBasicAnimation.h; sourceTree = ""; }; + A820C5F5CFA7DA0573E5BECA3296FBA9 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; A8D43A04254D2E74269A271E313A9EE3 /* POPDecayAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPDecayAnimation.h; path = pop/POPDecayAnimation.h; sourceTree = ""; }; AA0D3F06522D73208ECEEF119CE8E118 /* SSDataSources-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSDataSources-umbrella.h"; sourceTree = ""; }; + ABA8C21D9E18208876108E15CBC96705 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Quick/DSL/World+DSL.swift"; sourceTree = ""; }; ABBBED96611C1932AE6F405F412F465E /* POPAnimationTracer.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationTracer.mm; path = pop/POPAnimationTracer.mm; sourceTree = ""; }; - ABE851CF4FC6AAE3F3D99D49FEA9C343 /* XCTestCase-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase-KIFAdditions.h"; path = "Additions/XCTestCase-KIFAdditions.h"; sourceTree = ""; }; + ABF16314F074E4672CDAC392884CFD52 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; + ACCAEE32479C3E260B73959576CE44B7 /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Quick/Callsite.swift; sourceTree = ""; }; ACE457106000F6DDAB2B35B1CF706ACC /* SSExpandingDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSExpandingDataSource.m; path = SSDataSources/SSExpandingDataSource.m; sourceTree = ""; }; - AD8459A2B4424D6434E1B04646BD9F20 /* JTSSimpleImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSSimpleImageDownloader.m; path = Source/JTSSimpleImageDownloader.m; sourceTree = ""; }; ADB368C98C0B5B006F33471D08DBD10D /* ViewController+SnapKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ViewController+SnapKit.swift"; path = "Source/ViewController+SnapKit.swift"; sourceTree = ""; }; - ADE7702F486B81E4C6CE9D4EC1CAD4A5 /* JTSImageViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSImageViewController.h; path = Source/JTSImageViewController.h; sourceTree = ""; }; ADE932DFE1DD76AC0D15F958BECDE899 /* POPCustomAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPCustomAnimation.mm; path = pop/POPCustomAnimation.mm; sourceTree = ""; }; - AE56208F2505A11D9640FF5D3D3C11B6 /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Nimble/objc/NMBExceptionCapture.m; sourceTree = ""; }; - AEDBBEF180F7C83EB57CDEF44F4D82F1 /* UIEvent+KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIEvent+KIFAdditions.m"; path = "Additions/UIEvent+KIFAdditions.m"; sourceTree = ""; }; AF60CD9FFEF13C6DF8BDC222DF6A0CCF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AFE157C77B6EB894C72D360B3F73C210 /* Poll.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poll.swift; path = Nimble/Utils/Poll.swift; sourceTree = ""; }; + AF8E190716C2C0C1BCCB4917CF835086 /* CYRTextView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CYRTextView-dummy.m"; sourceTree = ""; }; + B02F19E19157DD63D9656412EEF253E0 /* CYRTextStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRTextStorage.h; path = CYRTextView/CYRTextStorage.h; sourceTree = ""; }; B0B617F8EDE26D278FE27302F4A03F70 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; B136A6325B1A5354FF5E227EAF2CD08E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - B18026DF79E6BC324C1F0275AD2612C2 /* NSException-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSException-KIFAdditions.m"; path = "Additions/NSException-KIFAdditions.m"; sourceTree = ""; }; + B16F533E2A634317763401F7D7BACCE4 /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; + B2DC855073031200B3AC1AE680F8877C /* UIEvent+KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIEvent+KIFAdditions.m"; path = "Additions/UIEvent+KIFAdditions.m"; sourceTree = ""; }; + B2EC90D463703DE93D0F8613257AFD45 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Nimble/objc/DSL.m; sourceTree = ""; }; B31F3C641AAB64AAE4619AFC361FB94D /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Quick/Quick.h; sourceTree = ""; }; - B643B79CA9E98CA9606D91962A6052D9 /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; + B60F652ECFF5E8AEFADDD53F5CE3B82B /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; + B65E9F7F1774F58506D11B2EC9DD6417 /* KIFUITestActor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFUITestActor.m; path = Classes/KIFUITestActor.m; sourceTree = ""; }; + B73B197E00C35FC9FA03BDF08D07F20B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B8F1BE143A1FB262DCC1DB76B894F3A2 /* SSCoreDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSCoreDataSource.m; path = SSDataSources/SSCoreDataSource.m; sourceTree = ""; }; - B91680F55467B5878C583A829705269B /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Nimble/Matchers/Equal.swift; sourceTree = ""; }; - B99882AB73E4D8C276A1C774C19A6A3D /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Quick/Configuration/QuickConfiguration.m; sourceTree = ""; }; B9CDEA756546FB26B1F62F80558788F5 /* POPGeometry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPGeometry.h; path = pop/POPGeometry.h; sourceTree = ""; }; - BA054AD5DEFD496815B3B7728F2AF840 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; BA21D97739A1EEF98861CE741EE3D809 /* POPPropertyAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPPropertyAnimation.mm; path = pop/POPPropertyAnimation.mm; sourceTree = ""; }; - BA26307755DEE022B98617FC8146C281 /* CYRToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRToken.m; path = CYRTextView/CYRToken.m; sourceTree = ""; }; + BA3A8EF5FFD884DB1B5D37102EC6EAA7 /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Nimble/Matchers/AllPass.swift; sourceTree = ""; }; BAB4750529B585A32CFCF2DC9E1B5BFC /* View+SnapKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+SnapKit.swift"; path = "Source/View+SnapKit.swift"; sourceTree = ""; }; BCEF0AB3531576DDC522DC748F1E7E63 /* pop-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "pop-umbrella.h"; sourceTree = ""; }; - BE817D03B67EEC5CBA8CB2D180BFB417 /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Nimble/Matchers/AllPass.swift; sourceTree = ""; }; - C0DB388D4C4F005150CE2C7F474FB442 /* CYRTextView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CYRTextView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C11FA47D82A7C693CC3EC15B24F384CD /* UIScrollView-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView-KIFAdditions.m"; path = "Additions/UIScrollView-KIFAdditions.m"; sourceTree = ""; }; + BDE6231B5FBFECF6B9C8790F881104B3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/IOKit.framework; sourceTree = DEVELOPER_DIR; }; + BE46934D5B27CDB63C71BFCE7421A0F6 /* Upload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Upload.swift; path = Source/Upload.swift; sourceTree = ""; }; + BF86C460396687B0B1F8054DE3C654E0 /* LoadableCategory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LoadableCategory.h; path = Additions/LoadableCategory.h; sourceTree = ""; }; + C1E7FC8BECAD407DC510F2A654E8D427 /* KIF-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "KIF-Private.xcconfig"; sourceTree = ""; }; C1F9039AB80645BDE7B5126C3A00C437 /* POPAnimatableProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimatableProperty.mm; path = pop/POPAnimatableProperty.mm; sourceTree = ""; }; - C22F427C17409288B95CFDA10409D209 /* KIFTestStepValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTestStepValidation.h; path = Classes/KIFTestStepValidation.h; sourceTree = ""; }; C24DABE538BC6499E3C0B1F35C62F02A /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; C2E3FD3B03B440D6E53423038C0AE012 /* KIF-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KIF-prefix.pch"; sourceTree = ""; }; - C37AF22394B563EF6316337CF16DB14E /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Quick/Filter.swift; sourceTree = ""; }; + C3E1BFB656046B2B783AD7AE89C7DE82 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5078BE2E1640399F162F290FBA6FE62 /* KIFTestActor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTestActor.h; path = Classes/KIFTestActor.h; sourceTree = ""; }; C51DACCC217294EE5BC99120A7F4080E /* POPAnimationEventInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationEventInternal.h; path = pop/POPAnimationEventInternal.h; sourceTree = ""; }; C54B7F95CDAB8FAD9F1F6252F1059A82 /* CYRTextView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CYRTextView-prefix.pch"; sourceTree = ""; }; C5B2E0E703779BAB6658B191E0A3B274 /* TTTAttributedLabel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TTTAttributedLabel.xcconfig; sourceTree = ""; }; C5C56B263950F5D42ECB9195F84F3D23 /* SSBaseHeaderFooterView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSBaseHeaderFooterView.m; path = SSDataSources/SSBaseHeaderFooterView.m; sourceTree = ""; }; - C5C807B4FD04E504973A11DAAA607A7F /* CYRTextStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CYRTextStorage.h; path = CYRTextView/CYRTextStorage.h; sourceTree = ""; }; + C6565E2B17227A7C515119434DF4176E /* CYRLayoutManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRLayoutManager.m; path = CYRTextView/CYRLayoutManager.m; sourceTree = ""; }; C7997284BF247182201AE9A3AE800E2D /* POPAnimatableProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimatableProperty.h; path = pop/POPAnimatableProperty.h; sourceTree = ""; }; C88113A79685B4EFEE7BAD12896829F7 /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - C99CF984B2FC7F068DF0CD67AE859885 /* JTSImageViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JTSImageViewController.m; path = Source/JTSImageViewController.m; sourceTree = ""; }; + C9C5D867FCEC9167F6D9A58DA770DE64 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; C9FE38A6BC8C72B2E60DA0942C16E8E7 /* SSDataSources-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSDataSources-prefix.pch"; sourceTree = ""; }; - CA051DDA5702F6885A2E948F2775DE72 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Nimble/FailureMessage.swift; sourceTree = ""; }; + CB01ECACE93D277AFCC9E1749ED74E33 /* UIApplication+JTSImageViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+JTSImageViewController.m"; path = "Source/UIApplication+JTSImageViewController.m"; sourceTree = ""; }; CC1629DCB35EDC465520817B72AD2874 /* JTSImageViewController.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JTSImageViewController.xcconfig; sourceTree = ""; }; - CC9B4658655549EA9CCA56FC9CC90BCA /* CYRTextStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRTextStorage.m; path = CYRTextView/CYRTextStorage.m; sourceTree = ""; }; CC9DFE87A486FCE6105E4EDCC3DC2CC5 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; CCCD8E3983BAC02BA0E9A89D168EFAC5 /* SSBaseDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSBaseDataSource.m; path = SSDataSources/SSBaseDataSource.m; sourceTree = ""; }; - CE066F57D695162A8BF42B7089544C39 /* CGGeometry-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CGGeometry-KIFAdditions.m"; path = "Additions/CGGeometry-KIFAdditions.m"; sourceTree = ""; }; + CD03E7C28338874946FE6E9FCDDE18C5 /* NSFileManager-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager-KIFAdditions.h"; path = "Additions/NSFileManager-KIFAdditions.h"; sourceTree = ""; }; CEDAA8CE81F660CAE500AE89CAF39643 /* POPVector.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPVector.mm; path = pop/POPVector.mm; sourceTree = ""; }; - CF011BBC6009B662C75E31FA93B7F5E3 /* UIScrollView-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView-KIFAdditions.h"; path = "Additions/UIScrollView-KIFAdditions.h"; sourceTree = ""; }; - CF4D52F119559C5A84C5A3D8836C6D78 /* UIAutomationHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UIAutomationHelper.m; path = Classes/UIAutomationHelper.m; sourceTree = ""; }; D00D1E6FCBB3B39690AE00EA9056A33C /* POPMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPMath.h; path = pop/POPMath.h; sourceTree = ""; }; D037E16E49485FD4DB696430CCB0A210 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; - D0C367F519EF3A0C1BBE24CE6B36BDDF /* NSException-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSException-KIFAdditions.h"; path = "Additions/NSException-KIFAdditions.h"; sourceTree = ""; }; - D11D94173E0133D260AA0EF7DF417FC9 /* XCTestCase-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase-KIFAdditions.m"; path = "Additions/XCTestCase-KIFAdditions.m"; sourceTree = ""; }; - D1FBF14AD3732A02D12A3B42C622B569 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D11FFC40B46BA1D66BB69626C75B98E3 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + D14EF8C2A88DF1EC84AA04CA65026462 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Nimble/Expression.swift; sourceTree = ""; }; D2688D8BC06F609A9140EDE2649FB667 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; D30AB0E30F239C6313AADA2E3224590F /* SSSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSSection.m; path = SSDataSources/SSSection.m; sourceTree = ""; }; - D33E32413017C926870DFF44DD0EFD37 /* KIFUITestActor-ConditionalTests.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "KIFUITestActor-ConditionalTests.m"; path = "Classes/KIFUITestActor-ConditionalTests.m"; sourceTree = ""; }; + D3CB3A558C8B720ABD20E13B5EEBD2A4 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; D4BA6AC9BF036CD0E9EA2D5E59C37FB1 /* SSBaseDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSBaseDataSource.h; path = SSDataSources/SSBaseDataSource.h; sourceTree = ""; }; - D5C222836E3AFC21A88B3F064D9CB083 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - D6C1865120E97306E542B3BFCE6BF5C9 /* KIFTestActor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTestActor.m; path = Classes/KIFTestActor.m; sourceTree = ""; }; - D6E80EF836A66EAF45EE1207B2BC3DA4 /* ObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjCMatcher.swift; path = Nimble/Wrappers/ObjCMatcher.swift; sourceTree = ""; }; + D50BD7CF5D2EFE6AEE2A4052C843141D /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Quick/Example.swift; sourceTree = ""; }; + D5160815F9BF8B11241C54F803A80F96 /* CGGeometry-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CGGeometry-KIFAdditions.h"; path = "Additions/CGGeometry-KIFAdditions.h"; sourceTree = ""; }; + D89533D26EDA6451CB647421421326D3 /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; D9AF7E5D7CB2963C2EF19E9C7D465231 /* POPSpringAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPSpringAnimation.mm; path = pop/POPSpringAnimation.mm; sourceTree = ""; }; + DA2A3B9A02E4B84D316CCA3383E0CFCB /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Quick/Filter.swift; sourceTree = ""; }; DA447E371077258D9DC3FC29DFC1632A /* POPAnimationExtras.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationExtras.h; path = pop/POPAnimationExtras.h; sourceTree = ""; }; DB76151BDD959082EFFAB4AC602F4761 /* Pods-BequestTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BequestTests.release.xcconfig"; sourceTree = ""; }; - DBCAE34641DD4B51B32A7BCB44A1D247 /* JTSAnimatedGIFUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JTSAnimatedGIFUtility.h; path = Source/JTSAnimatedGIFUtility.h; sourceTree = ""; }; DC311913D559D3CAFB3D4B69A0A62736 /* POPAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimation.mm; path = pop/POPAnimation.mm; sourceTree = ""; }; - DC391260C084E1FA9A9DEF31252D787E /* UIView-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView-KIFAdditions.m"; path = "Additions/UIView-KIFAdditions.m"; sourceTree = ""; }; DCD2F19C4D1EB749FFD896AF7A1C5A99 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; - DD06A0669BBF15D0871B9252ADBF6AD9 /* UIAccessibilityElement-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAccessibilityElement-KIFAdditions.h"; path = "Additions/UIAccessibilityElement-KIFAdditions.h"; sourceTree = ""; }; DD4F6DBA255D9DD54D131D9C8F160732 /* Pods-Bequest-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Bequest-acknowledgements.plist"; sourceTree = ""; }; DE7F5AAD936B52BA7BCBFED95169BEA6 /* TTTAttributedLabel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TTTAttributedLabel-umbrella.h"; sourceTree = ""; }; - DF61F7DF564800B373C387A903B6932B /* UIView-Debugging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView-Debugging.h"; path = "Additions/UIView-Debugging.h"; sourceTree = ""; }; - E1CB617F8617534FF1A93A30A3ADC1CB /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Quick.modulemap; sourceTree = ""; }; - E2BBA7BFB7812D7935B20277FC701E7B /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - E34161F2F67ACE96157134927E148AED /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; E361D860C526E3BA01EC6C9DEF63DDD6 /* POPAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAction.h; path = pop/POPAction.h; sourceTree = ""; }; - E379BE7E83580A321E09D3A327F56DFD /* KIFSystemTestActor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFSystemTestActor.m; path = Classes/KIFSystemTestActor.m; sourceTree = ""; }; E4B3CC32D25684C2979070113ED86086 /* Pods-BequestTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BequestTests-dummy.m"; sourceTree = ""; }; - E519B913F1CF32AF49B30F4961ECA691 /* KIF-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "KIF-Private.xcconfig"; sourceTree = ""; }; - E56650250E429AE0B79D642E1DCC7B70 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Nimble/objc/DSL.m; sourceTree = ""; }; - E60A291A996D763009B8E633C643A078 /* Manager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Manager.swift; path = Source/Manager.swift; sourceTree = ""; }; - E74FDA4FB19B66410CE2ACB7AAA1E68D /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Quick/Callsite.swift; sourceTree = ""; }; - E7519003ACE6AFA0BE3BB7445042F9C7 /* KIFTestActor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTestActor.h; path = Classes/KIFTestActor.h; sourceTree = ""; }; - E935E71EAA7C5DE12990929C24A34029 /* UITouch-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITouch-KIFAdditions.h"; path = "Additions/UITouch-KIFAdditions.h"; sourceTree = ""; }; - E944AF0B4742B96E444369C667F8FC29 /* KIF-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KIF-umbrella.h"; sourceTree = ""; }; + E51D2436653E7EFAA008FB0DEE635EE6 /* KIFTypist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFTypist.h; path = Classes/KIFTypist.h; sourceTree = ""; }; + E6607BAC49E10D6B6AF6079E2C5B7162 /* UITableView-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView-KIFAdditions.h"; path = "Additions/UITableView-KIFAdditions.h"; sourceTree = ""; }; + E6FE759AE5E55439A0E716FEA242F420 /* KIF-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "KIF-dummy.m"; sourceTree = ""; }; E94516303AC2A52B95A18178F613F33F /* POPGeometry.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPGeometry.mm; path = pop/POPGeometry.mm; sourceTree = ""; }; + E9DDF51FAC1520B970AE51B7756345EE /* KIFUITestActor-ConditionalTests.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "KIFUITestActor-ConditionalTests.h"; path = "Classes/KIFUITestActor-ConditionalTests.h"; sourceTree = ""; }; EAEFB31B003AE9E0EAE851B8974F02F7 /* TransformationMatrix.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TransformationMatrix.cpp; path = pop/WebCore/TransformationMatrix.cpp; sourceTree = ""; }; EC68F0486B200F615FC0671EE5ADC74A /* SSBaseCollectionReusableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSBaseCollectionReusableView.h; path = SSDataSources/SSBaseCollectionReusableView.h; sourceTree = ""; }; - ECB92CDD7DEF451318CF3F5D68BB4B57 /* UIEvent+KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIEvent+KIFAdditions.h"; path = "Additions/UIEvent+KIFAdditions.h"; sourceTree = ""; }; - EEDAF6E19CEC81C6C06771E1EA56882B /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE730C706DB011548491EBED4D397484 /* JTSImageViewController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JTSImageViewController-dummy.m"; sourceTree = ""; }; + EE8F30E701A01A09D021D2BA5D7E88DE /* Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Download.swift; path = Source/Download.swift; sourceTree = ""; }; EFB64412F9649B67736601C7E7A92353 /* POPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPDefines.h; path = pop/POPDefines.h; sourceTree = ""; }; - EFEBEAF2FB99F85583067406562491A3 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Quick/Example.swift; sourceTree = ""; }; + EFEE802E4F1CEA5AFC4B4450BE52C161 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Nimble/objc/DSL.h; sourceTree = ""; }; F068A61313425AB1A5C632EE317785D5 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Alamofire.modulemap; sourceTree = ""; }; + F194CEDD1266262BAD0A980E4FBBDB34 /* NSString+QCKSelectorName.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+QCKSelectorName.m"; path = "Quick/NSString+QCKSelectorName.m"; sourceTree = ""; }; F1C80EF9465314B024FE3E8B7E19AE53 /* POPDecayAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPDecayAnimationInternal.h; path = pop/POPDecayAnimationInternal.h; sourceTree = ""; }; F2B0CA6001D6B24F569620B56723D4DF /* pop.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = pop.modulemap; sourceTree = ""; }; F317558711CB11705575EDCD975560F3 /* POPCustomAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPCustomAnimation.h; path = pop/POPCustomAnimation.h; sourceTree = ""; }; + F3EC875B6E9F81FFFB7784518CE039BF /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F408D3D7EBB4662BEF183A8BB92EB1C5 /* SSDataSources-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SSDataSources-dummy.m"; sourceTree = ""; }; - F78766D569CB30DE7F1D87A6489949F4 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Nimble/Utils/Functional.swift; sourceTree = ""; }; - F793BA5167079D8E35BA39A16F133899 /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Quick/ExampleMetadata.swift; sourceTree = ""; }; - F7A1024F31854EAD79EC5D7F7481E60C /* CGGeometry-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CGGeometry-KIFAdditions.h"; path = "Additions/CGGeometry-KIFAdditions.h"; sourceTree = ""; }; - F82004445C8E33EB8CBA43860DE27F2D /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Nimble.modulemap; sourceTree = ""; }; - F82917B6BA3AE9B900168292BE331999 /* KIFTestStepValidation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTestStepValidation.m; path = Classes/KIFTestStepValidation.m; sourceTree = ""; }; - F8CDF5724264809BE89F82137FB7B6A4 /* UIApplication+JTSImageViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+JTSImageViewController.h"; path = "Source/UIApplication+JTSImageViewController.h"; sourceTree = ""; }; + F89509B58AF14CFC844031E6E4A44618 /* Nimble-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Nimble-Private.xcconfig"; sourceTree = ""; }; + F8ADDA04D25209507484635153B6F9B0 /* CYRTextStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CYRTextStorage.m; path = CYRTextView/CYRTextStorage.m; sourceTree = ""; }; + F8C09D3FD6DFBB1996D234B846D9B5FD /* UIApplication-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication-KIFAdditions.h"; path = "Additions/UIApplication-KIFAdditions.h"; sourceTree = ""; }; F9995A2B22F21A240B4743FEB32E2CC4 /* NSString+QCKSelectorName.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+QCKSelectorName.h"; path = "Quick/NSString+QCKSelectorName.h"; sourceTree = ""; }; - FA5991416A6C2ADE8FFC71DABDBF8E29 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Quick/DSL/World+DSL.swift"; sourceTree = ""; }; + FA008EE30364D602D1930094D30483D0 /* NSBundle-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle-KIFAdditions.h"; path = "Additions/NSBundle-KIFAdditions.h"; sourceTree = ""; }; + FB2DB4F317BEF45BEC62C2FAA229126B /* KIFTestStepValidation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KIFTestStepValidation.m; path = Classes/KIFTestStepValidation.m; sourceTree = ""; }; + FB68EB3B0F219FA98C50E8609E9C2819 /* UIView-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView-KIFAdditions.m"; path = "Additions/UIView-KIFAdditions.m"; sourceTree = ""; }; + FB747C622C0B15E163B6146AFF32EB6E /* UITouch-KIFAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITouch-KIFAdditions.m"; path = "Additions/UITouch-KIFAdditions.m"; sourceTree = ""; }; FBCCE00E4FC72B3012CEAE7ED5F5167D /* POP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POP.h; path = pop/POP.h; sourceTree = ""; }; - FEEFCCE6BAAB831CA8E159D10D685CFB /* NSBundle-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle-KIFAdditions.h"; path = "Additions/NSBundle-KIFAdditions.h"; sourceTree = ""; }; + FDE3A6FDFFFF6C0CFEED3BA08BF60A16 /* KIFUITestActor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KIFUITestActor.h; path = Classes/KIFUITestActor.h; sourceTree = ""; }; + FF53F1392CA25B5C1ADAE5C3CA1E6495 /* XCTestCase-KIFAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase-KIFAdditions.h"; path = "Additions/XCTestCase-KIFAdditions.h"; sourceTree = ""; }; + FFA1AFED6EFD76D364B37C4DA3261E2F /* UIImage+JTSImageEffects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+JTSImageEffects.m"; path = "Source/UIImage+JTSImageEffects.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -771,22 +767,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 126AD3AF01AAF15DE1EAF535CB90E29D /* Frameworks */ = { + 1876C10AF070B3F374EEFAC96BFD384F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BBBE50C02FF26EBC6E0A6B55F5746EC0 /* CoreGraphics.framework in Frameworks */, - FA2A87B1E92944475354B5468F572153 /* Foundation.framework in Frameworks */, - 852F3CE74BB435C75C28768DDAB97CF3 /* IOKit.framework in Frameworks */, - D2BEA95134596F2AC5C197C96DB923E8 /* XCTest.framework in Frameworks */, + 6C86821943D905A91D1D49D1CFDEE96F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1876C10AF070B3F374EEFAC96BFD384F /* Frameworks */ = { + 320129269303AB8A22774BBF92B8F459 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6C86821943D905A91D1D49D1CFDEE96F /* Foundation.framework in Frameworks */, + 84EA0CB2E6FD200077F57295B9DA876B /* CoreText.framework in Frameworks */, + 6363009AA7EBA2F2F36420AF2C74B645 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -810,63 +804,80 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8E45DB1D3DA5263D0087AE3DF18B13FD /* Frameworks */ = { + 66F964412E1DC585DA146D0DE4E3AEC7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CB5CA49B4ABB03CBC1FEECBDD591134C /* Foundation.framework in Frameworks */, - FD11A5977F8BE093C6C5A29BFD096DF6 /* XCTest.framework in Frameworks */, + D031F9C56309E31B24A7D5DB47EA659E /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC2975F75A54273CA4ABD12431AC13E2 /* Frameworks */ = { + 8B388AA7127E65BFF29CDD6E9AA42D54 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B19305C0FF1D2BC33D8E4B3CD62A9C40 /* Accelerate.framework in Frameworks */, - B5E50CDE97D57DCF2225EFE1DA32979F /* Foundation.framework in Frameworks */, - 9293C2D19412BEAD64E0866C869D2888 /* ImageIO.framework in Frameworks */, - 5D0A7C094316F5E03B6B2A5EF946E072 /* UIKit.framework in Frameworks */, + EDF85D53FE9F34A7E6CD1EC98B0863B3 /* Accelerate.framework in Frameworks */, + 11CC12F1D0E567BA1DB1F017451529EB /* Foundation.framework in Frameworks */, + 2BBE245DFFDD461F9E868060E680B7C5 /* ImageIO.framework in Frameworks */, + 11A9B464E6DEB9575F836E2B6A8B02AB /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E1E92D5B6AE87D30126171D2E0B37212 /* Frameworks */ = { + 8E45DB1D3DA5263D0087AE3DF18B13FD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 158F39C63BAC709851EE613132BFD455 /* CoreText.framework in Frameworks */, - B4D7A816A5E694DE27DCFF6E4031C888 /* Foundation.framework in Frameworks */, + CB5CA49B4ABB03CBC1FEECBDD591134C /* Foundation.framework in Frameworks */, + FD11A5977F8BE093C6C5A29BFD096DF6 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E20F78A63D44F2BAFBEFC02A582304A8 /* Frameworks */ = { + E05B7B0DD24E5B788B3EDF4630AAAA79 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E7EDB5FEF8FEA219B818474C65D4CBC1 /* Foundation.framework in Frameworks */, + 7B799BF42493DFC7BE130E3D3CF866A0 /* Foundation.framework in Frameworks */, + 4AE2D24BA226BBE7DD3328D0FBFC668C /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC8B085176FAA894410D7563788EF354 /* Frameworks */ = { + E20F78A63D44F2BAFBEFC02A582304A8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C570E1B0AFB97981CA0A4B8187B92946 /* Foundation.framework in Frameworks */, + E7EDB5FEF8FEA219B818474C65D4CBC1 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EDAE1A7FA517CF7BF7A834B6BD50ADD3 /* Frameworks */ = { + E6A570D1D3B29738945F63B1B9CEB2DE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 68448996142FB52CEA8221E709F746CC /* Foundation.framework in Frameworks */, - 8402B29DD08990B98184AD407CDDA2DE /* XCTest.framework in Frameworks */, + 1347FB18B1F2BCC42C22CD732CE9A9B2 /* CoreGraphics.framework in Frameworks */, + 8A67C8ED84D7EA8ABC44E43F780E0274 /* Foundation.framework in Frameworks */, + E14A2BDC4E05C394FC3B90149E6C89E0 /* IOKit.framework in Frameworks */, + DB3D96475338219D7517B108028CCA64 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 15DFBCCEDA01D7553CBABC16CF42B726 /* Support Files */ = { + isa = PBXGroup; + children = ( + 8B128DCB5E5CB4E466C021E1D8C5850D /* Info.plist */, + 180108BAEB2ABD0B8466FFC482CD37CC /* Quick.modulemap */, + 9AD8AAD3940890649806F83E37DC2A59 /* Quick.xcconfig */, + 25DF34C922C01ED58777F2F685BC9558 /* Quick-Private.xcconfig */, + 11921B0F41019368FEECD4D0B4A10BDF /* Quick-dummy.m */, + 0EAF74E2C746BB82B523BCB3E054B356 /* Quick-prefix.pch */, + 721020A02B66A14D61C9E07D18D2448D /* Quick-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Quick"; + sourceTree = ""; + }; 204CE4AA60259DD62CEEB6A2051E7917 /* Pods-BequestTests */ = { isa = PBXGroup; children = ( @@ -891,46 +902,16 @@ children = ( F068A61313425AB1A5C632EE317785D5 /* Alamofire.modulemap */, 4DD409AD9110720BCEB0C89B539DDD5B /* Alamofire.xcconfig */, - 32037A908779F87A06239145440D57A7 /* Alamofire-Private.xcconfig */, - 036FE32CC86F2C51B51B6E02EB054FA2 /* Alamofire-dummy.m */, + A2F335E608E9B0F0B935C64E1882A39D /* Alamofire-Private.xcconfig */, + 44AA0F0C8192B78B685B619E1F765909 /* Alamofire-dummy.m */, B0B617F8EDE26D278FE27302F4A03F70 /* Alamofire-prefix.pch */, - 4CB05123443C01AD94145A437BA6FD55 /* Alamofire-umbrella.h */, + 5FB37AA4C0E9EA8C536C48528DD71B0D /* Alamofire-umbrella.h */, 1ACCD4B72AAC4953442561EB463CE484 /* Info.plist */, ); name = "Support Files"; path = "../Target Support Files/Alamofire"; sourceTree = ""; }; - 340A5A426CCD7806C69283CC04CFA988 /* Quick */ = { - isa = PBXGroup; - children = ( - E74FDA4FB19B66410CE2ACB7AAA1E68D /* Callsite.swift */, - 4D7652F17DE602CFD8B5EFCC0BB3731F /* Closures.swift */, - 1AB78ADC58737B0400A0BA46CE14A7E5 /* Configuration.swift */, - 0351753118C5DD243581B3BBEE521CF6 /* DSL.swift */, - EFEBEAF2FB99F85583067406562491A3 /* Example.swift */, - 11F2FD41A9536D10CA99285EC83A4D67 /* ExampleGroup.swift */, - 8DE445A6F79FE74E418837D4BFC3DB13 /* ExampleHooks.swift */, - F793BA5167079D8E35BA39A16F133899 /* ExampleMetadata.swift */, - 44CBDE1FAFE5DFD99B551E90F8C77150 /* Failure.swift */, - C37AF22394B563EF6316337CF16DB14E /* Filter.swift */, - F9995A2B22F21A240B4743FEB32E2CC4 /* NSString+QCKSelectorName.h */, - 046DBA2CCAE3EEED15162E94BE2D36AD /* NSString+QCKSelectorName.m */, - 9DF361654C5142AF241256F6E523A093 /* QCKDSL.h */, - 2F70B00664F3038D09C26CC0DC7A74B0 /* QCKDSL.m */, - B31F3C641AAB64AAE4619AFC361FB94D /* Quick.h */, - 9ED7F52C55237E4B17DB13FB3C8260DC /* QuickConfiguration.h */, - B99882AB73E4D8C276A1C774C19A6A3D /* QuickConfiguration.m */, - 123B9C0A891B3518B9EC6A4ABD725720 /* QuickSpec.h */, - A69780536F605A9CD445862B1F3093A4 /* QuickSpec.m */, - 44A582751F1C012739125699AC538F0C /* SuiteHooks.swift */, - 83AB69D3BE8A7AC58F8CF33F0140B391 /* World.swift */, - FA5991416A6C2ADE8FFC71DABDBF8E29 /* World+DSL.swift */, - 3736D1A49EE94B0F738D4AAA2B3EA9EA /* Support Files */, - ); - path = Quick; - sourceTree = ""; - }; 35BFFD4631791DDE6DC3FC4B60CF9E8B /* pop */ = { isa = PBXGroup; children = ( @@ -990,21 +971,6 @@ path = pop; sourceTree = ""; }; - 3736D1A49EE94B0F738D4AAA2B3EA9EA /* Support Files */ = { - isa = PBXGroup; - children = ( - 527F7C2AC9F6C38201D2894F44308243 /* Info.plist */, - E1CB617F8617534FF1A93A30A3ADC1CB /* Quick.modulemap */, - 547D8D6BB97C66ACBFEBE650814898D0 /* Quick.xcconfig */, - 25DF34C922C01ED58777F2F685BC9558 /* Quick-Private.xcconfig */, - 662556BC03F803F72810B10B3AF78486 /* Quick-dummy.m */, - 3EC5941FCB26DBFFFF600B6D89D3A81D /* Quick-prefix.pch */, - 721020A02B66A14D61C9E07D18D2448D /* Quick-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Quick"; - sourceTree = ""; - }; 3CC624013445B5527F5BA5AF3BDD001E /* Support Files */ = { isa = PBXGroup; children = ( @@ -1020,6 +986,21 @@ path = "../Target Support Files/pop"; sourceTree = ""; }; + 46C6D25A22151756F1980C151FE21ADB /* Support Files */ = { + isa = PBXGroup; + children = ( + B73B197E00C35FC9FA03BDF08D07F20B /* Info.plist */, + 9127717A2F26101C582130A25DB9799D /* Nimble.modulemap */, + D89533D26EDA6451CB647421421326D3 /* Nimble.xcconfig */, + F89509B58AF14CFC844031E6E4A44618 /* Nimble-Private.xcconfig */, + B16F533E2A634317763401F7D7BACCE4 /* Nimble-dummy.m */, + C9C5D867FCEC9167F6D9A58DA770DE64 /* Nimble-prefix.pch */, + 16CBFAC9EFC6FBC7943F88A012583478 /* Nimble-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Nimble"; + sourceTree = ""; + }; 5E1F3384B1B39575144FEBFCF3210CCC /* Frameworks */ = { isa = PBXGroup; children = ( @@ -1034,10 +1015,10 @@ 07314B426FDE51E6F87EA277F08C1694 /* Info.plist */, 0B92BE0766CCF8576965938482AFF1AF /* KIF.modulemap */, 7FF8D115BC96ABEC9602F9FD8E3C15AF /* KIF.xcconfig */, - E519B913F1CF32AF49B30F4961ECA691 /* KIF-Private.xcconfig */, - 2F4FF546ED49400843116E9B9D787EB4 /* KIF-dummy.m */, + C1E7FC8BECAD407DC510F2A654E8D427 /* KIF-Private.xcconfig */, + E6FE759AE5E55439A0E716FEA242F420 /* KIF-dummy.m */, C2E3FD3B03B440D6E53423038C0AE012 /* KIF-prefix.pch */, - E944AF0B4742B96E444369C667F8FC29 /* KIF-umbrella.h */, + 29614F8874FE9CC2EF123F76F3080906 /* KIF-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/KIF"; @@ -1065,8 +1046,8 @@ 863E910546206A28DE671646E30F04E8 /* CYRTextView */, B1D8767C574857196B0B52B9BECAE306 /* JTSImageViewController */, A2E42CC0B40F157FB5B8F538652D7CB7 /* KIF */, - B7D0F6ECC0E4F6E3B38BF44327613808 /* Nimble */, - 340A5A426CCD7806C69283CC04CFA988 /* Quick */, + C2EEE82EDBCB7261FB26DC8D8AFF6F12 /* Nimble */, + D21C1B293035631444E9CFCCCAB0D541 /* Quick */, CF30B47E8D3B4D37C40BD08635175774 /* SSDataSources */, F15651BA81C089772CF26C3CCE0D2967 /* SnapKit */, CDF1A82624214A43203CFB940DD6F65C /* TTTAttributedLabel */, @@ -1092,10 +1073,10 @@ 0A34BD814A2514C78BD20674DD262BC6 /* Info.plist */, 7CCF80C1C7EAD56F24BC6B2B531F7D9C /* JTSImageViewController.modulemap */, CC1629DCB35EDC465520817B72AD2874 /* JTSImageViewController.xcconfig */, - 23E2289DE6960595CF06BCE8A360C4E9 /* JTSImageViewController-Private.xcconfig */, - 14228DCFE7BC1F1D2FE58E7C8559C8FA /* JTSImageViewController-dummy.m */, + 2724112B9EB2318D6A1E62307B8B9FE0 /* JTSImageViewController-Private.xcconfig */, + EE730C706DB011548491EBED4D397484 /* JTSImageViewController-dummy.m */, 6D75DAF66935015006B1396B8D6943DC /* JTSImageViewController-prefix.pch */, - 31D999996A39F15D4AD18B8E0CF60F51 /* JTSImageViewController-umbrella.h */, + 90FD5C22228E2BC5D1F37774F0BA7A83 /* JTSImageViewController-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/JTSImageViewController"; @@ -1119,14 +1100,14 @@ 863E910546206A28DE671646E30F04E8 /* CYRTextView */ = { isa = PBXGroup; children = ( - 1C1580515EC3D41C6647D57573FEB266 /* CYRLayoutManager.h */, - 44363D6432F3FF3BC36B21B63954CE28 /* CYRLayoutManager.m */, - C5C807B4FD04E504973A11DAAA607A7F /* CYRTextStorage.h */, - CC9B4658655549EA9CCA56FC9CC90BCA /* CYRTextStorage.m */, - 6B616162927A9417C221CF80C94CAB87 /* CYRTextView.h */, - 94C4DC0F8F5B1F152E6DC6633FD5B3AB /* CYRTextView.m */, - 9FCF01E6614650FAF12BB1D93C20E651 /* CYRToken.h */, - BA26307755DEE022B98617FC8146C281 /* CYRToken.m */, + 39A805F257A1568648EABF56D91D0A6C /* CYRLayoutManager.h */, + C6565E2B17227A7C515119434DF4176E /* CYRLayoutManager.m */, + B02F19E19157DD63D9656412EEF253E0 /* CYRTextStorage.h */, + F8ADDA04D25209507484635153B6F9B0 /* CYRTextStorage.m */, + 16E6B3F03591552C5C37B930182D7680 /* CYRTextView.h */, + 5E5ABA8DFA84D76375886BE453E65FE6 /* CYRTextView.m */, + 218A12E4ED0A2F1A3A4B4C3BFA4C71C6 /* CYRToken.h */, + 79711F3D8428ECCC1DFDF49D06BCD89D /* CYRToken.m */, E8430B3C58DF56B302EBBA77D323DA87 /* Support Files */, ); path = CYRTextView; @@ -1159,136 +1140,135 @@ B1D8767C574857196B0B52B9BECAE306 /* JTSImageViewController */ = { isa = PBXGroup; children = ( - DBCAE34641DD4B51B32A7BCB44A1D247 /* JTSAnimatedGIFUtility.h */, - 2A4207D4FAC8BCC7D946C89454832601 /* JTSAnimatedGIFUtility.m */, - 099470FECEE53070EE731FD0D805B206 /* JTSImageInfo.h */, - 28B6A4EFAA9D1DFD880FE9D09B5C49F3 /* JTSImageInfo.m */, - ADE7702F486B81E4C6CE9D4EC1CAD4A5 /* JTSImageViewController.h */, - C99CF984B2FC7F068DF0CD67AE859885 /* JTSImageViewController.m */, - 51B2569224F03B235C29D6510005280E /* JTSSimpleImageDownloader.h */, - AD8459A2B4424D6434E1B04646BD9F20 /* JTSSimpleImageDownloader.m */, - F8CDF5724264809BE89F82137FB7B6A4 /* UIApplication+JTSImageViewController.h */, - 99D19B9C51464D38F037647963ED567D /* UIApplication+JTSImageViewController.m */, - 54A0E49A0F061F8D323C06BA83DFB1D8 /* UIImage+JTSImageEffects.h */, - 52E62A74ECEAF84C75D6BC1EB2585E9D /* UIImage+JTSImageEffects.m */, + 82FA4886BF6369E9D60D7A2B57FD2A6A /* JTSAnimatedGIFUtility.h */, + 77523018BC098F720990ED8DF56A15DA /* JTSAnimatedGIFUtility.m */, + 7FFDA6E1850A160A5A789334B2FF87B8 /* JTSImageInfo.h */, + A688F456FE2DE8A5067DFBE9678E762E /* JTSImageInfo.m */, + 53C682FAF2DD677E70C206574DB1BE4F /* JTSImageViewController.h */, + 6C2885885385210B89003CC63E3576D9 /* JTSImageViewController.m */, + 55DD91541467ED26B85591597AEB3BDD /* JTSSimpleImageDownloader.h */, + 9D2CA13226BC5E34B462016CDB7CAC10 /* JTSSimpleImageDownloader.m */, + 7E742E34998B3D7CFBD57EA6C0B61912 /* UIApplication+JTSImageViewController.h */, + CB01ECACE93D277AFCC9E1749ED74E33 /* UIApplication+JTSImageViewController.m */, + 372907426260F8F2104726D84EFA921B /* UIImage+JTSImageEffects.h */, + FFA1AFED6EFD76D364B37C4DA3261E2F /* UIImage+JTSImageEffects.m */, 7E08544AF8B2E26ED94D045AC31D863A /* Support Files */, ); path = JTSImageViewController; sourceTree = ""; }; - B7D0F6ECC0E4F6E3B38BF44327613808 /* Nimble */ = { + BE902A73FBC534EC06AE5252275E5B93 /* XCTest */ = { isa = PBXGroup; children = ( - 10332E3BE2AFCFBBC7899BE55657D321 /* AdapterProtocols.swift */, - BE817D03B67EEC5CBA8CB2D180BFB417 /* AllPass.swift */, - A4E4D99E7DC90CC09A54051ABC3F3EC7 /* AssertionRecorder.swift */, - 4754A3AD9737028621E094661F11854C /* AsyncMatcherWrapper.swift */, - 8BF5D01A54960E559E96B8C7938A5631 /* BasicMatcherWrapper.swift */, - 87BB7874A32228CFA47876C3A5DF07A5 /* BeAKindOf.swift */, - 50ADC6CCED64B61234BC9216B58B06AD /* BeAnInstanceOf.swift */, - 54398A32EDCB73AA88BECA887B69A2F2 /* BeCloseTo.swift */, - BA054AD5DEFD496815B3B7728F2AF840 /* BeEmpty.swift */, - 410F221B8E275FA4F458BCA908710F03 /* BeGreaterThan.swift */, - E34161F2F67ACE96157134927E148AED /* BeGreaterThanOrEqualTo.swift */, - 672B9EEC660D3187E7FA7DE73B5FA277 /* BeIdenticalTo.swift */, - 1274BD1A86317611969E3F0E49048D31 /* BeLessThan.swift */, - A6F580907FAACA67BE2837DA09556DCD /* BeLessThanOrEqual.swift */, - 11CE684C396D416BEE56FAA4894E04BE /* BeLogical.swift */, - 650456B7B50E845613048E90422E2EA0 /* BeNil.swift */, - 610CE93A508A7A4EFA7DEEDA068C623A /* BeginWith.swift */, - 9B2720A6085B1C998C84A8F3D0AA6EBF /* Contain.swift */, - 214DA1CE5B42230841839DFB2316442C /* DSL.h */, - E56650250E429AE0B79D642E1DCC7B70 /* DSL.m */, - A704DE73DE7894D9A6A07A6FC3324587 /* DSL.swift */, - 5D065AE32A9E56898F5AFF1D81EC34B0 /* DSL+Wait.swift */, - 2A8FC02377E2495A2A2ADA7ABE8A4090 /* EndWith.swift */, - B91680F55467B5878C583A829705269B /* Equal.swift */, - 10AEB7551B52C7F2D3CA534E7DED6195 /* Expectation.swift */, - 1FB1596AC74EF1200A36674569A943DB /* Expression.swift */, - CA051DDA5702F6885A2E948F2775DE72 /* FailureMessage.swift */, - 78485C36E80C830B139AA2A46AE699C1 /* FullMatcherWrapper.swift */, - F78766D569CB30DE7F1D87A6489949F4 /* Functional.swift */, - 22C1428F3C8EFE2D15880C48F1ABA754 /* Match.swift */, - 7EB8DC6EAAC0B1B546773DD233817E7B /* MatcherFunc.swift */, - 437B75CB837A4C95ABE7081B94D54D23 /* MatcherProtocols.swift */, - 9EEF6241A0B8460DB41FF427CE2E0D25 /* NMBExceptionCapture.h */, - AE56208F2505A11D9640FF5D3D3C11B6 /* NMBExceptionCapture.m */, - 983C0C513420899DB73E6341F0A12B43 /* Nimble.h */, - A357FB205502BB3DF4123EC4345F10A9 /* NimbleXCTestHandler.swift */, - 2BEF08A236B789F09F9726F32FF67319 /* NonNilMatcherWrapper.swift */, - D6E80EF836A66EAF45EE1207B2BC3DA4 /* ObjCMatcher.swift */, - AFE157C77B6EB894C72D360B3F73C210 /* Poll.swift */, - 1F28050447910467D43ECBAD090F8C58 /* RaisesException.swift */, - 483FB256E5E1CB1D268FB61C1C910229 /* SourceLocation.swift */, - 48BD0D5FB3BBB26C910CEEED43B820E6 /* Stringers.swift */, - E64A434844E29B12B2C28D30AB03C90D /* Support Files */, + D5160815F9BF8B11241C54F803A80F96 /* CGGeometry-KIFAdditions.h */, + 54F52A5ED228D7ADB20FFFC9FA6D215F /* CGGeometry-KIFAdditions.m */, + 1D6F8939B88FAA3DB9901A65839AB9C3 /* KIF.h */, + 173D186B6DEA70130C864E9CB35C0111 /* KIFSystemTestActor.h */, + 475D0D878B7489C0C645C3B07FF33C2D /* KIFSystemTestActor.m */, + C5078BE2E1640399F162F290FBA6FE62 /* KIFTestActor.h */, + 88E9D8B4CB0E0C65527FB3442BF4550B /* KIFTestActor.m */, + 2864BD94E5D7F20714BED9039F8AA94A /* KIFTestCase.h */, + 69AD8BD7FCC1E3E6CE8CEE0AAF005BFA /* KIFTestCase.m */, + 531BA86958F8C95862577AE08939E2A0 /* KIFTestStepValidation.h */, + FB2DB4F317BEF45BEC62C2FAA229126B /* KIFTestStepValidation.m */, + E51D2436653E7EFAA008FB0DEE635EE6 /* KIFTypist.h */, + 8701B65DC7C09DDA31B53BE85E9A89DD /* KIFTypist.m */, + FDE3A6FDFFFF6C0CFEED3BA08BF60A16 /* KIFUITestActor.h */, + B65E9F7F1774F58506D11B2EC9DD6417 /* KIFUITestActor.m */, + E9DDF51FAC1520B970AE51B7756345EE /* KIFUITestActor-ConditionalTests.h */, + 2F1CA679E2CB7619B5F3F140293624ED /* KIFUITestActor-ConditionalTests.m */, + BF86C460396687B0B1F8054DE3C654E0 /* LoadableCategory.h */, + FA008EE30364D602D1930094D30483D0 /* NSBundle-KIFAdditions.h */, + 8D2CA23EAFFF389CDB8493E5BCA83167 /* NSBundle-KIFAdditions.m */, + 0558B8756146EF14B438DA7AF8D82915 /* NSError-KIFAdditions.h */, + 16F99199CDF32A38C25120A5C277EC36 /* NSError-KIFAdditions.m */, + 52178278EAC9B330CAE536D89D686220 /* NSException-KIFAdditions.h */, + 035D275BA5343C1353C238795B168BF7 /* NSException-KIFAdditions.m */, + CD03E7C28338874946FE6E9FCDDE18C5 /* NSFileManager-KIFAdditions.h */, + 5DE6F423FEBCED9012594B701701A3F5 /* NSFileManager-KIFAdditions.m */, + 7E32B9222D899D714B268A32C4B498B0 /* UIAccessibilityElement-KIFAdditions.h */, + 41CEE46F312E5EA1DFC16168F1D1AE74 /* UIAccessibilityElement-KIFAdditions.m */, + F8C09D3FD6DFBB1996D234B846D9B5FD /* UIApplication-KIFAdditions.h */, + 6C7CACBF53DA3D4391494BDD84A0961B /* UIApplication-KIFAdditions.m */, + 062A78CA879E0ED84A17F3796E3B6295 /* UIAutomationHelper.h */, + 9B5A5AB58CA309B42C69A6AA43312325 /* UIAutomationHelper.m */, + 405B4502D4AB2D836108D1FED5C43C08 /* UIEvent+KIFAdditions.h */, + B2DC855073031200B3AC1AE680F8877C /* UIEvent+KIFAdditions.m */, + 61B878A23F5526A96B72F14C8DE50D54 /* UIScrollView-KIFAdditions.h */, + 052FD7CCFF9C1AEEF83BAFFC973878CA /* UIScrollView-KIFAdditions.m */, + E6607BAC49E10D6B6AF6079E2C5B7162 /* UITableView-KIFAdditions.h */, + 753ECB26DF02BC6FB5EDCE015FA94FC3 /* UITableView-KIFAdditions.m */, + 4A7DC1108D53AFB15564AF955DEE0328 /* UITouch-KIFAdditions.h */, + FB747C622C0B15E163B6146AFF32EB6E /* UITouch-KIFAdditions.m */, + 7888B13154E5D32CB2F5C4FCE9DEF62A /* UIView-Debugging.h */, + 8B394F5B770D37085919D03E52F17918 /* UIView-Debugging.m */, + 0CBF6CEB14B406FBA2015072D1759A52 /* UIView-KIFAdditions.h */, + FB68EB3B0F219FA98C50E8609E9C2819 /* UIView-KIFAdditions.m */, + 4E2D931C920C5062E0FFD2BB92A131B9 /* UIWindow-KIFAdditions.h */, + 22F3CDA150B06F676A6067EAD427EC2A /* UIWindow-KIFAdditions.m */, + FF53F1392CA25B5C1ADAE5C3CA1E6495 /* XCTestCase-KIFAdditions.h */, + 14A8BDD2E65C2335A718A8B38A53738C /* XCTestCase-KIFAdditions.m */, ); - path = Nimble; + name = XCTest; sourceTree = ""; }; - BE902A73FBC534EC06AE5252275E5B93 /* XCTest */ = { + C2EEE82EDBCB7261FB26DC8D8AFF6F12 /* Nimble */ = { isa = PBXGroup; children = ( - F7A1024F31854EAD79EC5D7F7481E60C /* CGGeometry-KIFAdditions.h */, - CE066F57D695162A8BF42B7089544C39 /* CGGeometry-KIFAdditions.m */, - 1A7B2B085203D6DCF3D1FAD30E065A61 /* KIF.h */, - 4C3F2BE48FDE522D3FB342C32F373B0A /* KIFSystemTestActor.h */, - E379BE7E83580A321E09D3A327F56DFD /* KIFSystemTestActor.m */, - E7519003ACE6AFA0BE3BB7445042F9C7 /* KIFTestActor.h */, - D6C1865120E97306E542B3BFCE6BF5C9 /* KIFTestActor.m */, - A73B4773D257674B1A1AE2E72CCF4EF5 /* KIFTestCase.h */, - 363424511CB41EA0594034DC201187B3 /* KIFTestCase.m */, - C22F427C17409288B95CFDA10409D209 /* KIFTestStepValidation.h */, - F82917B6BA3AE9B900168292BE331999 /* KIFTestStepValidation.m */, - 087D2166DCB0E74DD68F82C3491EAFB5 /* KIFTypist.h */, - 3AFC59EDABF3295A16CED3E93ED88185 /* KIFTypist.m */, - 500643C46CC0FE7BF20A92CEFBAE689A /* KIFUITestActor.h */, - 0840A447E390CF17AC63D22BD90BF576 /* KIFUITestActor.m */, - 5A85EC60E0173AE3F015DE9C7327BE3A /* KIFUITestActor-ConditionalTests.h */, - D33E32413017C926870DFF44DD0EFD37 /* KIFUITestActor-ConditionalTests.m */, - 00D7B41A6B3CF91CF88F5A4E76380520 /* LoadableCategory.h */, - FEEFCCE6BAAB831CA8E159D10D685CFB /* NSBundle-KIFAdditions.h */, - 28263CEC31313F9D9314B54C1CA3237E /* NSBundle-KIFAdditions.m */, - 21BC45083650789D03E1C1E6664EFA93 /* NSError-KIFAdditions.h */, - 4D6E38888B2D2A7A629BC69149EFEB1C /* NSError-KIFAdditions.m */, - D0C367F519EF3A0C1BBE24CE6B36BDDF /* NSException-KIFAdditions.h */, - B18026DF79E6BC324C1F0275AD2612C2 /* NSException-KIFAdditions.m */, - 8E8209D37BD19D6E89AFA0B71DCC801C /* NSFileManager-KIFAdditions.h */, - 67AF72F76F678FBECE6D876DC06780C4 /* NSFileManager-KIFAdditions.m */, - DD06A0669BBF15D0871B9252ADBF6AD9 /* UIAccessibilityElement-KIFAdditions.h */, - 9FA12261A7706A6ED68FB40958A7CB2C /* UIAccessibilityElement-KIFAdditions.m */, - 39F01D027E4644063A527D3BB6BCCCBC /* UIApplication-KIFAdditions.h */, - A164BF32F4B3E62B607F661F27840667 /* UIApplication-KIFAdditions.m */, - 97273F05A5F62071897A4CAC274F75F0 /* UIAutomationHelper.h */, - CF4D52F119559C5A84C5A3D8836C6D78 /* UIAutomationHelper.m */, - ECB92CDD7DEF451318CF3F5D68BB4B57 /* UIEvent+KIFAdditions.h */, - AEDBBEF180F7C83EB57CDEF44F4D82F1 /* UIEvent+KIFAdditions.m */, - CF011BBC6009B662C75E31FA93B7F5E3 /* UIScrollView-KIFAdditions.h */, - C11FA47D82A7C693CC3EC15B24F384CD /* UIScrollView-KIFAdditions.m */, - 6DC0B9275C255E70810A66865D2AB2E7 /* UITableView-KIFAdditions.h */, - A479E13490C090B52C4D03CE31283FA2 /* UITableView-KIFAdditions.m */, - E935E71EAA7C5DE12990929C24A34029 /* UITouch-KIFAdditions.h */, - A731DD2A4467CF346F9E25CEE15C4C27 /* UITouch-KIFAdditions.m */, - DF61F7DF564800B373C387A903B6932B /* UIView-Debugging.h */, - 4048B66EDA617685CCC5C61BFF8DC6B5 /* UIView-Debugging.m */, - A468974117B51BBA51F4F6A4F01DC941 /* UIView-KIFAdditions.h */, - DC391260C084E1FA9A9DEF31252D787E /* UIView-KIFAdditions.m */, - 0AE10E0E375FC9C8A04916DDCC98BB67 /* UIWindow-KIFAdditions.h */, - 329386B6A7EAE352BCE3A9D5C3BBAA39 /* UIWindow-KIFAdditions.m */, - ABE851CF4FC6AAE3F3D99D49FEA9C343 /* XCTestCase-KIFAdditions.h */, - D11D94173E0133D260AA0EF7DF417FC9 /* XCTestCase-KIFAdditions.m */, + 3C154808C3EA0C9780330FA192084A03 /* AdapterProtocols.swift */, + BA3A8EF5FFD884DB1B5D37102EC6EAA7 /* AllPass.swift */, + 7B207866F1BE787B22B90B1236A5F395 /* AssertionDispatcher.swift */, + 9FFF2A6A74643EE485885896525C38A5 /* AssertionRecorder.swift */, + 88D7A54B8D6AD7457B3462617555C5AE /* AsyncMatcherWrapper.swift */, + 5B37C6FDCF8CA2E3E232F5A87219EFDB /* BeAKindOf.swift */, + 80618011C4C7C5C6FC6C6F3E4B44837E /* BeAnInstanceOf.swift */, + ABF16314F074E4672CDAC392884CFD52 /* BeCloseTo.swift */, + 8D2A14A7210EFB872EFE003D6968AA77 /* BeEmpty.swift */, + 121096CE7676F61FC414EFD4F14DF26D /* BeGreaterThan.swift */, + 6E53F42045FF26A0DD6DAD6C4B000B43 /* BeGreaterThanOrEqualTo.swift */, + 6760C75C78D828F56BED77EFCBA3047B /* BeIdenticalTo.swift */, + 23267DDBB4E7CEB976A40B6F9B0ADE82 /* BeLessThan.swift */, + 9828A9F58180B6EF3B6EEB345E5C27EB /* BeLessThanOrEqual.swift */, + D3CB3A558C8B720ABD20E13B5EEBD2A4 /* BeLogical.swift */, + 269C3D45634633F92240A75F9C1A2782 /* BeNil.swift */, + B60F652ECFF5E8AEFADDD53F5CE3B82B /* BeginWith.swift */, + 05E7BBAAE088779A08C1B3411FF166DB /* Contain.swift */, + EFEE802E4F1CEA5AFC4B4450BE52C161 /* DSL.h */, + B2EC90D463703DE93D0F8613257AFD45 /* DSL.m */, + 54BB43F30B0C3D230FBC16FC1E0A889B /* DSL.swift */, + A210EC4B3119DEE15AA316B80344562D /* DSL+Wait.swift */, + 58BEFE52277E40721C5945997E3C0D00 /* EndWith.swift */, + 87D0788A0F13385145E57F6A4150CAF8 /* Equal.swift */, + 4FA1F276813E47738EA734A428A55F29 /* Expectation.swift */, + D14EF8C2A88DF1EC84AA04CA65026462 /* Expression.swift */, + 78C1E52E63883123E38C86D4E1451DA1 /* FailureMessage.swift */, + 0A3D5BAA21C1105C935D38828A825060 /* Functional.swift */, + 38E7423F1630FCAC235A64B03E328E8D /* Match.swift */, + 1E1B75FAF675634E24F1B5CF0253AFCF /* MatcherFunc.swift */, + A820C5F5CFA7DA0573E5BECA3296FBA9 /* MatcherProtocols.swift */, + 3897373441411B469F9993E28898F233 /* NMBExceptionCapture.h */, + 0B6709EB25DE3912375784AD3BC1B514 /* NMBExceptionCapture.m */, + A6D3A462E7FEBB18F60382B9363819A9 /* Nimble.h */, + 19AA3DAB83839B4BD80EA3E5F24AB029 /* NimbleXCTestHandler.swift */, + 955DF05579F0D466971C213A9556DE30 /* ObjCExpectation.swift */, + 70C16C7DB602EBBEFD0FEF4A685EAF5B /* ObjCMatcher.swift */, + 52D7FB49BB8FB96D615DCE56D7D1269A /* Poll.swift */, + 26ADABE84F4F635F0797C002EC1F0471 /* RaisesException.swift */, + 6271D265339354367BE6413FD280535E /* SourceLocation.swift */, + 76750EAB7AAA1536D32EC294EFAA561A /* Stringers.swift */, + 46C6D25A22151756F1980C151FE21ADB /* Support Files */, ); - name = XCTest; + path = Nimble; sourceTree = ""; }; CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { isa = PBXGroup; children = ( - 26883E9AE1B6D60D79EA37543B332075 /* Alamofire.framework */, - C0DB388D4C4F005150CE2C7F474FB442 /* CYRTextView.framework */, - 03355D3D3DE08A8236D9F506181CB915 /* JTSImageViewController.framework */, - 84123766E5DBAA45AAB65B2375C008AB /* KIF.framework */, - EEDAF6E19CEC81C6C06771E1EA56882B /* Nimble.framework */, + C3E1BFB656046B2B783AD7AE89C7DE82 /* Alamofire.framework */, + A4DEE8D5121520CCD099DA0175AC7D2C /* CYRTextView.framework */, + A279DCABBCCEEFB7178E0E5563B9734F /* JTSImageViewController.framework */, + 2590A184E37A486B93A65D2386A5C8C5 /* KIF.framework */, + F3EC875B6E9F81FFFB7784518CE039BF /* Nimble.framework */, 171EA280C12F9C7778B8A9CB9CDF9659 /* Pods_Bequest.framework */, 8ABA375A0F69245074812899E06EE5AF /* Pods_BequestTests.framework */, 1D42BD70609DDD05BAB86D86E9E6DE36 /* Quick.framework */, @@ -1339,17 +1319,46 @@ path = SSDataSources; sourceTree = ""; }; + D21C1B293035631444E9CFCCCAB0D541 /* Quick */ = { + isa = PBXGroup; + children = ( + ACCAEE32479C3E260B73959576CE44B7 /* Callsite.swift */, + 8C3FD0F350AD317741D270236ED41E55 /* Closures.swift */, + 7C12B5AAB10C9D34B23FBC3B8791683D /* Configuration.swift */, + 40811F91302EFA74F5A323FD165B53A7 /* DSL.swift */, + D50BD7CF5D2EFE6AEE2A4052C843141D /* Example.swift */, + 0D35921395040F7CF27C93219AA395CC /* ExampleGroup.swift */, + 4F0DBE09CB013241C192D440C8F87D92 /* ExampleHooks.swift */, + 78B4688EF7FA44258A94CA6DC682F27E /* ExampleMetadata.swift */, + DA2A3B9A02E4B84D316CCA3383E0CFCB /* Filter.swift */, + F9995A2B22F21A240B4743FEB32E2CC4 /* NSString+QCKSelectorName.h */, + F194CEDD1266262BAD0A980E4FBBDB34 /* NSString+QCKSelectorName.m */, + 9DF361654C5142AF241256F6E523A093 /* QCKDSL.h */, + 37D24890E15C71EC3086568721D9FBEA /* QCKDSL.m */, + B31F3C641AAB64AAE4619AFC361FB94D /* Quick.h */, + 9ED7F52C55237E4B17DB13FB3C8260DC /* QuickConfiguration.h */, + 65B55221EF4AEA606C2E6CC2D2F493D7 /* QuickConfiguration.m */, + 123B9C0A891B3518B9EC6A4ABD725720 /* QuickSpec.h */, + 61B8A72200325E7D37C8BCE4F261CF0B /* QuickSpec.m */, + 094006D4589037CD3DB20DE626E294B4 /* SuiteHooks.swift */, + 1ADBF919CE04B632187FC04B32D4E50B /* World.swift */, + ABA8C21D9E18208876108E15CBC96705 /* World+DSL.swift */, + 15DFBCCEDA01D7553CBABC16CF42B726 /* Support Files */, + ); + path = Quick; + sourceTree = ""; + }; D2B53DEF2FBFB5A3AA05610CDD1253EF /* Alamofire */ = { isa = PBXGroup; children = ( - D5C222836E3AFC21A88B3F064D9CB083 /* Alamofire.swift */, - 7ABAA6E33165C6A0E93AAF684ACA9A0C /* Download.swift */, - E60A291A996D763009B8E633C643A078 /* Manager.swift */, - 2001056F1DEF43E1CF7A7F54888F0432 /* ParameterEncoding.swift */, - 51A88464405BE2ED2CF196574036EE57 /* Request.swift */, - E2BBA7BFB7812D7935B20277FC701E7B /* ResponseSerialization.swift */, - 4561013D0933D6F25EB1739A533A1039 /* Upload.swift */, - 40C72F790FF06E977893C02369BE9D43 /* Validation.swift */, + 1356BD643088E178B626A3FC26B561C8 /* Alamofire.swift */, + EE8F30E701A01A09D021D2BA5D7E88DE /* Download.swift */, + 0A9E891CB9DF8657942E071D38C98E43 /* Manager.swift */, + 23C1B38437A221819669F6FFC6779980 /* ParameterEncoding.swift */, + 2075C1BBB0ECFA131E6FE3FD7D6694B1 /* Request.swift */, + 069990848444C8024DA9366925BDB093 /* ResponseSerialization.swift */, + BE46934D5B27CDB63C71BFCE7421A0F6 /* Upload.swift */, + 22BB72E2B37A07BEAC2648FDC5394A8C /* Validation.swift */, 323297A4F2072C8FFEB9B3C78BFC4BEC /* Support Files */, ); path = Alamofire; @@ -1383,30 +1392,15 @@ name = "Targets Support Files"; sourceTree = ""; }; - E64A434844E29B12B2C28D30AB03C90D /* Support Files */ = { - isa = PBXGroup; - children = ( - D1FBF14AD3732A02D12A3B42C622B569 /* Info.plist */, - F82004445C8E33EB8CBA43860DE27F2D /* Nimble.modulemap */, - B643B79CA9E98CA9606D91962A6052D9 /* Nimble.xcconfig */, - 0CF163798AB40BC182BADF1A70C1FF26 /* Nimble-Private.xcconfig */, - 434BE4C3770384B66333265AE2D38434 /* Nimble-dummy.m */, - 27825E317DB57D68905680EFF3CE1AAC /* Nimble-prefix.pch */, - 6D259423DBC31528C00931142607EAF2 /* Nimble-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Nimble"; - sourceTree = ""; - }; E8430B3C58DF56B302EBBA77D323DA87 /* Support Files */ = { isa = PBXGroup; children = ( 76E8C24585A58DB88F54A8D1F5454994 /* CYRTextView.modulemap */, 54D503870D4C47209120F7E3AA2E3C22 /* CYRTextView.xcconfig */, - 67025B82BCA39932BB42BE549C0BED39 /* CYRTextView-Private.xcconfig */, - 6C7DD1670DDC0C9489B52862E424F303 /* CYRTextView-dummy.m */, + 04929BC9D885D7321E68EADE3085E663 /* CYRTextView-Private.xcconfig */, + AF8E190716C2C0C1BCCB4917CF835086 /* CYRTextView-dummy.m */, C54B7F95CDAB8FAD9F1F6252F1059A82 /* CYRTextView-prefix.pch */, - 5384F92373DBD8B2710D215774CC361B /* CYRTextView-umbrella.h */, + 07680125337245D3547A02BD969CDD30 /* CYRTextView-umbrella.h */, AF60CD9FFEF13C6DF8BDC222DF6A0CCF /* Info.plist */, ); name = "Support Files"; @@ -1416,13 +1410,13 @@ EF854E9C43966F621B903E1DA7C4E8DE /* iOS */ = { isa = PBXGroup; children = ( - 8E1F94C884E9389A431665CC7182F48C /* Accelerate.framework */, + 11605F3A03E9FFC751ADB04D6D253E91 /* Accelerate.framework */, C24DABE538BC6499E3C0B1F35C62F02A /* CoreData.framework */, B136A6325B1A5354FF5E227EAF2CD08E /* CoreGraphics.framework */, CC9DFE87A486FCE6105E4EDCC3DC2CC5 /* CoreText.framework */, 62A14A705FA15F57587AF5E265EE7E06 /* Foundation.framework */, - 1FCB051007D7D3A42CC2F39279691FFD /* IOKit.framework */, - 57AF7DD09BD544E2B51BE30372C0E70C /* ImageIO.framework */, + BDE6231B5FBFECF6B9C8790F881104B3 /* IOKit.framework */, + D11FFC40B46BA1D66BB69626C75B98E3 /* ImageIO.framework */, 25A08ED3B934FF2DD94ECF1E8B540E40 /* QuartzCore.framework */, 397E935E1758C55C5428F19A235024C9 /* UIKit.framework */, 08CB0A77757904F02FB36D6A5B4F1D1C /* XCTest.framework */, @@ -1453,44 +1447,67 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 191BC80D8CE37C38D2EB7A100076D60F /* Headers */ = { + 0389EB7303A659B0E52F99ED80B51B98 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A4B800FFDF9D824945DB2875D761A2E2 /* CGGeometry-KIFAdditions.h in Headers */, + 6DE12EA711A973785FFE31C4477FE314 /* KIF-umbrella.h in Headers */, + E48634C694C50DB16BD5FB6CFE14FCD4 /* KIF.h in Headers */, + E6CB9BD3259D88A9AFB885922E7EF080 /* KIFSystemTestActor.h in Headers */, + 8D4C62520B66D9BADB38868272F3D95A /* KIFTestActor.h in Headers */, + C71C2006F6A55F2813D491BF82935B58 /* KIFTestCase.h in Headers */, + BA69513861A2D3FCDCF951C0D90FBE53 /* KIFTestStepValidation.h in Headers */, + 75A7827DAF5F3D2C9B6572BBB6BAACD6 /* KIFTypist.h in Headers */, + 7C180151C76455EAE00D13E644A62DB5 /* KIFUITestActor-ConditionalTests.h in Headers */, + 85224F12056CF650F07C9819B6A76DFC /* KIFUITestActor.h in Headers */, + D0190A53ECAB9B63D3083C6994281EF9 /* LoadableCategory.h in Headers */, + 8B4E2C185B67E2E7EDE2942EF4249FA0 /* NSBundle-KIFAdditions.h in Headers */, + D85705EED684D376D0037DC2F7A44421 /* NSError-KIFAdditions.h in Headers */, + D52007E280295B445AACEE7303FBD805 /* NSException-KIFAdditions.h in Headers */, + 820C9E56A42CC0ECE34527F50B518986 /* NSFileManager-KIFAdditions.h in Headers */, + F42C6690614B831726F5DB097806BF5A /* UIAccessibilityElement-KIFAdditions.h in Headers */, + B515054C43964801C1FA34EF7B7E115D /* UIApplication-KIFAdditions.h in Headers */, + 1A221EF9A08464C77CCDDC2FFDD9D90C /* UIAutomationHelper.h in Headers */, + 46D4C611B3138FF303AE8834B997F57C /* UIEvent+KIFAdditions.h in Headers */, + 101AAEBA93C2A0A2A94E6BC386EAC9BF /* UIScrollView-KIFAdditions.h in Headers */, + 9262F424952171A078D466F6D5308F96 /* UITableView-KIFAdditions.h in Headers */, + 13BC32876F5E60E6524E354F7606AAF0 /* UITouch-KIFAdditions.h in Headers */, + 5C5FC5BA2D05B8536A5A53C3907F45D5 /* UIView-Debugging.h in Headers */, + 2435DAB8651AC35B748EF1DD1C059F9F /* UIView-KIFAdditions.h in Headers */, + DAA25ADAA2F5C601B8E8DC05581C7916 /* UIWindow-KIFAdditions.h in Headers */, + 545FFC584BC8B1DD9EBE7C5355C4E1C6 /* XCTestCase-KIFAdditions.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0E8ADEF3B1CF9BDDC9FF972F9783C5D4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1934EA88503742BB6C666DBF2CE84F60 /* Alamofire-umbrella.h in Headers */, + 0DE38C6755E9FAE8AE687AC58242D3C2 /* Alamofire-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3F2C8AABD15720B476F83C753FE974AB /* Headers */ = { + 37AEED741197F71A10982B521CE8C2F2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 04F6BC6DB811E85D8E5EC3A9474B3F2C /* CGGeometry-KIFAdditions.h in Headers */, - 4803C3BF93003E216D7436F69071E849 /* KIF-umbrella.h in Headers */, - 8838BC6B6BDDC12BB454B1E06254363C /* KIF.h in Headers */, - 0549405ADA2862B483994CBAD00BACA3 /* KIFSystemTestActor.h in Headers */, - 893BCED6509BB1738A27E37FA78BC35B /* KIFTestActor.h in Headers */, - EC17E1097CBB0FEBEF09204BFEB6DF30 /* KIFTestCase.h in Headers */, - C0F2AFAE8A80EECA9C8B20D56FFCC638 /* KIFTestStepValidation.h in Headers */, - 5DBCF41BB88EBE096574B70158A5792F /* KIFTypist.h in Headers */, - B83FA17049F93A0C1E64B0C80CD47F7E /* KIFUITestActor-ConditionalTests.h in Headers */, - FA642326BE246F8448777B5233DCAAE3 /* KIFUITestActor.h in Headers */, - EFC6912C35A83FB5657587331FB833F0 /* LoadableCategory.h in Headers */, - BC2F901FDDFBDC34763C7E4B0BD33A3C /* NSBundle-KIFAdditions.h in Headers */, - 6F79A308D766464DD45183FDB4CD3E1D /* NSError-KIFAdditions.h in Headers */, - 035A10FBC2E283E867612B01FBAFC9F6 /* NSException-KIFAdditions.h in Headers */, - 49974904AB9EB9FB1B2572A064383E86 /* NSFileManager-KIFAdditions.h in Headers */, - DB190C995B2C8C5BC12935395AC23437 /* UIAccessibilityElement-KIFAdditions.h in Headers */, - C231A66B075021D2A164BE2136E218EF /* UIApplication-KIFAdditions.h in Headers */, - D15F46C1025C2975B02DA41DF6E2E3A6 /* UIAutomationHelper.h in Headers */, - F05A670B0505DB923CEBF413D3D04D07 /* UIEvent+KIFAdditions.h in Headers */, - 5F3EF098097EBB5F1A549239E7133683 /* UIScrollView-KIFAdditions.h in Headers */, - 22102E443851FF99F1DAE62046108051 /* UITableView-KIFAdditions.h in Headers */, - B7DA23F55F763AEE4D474789075F3A1D /* UITouch-KIFAdditions.h in Headers */, - 4D2DFC6A77ABDD4D9E355189E7252491 /* UIView-Debugging.h in Headers */, - 535DAED43C53B1F72762DAF43C30EECF /* UIView-KIFAdditions.h in Headers */, - 3A83FB2A5FD24FFE8AB7AA596195D853 /* UIWindow-KIFAdditions.h in Headers */, - 4BE910F5770D0CB0856232ECF16915D7 /* XCTestCase-KIFAdditions.h in Headers */, + 150445C7B3C4DCCCD4BC73A29470B229 /* DSL.h in Headers */, + 509EBE2639F8AF219606F6E594559B45 /* NMBExceptionCapture.h in Headers */, + B347E6485A232EF4C03993C4656A8B28 /* Nimble-umbrella.h in Headers */, + AF9ACFB441B71FEC0A75363AB7A7FD42 /* Nimble.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 37E9E232D5619D82E0718AFF38B6A3E7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B53E35027AF047E7462BAEFD88F43CB /* CYRLayoutManager.h in Headers */, + FD358A527476F5D30F8C23404138156F /* CYRTextStorage.h in Headers */, + 92511D7E5ED16F520F4492CF980B382D /* CYRTextView-umbrella.h in Headers */, + B9D8ED0FC3497BF5F16A1CAACBD104CB /* CYRTextView.h in Headers */, + A554FF02F1AB4C472039D791A3D1657E /* CYRToken.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1600,70 +1617,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EA908AE90DC577AE1E997F3AE1174280 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 5163C786DE00B201B1649B1874DC4407 /* DSL.h in Headers */, - 6A3BD78BDA65603B635FE69E4EA5822D /* NMBExceptionCapture.h in Headers */, - B7A938B6C7DA8C5B128F10CF839B2D92 /* Nimble-umbrella.h in Headers */, - 001D6988F3BFDAB0BE07D0405AC58139 /* Nimble.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9F4A71DBCF46A97F88BFA420AD8D50D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 565F6CC3F956923C4D0EAA243A5B5DDC /* JTSAnimatedGIFUtility.h in Headers */, - F7A5576CED8F48B82941FE6965631026 /* JTSImageInfo.h in Headers */, - 88DF3F9D7E0C1885DF56E91A93D42869 /* JTSImageViewController-umbrella.h in Headers */, - 819F154CF437DBF34D630B9A17CDAD77 /* JTSImageViewController.h in Headers */, - BB40142D8BA03512BEA0EB80FA7D5707 /* JTSSimpleImageDownloader.h in Headers */, - AF285A8D68676C82F287570580203469 /* UIApplication+JTSImageViewController.h in Headers */, - AD0A9A1D2E8F169FACAB297689C1181D /* UIImage+JTSImageEffects.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FC805358334D5ED631D326F0408213F9 /* Headers */ = { + E1A12C66BB84D1E9B9EB6272C632C445 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C9C31C5A9DE6CC66669EA1025CB1EE3E /* CYRLayoutManager.h in Headers */, - E90D7CACBFF4794C6B88A019E4720664 /* CYRTextStorage.h in Headers */, - A7253F6258052A3CE384A0073C1CD3FB /* CYRTextView-umbrella.h in Headers */, - F57463A2A2F635B60483336A534263F8 /* CYRTextView.h in Headers */, - 77F90352AA8B3767E8C3CDC10B05D440 /* CYRToken.h in Headers */, + C09A6B620D806CB99A52B7F8E6D49290 /* JTSAnimatedGIFUtility.h in Headers */, + 086694D8F186B98A183090106C9A3213 /* JTSImageInfo.h in Headers */, + 71A20D13266746E22A42C7B56FA7FBBB /* JTSImageViewController-umbrella.h in Headers */, + 6A7E3A5817F6B38B7A90926191FB8428 /* JTSImageViewController.h in Headers */, + 8121C36C49EF9C51B1FABD00BFD2BC13 /* JTSSimpleImageDownloader.h in Headers */, + 5BBEB2A24726921B8091C7EA7A416752 /* UIApplication+JTSImageViewController.h in Headers */, + F0369DB36A4C79447EEDC654471C6A25 /* UIImage+JTSImageEffects.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0765F27455305D57358AFD081270DE48 /* CYRTextView */ = { - isa = PBXNativeTarget; - buildConfigurationList = 44D6F14DFAA03A3D543CB34ABF7514DA /* Build configuration list for PBXNativeTarget "CYRTextView" */; - buildPhases = ( - 5FAA0EED25C49CD97E266526F96ACBEC /* Sources */, - E1E92D5B6AE87D30126171D2E0B37212 /* Frameworks */, - FC805358334D5ED631D326F0408213F9 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CYRTextView; - productName = CYRTextView; - productReference = C0DB388D4C4F005150CE2C7F474FB442 /* CYRTextView.framework */; - productType = "com.apple.product-type.framework"; - }; - 0C9EA721C4794C2C6EC3A967530000CE /* KIF */ = { + 172C48CA97657A0792774CB69F139E16 /* KIF */ = { isa = PBXNativeTarget; - buildConfigurationList = C91C208B162D68B27346FF6AD1D601BD /* Build configuration list for PBXNativeTarget "KIF" */; + buildConfigurationList = F8F5D81A8A73D8A51B466F6C2756BAD0 /* Build configuration list for PBXNativeTarget "KIF" */; buildPhases = ( - D1F7F3204A7496093551BFE2EEE5A38B /* Sources */, - 126AD3AF01AAF15DE1EAF535CB90E29D /* Frameworks */, - 3F2C8AABD15720B476F83C753FE974AB /* Headers */, + 1C4263951EF56ABE30950FBF7F19F56B /* Sources */, + E6A570D1D3B29738945F63B1B9CEB2DE /* Frameworks */, + 0389EB7303A659B0E52F99ED80B51B98 /* Headers */, ); buildRules = ( ); @@ -1671,7 +1648,7 @@ ); name = KIF; productName = KIF; - productReference = 84123766E5DBAA45AAB65B2375C008AB /* KIF.framework */; + productReference = 2590A184E37A486B93A65D2386A5C8C5 /* KIF.framework */; productType = "com.apple.product-type.framework"; }; 1B49FC832D66AB80D2C153B82D89EB1A /* Pods-BequestTests */ = { @@ -1685,44 +1662,44 @@ buildRules = ( ); dependencies = ( - AEE230AC0C5EC22EB84AA60B7513E7E0 /* PBXTargetDependency */, - 2CDFDA442960DDB43ED992D6786B5F5E /* PBXTargetDependency */, - B762B29903A5894D3B894CC3C7FE0993 /* PBXTargetDependency */, - 903E39578B4832B5012CAAC5365864B4 /* PBXTargetDependency */, - 005E6CF2973DCAEB960228BF4CF91159 /* PBXTargetDependency */, - C04F976C9201CC7D107C4834436A7CBF /* PBXTargetDependency */, - 99C7CABD6C0DACE26A349E281D801ED7 /* PBXTargetDependency */, - 13363902819EEBBA2B35284ED79AD82F /* PBXTargetDependency */, - 2A25498C5719DBD3CBD690242C73122E /* PBXTargetDependency */, - C1A37BFAA636EB9EC2A1D56B82CE2F52 /* PBXTargetDependency */, + C3C23C5A7CF57539347D7A94966E599C /* PBXTargetDependency */, + 4F6B20B82FDD922D39768CCF281953E0 /* PBXTargetDependency */, + 5117004C91DC6700A05AB267C8CD2D7B /* PBXTargetDependency */, + F8933C7F68D8A4B10A0003C08F33A01F /* PBXTargetDependency */, + 322ECB6BEEDE1168ED2036B107023355 /* PBXTargetDependency */, + 4C7DDC824726B221B203A202BA44E7A7 /* PBXTargetDependency */, + D062FAD64A337B0643B3B0B1FD7EA446 /* PBXTargetDependency */, + 8C96BBF95DE0C5869EF3FE86DCD052BB /* PBXTargetDependency */, + B05FB47FD0FE7B254584DA5A2BD1F979 /* PBXTargetDependency */, + E1F0F1BEA73C77FFB5FAF6B40779752B /* PBXTargetDependency */, ); name = "Pods-BequestTests"; productName = "Pods-BequestTests"; productReference = 8ABA375A0F69245074812899E06EE5AF /* Pods_BequestTests.framework */; productType = "com.apple.product-type.framework"; }; - 6E78E48BDD22A4CDF5E263FF71B66E8B /* JTSImageViewController */ = { + 5041A2D25D2C3BF3F7F0561DA3A4358C /* Alamofire */ = { isa = PBXNativeTarget; - buildConfigurationList = B2E78B0D2513192236CE8E98FB286B0C /* Build configuration list for PBXNativeTarget "JTSImageViewController" */; + buildConfigurationList = F0381D5CED254AA0AB3705C839785066 /* Build configuration list for PBXNativeTarget "Alamofire" */; buildPhases = ( - 79957B77B4F8593BD9C78E71BEF5FF92 /* Sources */, - CC2975F75A54273CA4ABD12431AC13E2 /* Frameworks */, - F9F4A71DBCF46A97F88BFA420AD8D50D /* Headers */, + 21F7EFA279DF491355754179DA0F13AA /* Sources */, + 66F964412E1DC585DA146D0DE4E3AEC7 /* Frameworks */, + 0E8ADEF3B1CF9BDDC9FF972F9783C5D4 /* Headers */, ); buildRules = ( ); dependencies = ( ); - name = JTSImageViewController; - productName = JTSImageViewController; - productReference = 03355D3D3DE08A8236D9F506181CB915 /* JTSImageViewController.framework */; + name = Alamofire; + productName = Alamofire; + productReference = C3E1BFB656046B2B783AD7AE89C7DE82 /* Alamofire.framework */; productType = "com.apple.product-type.framework"; }; 8722EE56E6573BA693B2361B2A56EC26 /* Quick */ = { isa = PBXNativeTarget; buildConfigurationList = 616B5178D4658786825469A228BCED6E /* Build configuration list for PBXNativeTarget "Quick" */; buildPhases = ( - 1652FAE4F0C45A004CA78926394A8F47 /* Sources */, + 0E05EAF233D64B9F77C0C1D345098A8D /* Sources */, 8E45DB1D3DA5263D0087AE3DF18B13FD /* Frameworks */, 8C6A53E07264125A2DE0BCFBD410F763 /* Headers */, ); @@ -1763,19 +1740,36 @@ buildRules = ( ); dependencies = ( - C4FE94FF46753C5DE23E256745B9E4EA /* PBXTargetDependency */, - EF60BAEAA26E6AF3C5B448DEC70C555A /* PBXTargetDependency */, - 2B211E222D135F1F9ECEC0124390AA45 /* PBXTargetDependency */, - 705F956D26E420DD9019289A9D779538 /* PBXTargetDependency */, - CEC7BB4E4FB24EBA9E1F78B6F46C152C /* PBXTargetDependency */, - AABC35F6484ADABAF003CF2504A81258 /* PBXTargetDependency */, - E0D28E5C018329DB7CF559BFF1BBD62A /* PBXTargetDependency */, + C3CFB0F62809A65FCF31C331817EF1EE /* PBXTargetDependency */, + C640B817D8D84A7018CBF01672628E68 /* PBXTargetDependency */, + 2109FD80337397BF9196622C3B7B045E /* PBXTargetDependency */, + FCAC2A06044169AB452B2EBA7F9E32C8 /* PBXTargetDependency */, + C7888C01A6D8B1689EF73728E5B3917F /* PBXTargetDependency */, + D95FEA707D94D6399630A21537F57B87 /* PBXTargetDependency */, + A5B58738154A4BE6C0A06144B76F10BA /* PBXTargetDependency */, ); name = "Pods-Bequest"; productName = "Pods-Bequest"; productReference = 171EA280C12F9C7778B8A9CB9CDF9659 /* Pods_Bequest.framework */; productType = "com.apple.product-type.framework"; }; + 9F0773CD55C506D3F7D39E42CB9D0C0C /* Nimble */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1BD5697E3C5499F695E26E6B730F1154 /* Build configuration list for PBXNativeTarget "Nimble" */; + buildPhases = ( + C872153E34FAAA3F16DE6B093BADB675 /* Sources */, + E05B7B0DD24E5B788B3EDF4630AAAA79 /* Frameworks */, + 37AEED741197F71A10982B521CE8C2F2 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Nimble; + productName = Nimble; + productReference = F3EC875B6E9F81FFFB7784518CE039BF /* Nimble.framework */; + productType = "com.apple.product-type.framework"; + }; A0FC735534CA6C20DB688A41935ED185 /* pop */ = { isa = PBXNativeTarget; buildConfigurationList = 81BEC1212380A55C73862311875CB496 /* Build configuration list for PBXNativeTarget "pop" */; @@ -1810,38 +1804,38 @@ productReference = 46A9D6A08AFD05365FEBE1A95ADDDDB9 /* SSDataSources.framework */; productType = "com.apple.product-type.framework"; }; - D03709FE87DAFA974B5B844D5ECFCD4D /* Alamofire */ = { + BBCCB84F06AB1991DEC386664C3407CE /* JTSImageViewController */ = { isa = PBXNativeTarget; - buildConfigurationList = 306E947A0C79B145B65403641A70F6F9 /* Build configuration list for PBXNativeTarget "Alamofire" */; + buildConfigurationList = A0283960738A2943A62E44F79812F0AB /* Build configuration list for PBXNativeTarget "JTSImageViewController" */; buildPhases = ( - FCC124DC562F4ADD72B88FB331B65866 /* Sources */, - EC8B085176FAA894410D7563788EF354 /* Frameworks */, - 191BC80D8CE37C38D2EB7A100076D60F /* Headers */, + 4EEB5311A95014A1FACB39B4AF2B9F4F /* Sources */, + 8B388AA7127E65BFF29CDD6E9AA42D54 /* Frameworks */, + E1A12C66BB84D1E9B9EB6272C632C445 /* Headers */, ); buildRules = ( ); dependencies = ( ); - name = Alamofire; - productName = Alamofire; - productReference = 26883E9AE1B6D60D79EA37543B332075 /* Alamofire.framework */; + name = JTSImageViewController; + productName = JTSImageViewController; + productReference = A279DCABBCCEEFB7178E0E5563B9734F /* JTSImageViewController.framework */; productType = "com.apple.product-type.framework"; }; - E27CF2AFC333B671EE1C0D4341E992CD /* Nimble */ = { + C749208C55C80001E30C7B67B2F86837 /* CYRTextView */ = { isa = PBXNativeTarget; - buildConfigurationList = C940BC5BD280A10AE5F2BCCBB82BD84C /* Build configuration list for PBXNativeTarget "Nimble" */; + buildConfigurationList = 2B50C6EBAC811E04BF514ED75400BD3A /* Build configuration list for PBXNativeTarget "CYRTextView" */; buildPhases = ( - 8778E23FA962404DF031D57765A3385F /* Sources */, - EDAE1A7FA517CF7BF7A834B6BD50ADD3 /* Frameworks */, - EA908AE90DC577AE1E997F3AE1174280 /* Headers */, + 0FF6A0B0F30A61220AAFF7FC8F61CE62 /* Sources */, + 320129269303AB8A22774BBF92B8F459 /* Frameworks */, + 37E9E232D5619D82E0718AFF38B6A3E7 /* Headers */, ); buildRules = ( ); dependencies = ( ); - name = Nimble; - productName = Nimble; - productReference = EEDAF6E19CEC81C6C06771E1EA56882B /* Nimble.framework */; + name = CYRTextView; + productName = CYRTextView; + productReference = A4DEE8D5121520CCD099DA0175AC7D2C /* CYRTextView.framework */; productType = "com.apple.product-type.framework"; }; E7A30C0AA8CA6849C1467A8AC95839D3 /* SnapKit */ = { @@ -1882,11 +1876,11 @@ projectDirPath = ""; projectRoot = ""; targets = ( - D03709FE87DAFA974B5B844D5ECFCD4D /* Alamofire */, - 0765F27455305D57358AFD081270DE48 /* CYRTextView */, - 6E78E48BDD22A4CDF5E263FF71B66E8B /* JTSImageViewController */, - 0C9EA721C4794C2C6EC3A967530000CE /* KIF */, - E27CF2AFC333B671EE1C0D4341E992CD /* Nimble */, + 5041A2D25D2C3BF3F7F0561DA3A4358C /* Alamofire */, + C749208C55C80001E30C7B67B2F86837 /* CYRTextView */, + BBCCB84F06AB1991DEC386664C3407CE /* JTSImageViewController */, + 172C48CA97657A0792774CB69F139E16 /* KIF */, + 9F0773CD55C506D3F7D39E42CB9D0C0C /* Nimble */, 8E1144F3B681BA51A6CDFD84E0EE367D /* Pods-Bequest */, 1B49FC832D66AB80D2C153B82D89EB1A /* Pods-BequestTests */, 8722EE56E6573BA693B2361B2A56EC26 /* Quick */, @@ -1925,118 +1919,117 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1652FAE4F0C45A004CA78926394A8F47 /* Sources */ = { + 0E05EAF233D64B9F77C0C1D345098A8D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B82DD362F9C5A7377459520C6AEFAF6C /* Callsite.swift in Sources */, - 3C8E05E0CF716D772515E30FD7481E16 /* Closures.swift in Sources */, - 39EC2E8E4A9FE96516A0226C2EF0E2F8 /* Configuration.swift in Sources */, - C7B336406A2D06BACE5778EED5628B5F /* DSL.swift in Sources */, - 4F351C68A79A9A2811C7FA52E95ABC8E /* Example.swift in Sources */, - A837A23AF27753FFFE69C62D4EC20E82 /* ExampleGroup.swift in Sources */, - D665F0B801CC09BA9A6991C1F43D51C0 /* ExampleHooks.swift in Sources */, - 853CE6DA93AF934CDDFD41756604FBCB /* ExampleMetadata.swift in Sources */, - D63C520D963CA29A45749B78CC012B01 /* Failure.swift in Sources */, - 2BCD1EC9383F08BEA423F51EADD33FD5 /* Filter.swift in Sources */, - 8995940D0A94B6B96EF4C6912A403A7A /* NSString+QCKSelectorName.m in Sources */, - 8069253FB9F472D0F14FF97229F267B8 /* QCKDSL.m in Sources */, - BFCB44EF0A89E3BFB89DA14EEA4B6A46 /* Quick-dummy.m in Sources */, - A698890366EEF1BAB9E7004884A78363 /* QuickConfiguration.m in Sources */, - EB3C53F89C8AE9D7A4D033500CE25A64 /* QuickSpec.m in Sources */, - DD6E9740FCDB89A8AB797DE55C30788B /* SuiteHooks.swift in Sources */, - 14D47E4F6642D0A022BE0A297BC5E1A6 /* World+DSL.swift in Sources */, - A225A4C8D22F1C439E9181CA273F2321 /* World.swift in Sources */, + 6705CCB75D92F70B5A3ED02DD4824E76 /* Callsite.swift in Sources */, + 0BD3DBF286F2B52233D586C747BEBDB2 /* Closures.swift in Sources */, + E3F45ABE09D7B66C31938C9B76473C81 /* Configuration.swift in Sources */, + B6D66C26E69F8378577D2E400E946A07 /* DSL.swift in Sources */, + 6069D02A2A2CB53F51E2A929D27FB41E /* Example.swift in Sources */, + 422096F6D5D4D30D07214A4C4D30A1FB /* ExampleGroup.swift in Sources */, + 1484AB9EEA0329484C15CA8E6B99A844 /* ExampleHooks.swift in Sources */, + 2569BE73468A680283C2F1F45EBA4534 /* ExampleMetadata.swift in Sources */, + 13C05FDDA4CB7D07DA5D62D08CA74122 /* Filter.swift in Sources */, + 4D85B195DFCA008ED14783D68C90BD93 /* NSString+QCKSelectorName.m in Sources */, + 44DB6BB3C7A83A4FD093954889DCAA0B /* QCKDSL.m in Sources */, + 33B1CF9EE9C30160D560CB08101F3F50 /* Quick-dummy.m in Sources */, + 656E62EC2793E9996E4838F6FD323AF5 /* QuickConfiguration.m in Sources */, + 113FDE2E23CA349923662481E01F0CE0 /* QuickSpec.m in Sources */, + 878795E5B78294B4024CF9CDB46F4E93 /* SuiteHooks.swift in Sources */, + 6923B46F695F3B1FE5C9F66766798346 /* World+DSL.swift in Sources */, + 00995563BEB95C15DD0BF291360BEEBD /* World.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5FAA0EED25C49CD97E266526F96ACBEC /* Sources */ = { + 0FF6A0B0F30A61220AAFF7FC8F61CE62 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 563A4BE0A6C21C6F38534D231E356A9F /* CYRLayoutManager.m in Sources */, - 1F9E8FC2764F92EDC7F0864AD86B60DD /* CYRTextStorage.m in Sources */, - 35D13FC5714ACA7FAB7A1D91283239E5 /* CYRTextView-dummy.m in Sources */, - DC67D87959F61AF77A4DD1984ABED5CE /* CYRTextView.m in Sources */, - 3DBFDE0764894289A1BAA3AEFD7A4FDF /* CYRToken.m in Sources */, + 464518EE5050E150794654B29E06F6E0 /* CYRLayoutManager.m in Sources */, + 6A038D7C4DF0E697707B08360F38243C /* CYRTextStorage.m in Sources */, + 4CAF7AB24D945DB3E9FB939CAAEADDE0 /* CYRTextView-dummy.m in Sources */, + DF45D39412D609D8831083DD815EFF80 /* CYRTextView.m in Sources */, + E9D7FCB384726298A07FA5219B1C831C /* CYRToken.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 673C7816A39885CEE84E5DE38992826E /* Sources */ = { + 1C4263951EF56ABE30950FBF7F19F56B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2F2751038EE5ED3767F098AC49F5D94C /* Pods-Bequest-dummy.m in Sources */, + 307BCBEC8D65F4F583A02A548FB4E620 /* CGGeometry-KIFAdditions.m in Sources */, + BE557320C69D4929F9961968B61B4C6F /* KIF-dummy.m in Sources */, + 4C1854B885811831934522AA34E23F0B /* KIFSystemTestActor.m in Sources */, + A276C72D4E99DC26CE560F94583162A0 /* KIFTestActor.m in Sources */, + 0E39502C5F13F4791CBE95BE6C8F4F81 /* KIFTestCase.m in Sources */, + 09EAD6D74C2FBD545E2BFEC6F5E130DA /* KIFTestStepValidation.m in Sources */, + 179B6D255528FFF92F434A4A08B4DE64 /* KIFTypist.m in Sources */, + 868A7C9CCD7DEC5648309048A924308F /* KIFUITestActor-ConditionalTests.m in Sources */, + A0B15230468F27C9FDF6CEEA5DF04CD2 /* KIFUITestActor.m in Sources */, + 30C0C521CAFECFBDB48935B46D02685C /* NSBundle-KIFAdditions.m in Sources */, + B0B1D4C8ADB18AAE23554831EC898EB4 /* NSError-KIFAdditions.m in Sources */, + 0466339F5F62D9A4BAAF09D80CA90AFC /* NSException-KIFAdditions.m in Sources */, + 3FF3B211BBCE2CD4502BCE85F3CF9DA1 /* NSFileManager-KIFAdditions.m in Sources */, + 93FD43FD1A3C0928B8A9ECAAC27A9869 /* UIAccessibilityElement-KIFAdditions.m in Sources */, + 3B7542547F32BA8AE9BEE3B5B10E430D /* UIApplication-KIFAdditions.m in Sources */, + EB0E3A2544AAEF1E1EFE0A7F7BA79FF2 /* UIAutomationHelper.m in Sources */, + 7CBF7CF5DA81A97E19990131054968AA /* UIEvent+KIFAdditions.m in Sources */, + E3CEB9B7098C96B3D4906998588C16F9 /* UIScrollView-KIFAdditions.m in Sources */, + 68D51F7B12D590B1B35D3D532DEF6183 /* UITableView-KIFAdditions.m in Sources */, + 5D19318CE874AA177F84D409DB0A502C /* UITouch-KIFAdditions.m in Sources */, + 007918BC8156FDD535DD7A5FFC0BD616 /* UIView-Debugging.m in Sources */, + 8BDC921BCF93FEAD90EEDE160E8179A9 /* UIView-KIFAdditions.m in Sources */, + 2C428722E675B36E92054A2892F9C6E5 /* UIWindow-KIFAdditions.m in Sources */, + CD967B73EF036F9F394B01897FF5353C /* XCTestCase-KIFAdditions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 72BDA3F08DF22CC6F857FDEBFEFA0D2A /* Sources */ = { + 21F7EFA279DF491355754179DA0F13AA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C6F95211709CB415CF43A6394470F14B /* TTTAttributedLabel-dummy.m in Sources */, - 52E6163533D1C90D6DDDACD58C618F70 /* TTTAttributedLabel.m in Sources */, + AF13DC5BFD64A6FE150748B11F9654FF /* Alamofire-dummy.m in Sources */, + 879A51AF9A4EC36EB729C25655FC8E28 /* Alamofire.swift in Sources */, + 65324F6A177F845403684AFBF8927E0C /* Download.swift in Sources */, + 261CE9FE28B9C92C97B57F0F5AF6D398 /* Manager.swift in Sources */, + 6DC7D18F3A2A3A1AFF3BFA06B14B7D74 /* ParameterEncoding.swift in Sources */, + 6E13E992FF1FFD57022D45364650E5B6 /* Request.swift in Sources */, + AEDF7D3583143DE4577297E95DD496D2 /* ResponseSerialization.swift in Sources */, + 4AE30D0CD5315BB2689B8304DACF6AD5 /* Upload.swift in Sources */, + 08460171AAC730278EFAA303AA199075 /* Validation.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EEB5311A95014A1FACB39B4AF2B9F4F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 95A83699377C16ECB2BC74662D90B062 /* JTSAnimatedGIFUtility.m in Sources */, + 74003B06ED0AEA8667DB2CEF42A54309 /* JTSImageInfo.m in Sources */, + D046D8D50E7F0CBA3D4EECCDB8353EC2 /* JTSImageViewController-dummy.m in Sources */, + C064E3E4FE99290EDF7151FAC4816999 /* JTSImageViewController.m in Sources */, + EDBFFE53BD69BD3FCB63EFDC96618CAE /* JTSSimpleImageDownloader.m in Sources */, + 78CA35A9DF13C835F67CDC94E8154AC6 /* UIApplication+JTSImageViewController.m in Sources */, + 5BBFD1F1CC8E46ED1D639F3136B29DDA /* UIImage+JTSImageEffects.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 79957B77B4F8593BD9C78E71BEF5FF92 /* Sources */ = { + 673C7816A39885CEE84E5DE38992826E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4DF8010E86C0913B48A6367EA512C2F9 /* JTSAnimatedGIFUtility.m in Sources */, - 6A63CF1A86B879497D48E921EB28CCE7 /* JTSImageInfo.m in Sources */, - 03CAF36D1E0082A1F670322145183766 /* JTSImageViewController-dummy.m in Sources */, - B4670DE1C51108CC4D00DFB749B92272 /* JTSImageViewController.m in Sources */, - 4761AD96E4D48E65AE1786B4F5E859D0 /* JTSSimpleImageDownloader.m in Sources */, - 48CED3E879671A899C9CFB80ECEBC0A9 /* UIApplication+JTSImageViewController.m in Sources */, - 248C2FF47C9FEA32F7CABD380173F04D /* UIImage+JTSImageEffects.m in Sources */, + 2F2751038EE5ED3767F098AC49F5D94C /* Pods-Bequest-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8778E23FA962404DF031D57765A3385F /* Sources */ = { + 72BDA3F08DF22CC6F857FDEBFEFA0D2A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B77BBC4C3435F6021C116A406F21A7FE /* AdapterProtocols.swift in Sources */, - 23B66E4691AA4FFF3E7FF895B6D19A79 /* AllPass.swift in Sources */, - F52E29761542F0EC16ED6C3CBA1FC92E /* AssertionRecorder.swift in Sources */, - F9BC14D7FE279B73C238321D0347BF06 /* AsyncMatcherWrapper.swift in Sources */, - 24512E2D6CCD3E66231FFF4CEB61C33E /* BasicMatcherWrapper.swift in Sources */, - 29F4AB97F9A875426FC1612E41E9B087 /* BeAKindOf.swift in Sources */, - 898769ACC22253A6EC3E520995A5B8CA /* BeAnInstanceOf.swift in Sources */, - 9A4BC67761F69A0C644D3355DF1D9512 /* BeCloseTo.swift in Sources */, - 8BE61CC7758C627A75D8303938B61A14 /* BeEmpty.swift in Sources */, - D305F00210C5F6E3307C9BC305011FFE /* BeGreaterThan.swift in Sources */, - 4E48B46A18B070A6418D834B69D2549C /* BeGreaterThanOrEqualTo.swift in Sources */, - 8C97ECDF11FAB52BFE10E71D55107ECC /* BeIdenticalTo.swift in Sources */, - 37A28A6DC6E82253DD6BCE93A0BEFA18 /* BeLessThan.swift in Sources */, - 67C4B612D9303D0394CA50911CED1727 /* BeLessThanOrEqual.swift in Sources */, - 9823D946D180D46C69C493597B600C4B /* BeLogical.swift in Sources */, - 73703644D9FF2112AD60B8F607B86824 /* BeNil.swift in Sources */, - 5F13A431304FFFD2237DA929E10E3049 /* BeginWith.swift in Sources */, - 8709E57BC4CB57A9C5B39343D4D5BCCF /* Contain.swift in Sources */, - 2B2C3B341EF90D85F71DA6268FF82507 /* DSL+Wait.swift in Sources */, - 3CE78CB679D5BACDF1182ECF9AD0B829 /* DSL.m in Sources */, - D0FB098A12FC802F5FE6DB3BD13101DD /* DSL.swift in Sources */, - 9AD534F03A59E7665CAE36F986DD8884 /* EndWith.swift in Sources */, - 7CC4AD9EFDB43651144717A4190A1265 /* Equal.swift in Sources */, - 58E8FABA571FAAF0846DD17DBC21BE42 /* Expectation.swift in Sources */, - 9CA91367F2B6FF0751E231ADB08904AE /* Expression.swift in Sources */, - 639AFE7246B3AD8F01520D6AA1728105 /* FailureMessage.swift in Sources */, - 9DCF49195C6AA075B8DF10AE3E682D83 /* FullMatcherWrapper.swift in Sources */, - BCBCD725232A376A15407C4A55CB5E59 /* Functional.swift in Sources */, - AD31801E2CD80B5C87EF2583BD479980 /* Match.swift in Sources */, - 9FCAFCF049DD40F007351BC3B855D384 /* MatcherFunc.swift in Sources */, - 26098CD761EFCAF2035220D3B9D8BE0E /* MatcherProtocols.swift in Sources */, - 00C04D3E94F96887F061EC5329FCE905 /* NMBExceptionCapture.m in Sources */, - BCDEACFED683E73BE4EC7FF4B5BC288B /* Nimble-dummy.m in Sources */, - D3E46F7C464A23D9F9D2E4469BFC5095 /* NimbleXCTestHandler.swift in Sources */, - F14F36CD0A341446C0F3D8CF60B4508B /* NonNilMatcherWrapper.swift in Sources */, - CE79E9A4ECFAAE0652424B3514E019F0 /* ObjCMatcher.swift in Sources */, - BAD0FA002371A92E00EC60318BB37941 /* Poll.swift in Sources */, - CF89532146837F595119707AF26B7B1A /* RaisesException.swift in Sources */, - C9964835B7A65B992CDA3EDF7DDD03A0 /* SourceLocation.swift in Sources */, - CB7871BE1FDDA0422E817EFE8B4358DA /* Stringers.swift in Sources */, + C6F95211709CB415CF43A6394470F14B /* TTTAttributedLabel-dummy.m in Sources */, + 52E6163533D1C90D6DDDACD58C618F70 /* TTTAttributedLabel.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2066,34 +2059,49 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D1F7F3204A7496093551BFE2EEE5A38B /* Sources */ = { + C872153E34FAAA3F16DE6B093BADB675 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D339F85D0F23F79050AEB15154543725 /* CGGeometry-KIFAdditions.m in Sources */, - 002282FF9A109A33B2540469DC3CE83F /* KIF-dummy.m in Sources */, - 421553E28971BC0CA47C849244F5DB57 /* KIFSystemTestActor.m in Sources */, - 068C772EAD412A5DEF12DDF164875BA1 /* KIFTestActor.m in Sources */, - EB761B7F891EB5701C1C01320BFF7C86 /* KIFTestCase.m in Sources */, - B99AE3788CDD56B794955FEA8BE73522 /* KIFTestStepValidation.m in Sources */, - DE498AC78D87D232D067EA329D9F8309 /* KIFTypist.m in Sources */, - A50722C592E87363DB52635AAFD960AD /* KIFUITestActor-ConditionalTests.m in Sources */, - EBED6864D242119662C41058C78BDB33 /* KIFUITestActor.m in Sources */, - ADE3627725BC1DCB0079DA4DB727F678 /* NSBundle-KIFAdditions.m in Sources */, - 29ABD0A2260C9E4E4FE13886545F9AA9 /* NSError-KIFAdditions.m in Sources */, - 99655D95D7F478B6D291B72A5DE9B02E /* NSException-KIFAdditions.m in Sources */, - 4709CCFD6F322FFF8FE3FB05370DC181 /* NSFileManager-KIFAdditions.m in Sources */, - F280470263303ABE0D03B2280E080E66 /* UIAccessibilityElement-KIFAdditions.m in Sources */, - DA6CBFBED4736C31EF15823525A1F9AB /* UIApplication-KIFAdditions.m in Sources */, - 9EBEE7F782A2704D70EE95EBCB068CBE /* UIAutomationHelper.m in Sources */, - 02B300ADCCE13816914AC2AAE123756C /* UIEvent+KIFAdditions.m in Sources */, - 4F978C485B057A6E4F1C02E08D452C46 /* UIScrollView-KIFAdditions.m in Sources */, - F59D1FE9BD77D2F1A0E228CF1980BBB7 /* UITableView-KIFAdditions.m in Sources */, - C0D7FBE89CD2A9D13A2466AA281D08C3 /* UITouch-KIFAdditions.m in Sources */, - 4DBB691C1128ECD8B3F59C4B4367DB16 /* UIView-Debugging.m in Sources */, - 440E4DA73492CE61DA90990A31C03C9F /* UIView-KIFAdditions.m in Sources */, - 676FF4D46EA9C0ECDC82542EAC37D256 /* UIWindow-KIFAdditions.m in Sources */, - 758861CC6811195E84C404EAE640F579 /* XCTestCase-KIFAdditions.m in Sources */, + B17E96533F3FA287D72105F3E2BE283A /* AdapterProtocols.swift in Sources */, + 010D42207B1B88F57CBB188510698D0B /* AllPass.swift in Sources */, + 92D3A710B624AC5E16235FAF5AE3D4FA /* AssertionDispatcher.swift in Sources */, + FDC27A097EE936C86BC548A515E9E807 /* AssertionRecorder.swift in Sources */, + AF1B610BA9FBEA9520B17078DC48F114 /* AsyncMatcherWrapper.swift in Sources */, + B2219E3D2E30FEF2E60E2C50E31AAE9D /* BeAKindOf.swift in Sources */, + 08450B67134B00154D33C4DE4F587918 /* BeAnInstanceOf.swift in Sources */, + F223E4EC507ECED7B5B1405AC1E8150F /* BeCloseTo.swift in Sources */, + C6AF6A19E9DE15A681C673A50DC693C0 /* BeEmpty.swift in Sources */, + A2FD131700E3FC40290FFECB9ED59B91 /* BeGreaterThan.swift in Sources */, + 02983CC18A92486D27E12C2C6BF9416E /* BeGreaterThanOrEqualTo.swift in Sources */, + 3579B4868C84DB1FE547DAAB7BD1C24E /* BeIdenticalTo.swift in Sources */, + 75A3198C1FD3F6BEB9BF48FA8D74B5E7 /* BeLessThan.swift in Sources */, + 2153622CC085CAC68DEDFE1BF768E153 /* BeLessThanOrEqual.swift in Sources */, + 7E7E28705024198EA4729102F8CF749A /* BeLogical.swift in Sources */, + 533C285F5515CAAFED18AD2922CC2308 /* BeNil.swift in Sources */, + 05D8AF36C3BA909454B946884EE913F2 /* BeginWith.swift in Sources */, + BB3D88E28573BBDAF3B256D40528393A /* Contain.swift in Sources */, + AB914A302B3BC49EBB05D2B06A2619FA /* DSL+Wait.swift in Sources */, + 6D2B507C5B3B98A8C9AD5ED6BEA130AB /* DSL.m in Sources */, + 022DAA09A03F5B9ECE13654CDFF690B2 /* DSL.swift in Sources */, + 08C161AFB72B36858F3D0041FC1E4330 /* EndWith.swift in Sources */, + C4694BFFF3E476A3E16CC65FB97AE3B6 /* Equal.swift in Sources */, + 270B7DD0330572926436952CBECD7916 /* Expectation.swift in Sources */, + 7754543A3D16F28B4F6696118C7FB89B /* Expression.swift in Sources */, + 34992C93702DDE7F1F54BFEFE73CBF4A /* FailureMessage.swift in Sources */, + 104F549D01B2765A0510292B3DFE9A2B /* Functional.swift in Sources */, + F1CE934A72EF0CCA570A3CF8F76DD1A5 /* Match.swift in Sources */, + AE1CBFE838E3A6F5CC99675AC987AE1B /* MatcherFunc.swift in Sources */, + DD61506353F237451EE25ED5027A324D /* MatcherProtocols.swift in Sources */, + ABBB01AC232DADB726DE420B30DEC46C /* NMBExceptionCapture.m in Sources */, + 8E7486843590554494ADF3A6B59471F1 /* Nimble-dummy.m in Sources */, + 449AF98AF2FD7834C500D434A74BD419 /* NimbleXCTestHandler.swift in Sources */, + 2B35387A4CCE54ECEA6C37380E4666D7 /* ObjCExpectation.swift in Sources */, + 13A1EA169C63584AC1684F863F8C8633 /* ObjCMatcher.swift in Sources */, + C9E3A36E00F1835BD14CE13CB2D7F2AA /* Poll.swift in Sources */, + BF27FE3E40BB081DBDF208AB8269559C /* RaisesException.swift in Sources */, + 93B99C83B57BDB3FF88670574B49BC08 /* SourceLocation.swift in Sources */, + 2FF215FDC27D542DF27FC2DAD161DCA2 /* Stringers.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2117,126 +2125,110 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FCC124DC562F4ADD72B88FB331B65866 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4079483A58DB57303441D8C8D3363F63 /* Alamofire-dummy.m in Sources */, - 466FD2B1F57B841C374622E915E5C0DA /* Alamofire.swift in Sources */, - EE108F2C9CDD5725C421B51C92DCABE7 /* Download.swift in Sources */, - DA2067F7395D351F1A50FC1C9827F0C7 /* Manager.swift in Sources */, - 7B57FC0F9BF0A08D908CB1B348C64B6E /* ParameterEncoding.swift in Sources */, - 759BF7C51C217B4E17F94EEE445066F4 /* Request.swift in Sources */, - 466A345861F990352FFC94F4E6CB8B8F /* ResponseSerialization.swift in Sources */, - EADBA719947BDDE9A01CF0B7EC76652C /* Upload.swift in Sources */, - BC0758CA41C786FBE31BCF5CB5EEE945 /* Validation.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 005E6CF2973DCAEB960228BF4CF91159 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Nimble; - target = E27CF2AFC333B671EE1C0D4341E992CD /* Nimble */; - targetProxy = 19501B119E79BC3F2AC7F72923BD4CFC /* PBXContainerItemProxy */; - }; - 13363902819EEBBA2B35284ED79AD82F /* PBXTargetDependency */ = { + 2109FD80337397BF9196622C3B7B045E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SnapKit; - target = E7A30C0AA8CA6849C1467A8AC95839D3 /* SnapKit */; - targetProxy = AC605CD4414A16E54DB2AC269B68E530 /* PBXContainerItemProxy */; + name = JTSImageViewController; + target = BBCCB84F06AB1991DEC386664C3407CE /* JTSImageViewController */; + targetProxy = 1E4FEBC8662682DD7D556C5E2AC580B4 /* PBXContainerItemProxy */; }; - 2A25498C5719DBD3CBD690242C73122E /* PBXTargetDependency */ = { + 322ECB6BEEDE1168ED2036B107023355 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = TTTAttributedLabel; - target = 88A25EA9B964D7CA3CE29D07655E085F /* TTTAttributedLabel */; - targetProxy = 8B58FF1862544E208C121ADCCF29D3F6 /* PBXContainerItemProxy */; + name = Nimble; + target = 9F0773CD55C506D3F7D39E42CB9D0C0C /* Nimble */; + targetProxy = 5A249E4E3796CB1B44C15A20CBAB4518 /* PBXContainerItemProxy */; }; - 2B211E222D135F1F9ECEC0124390AA45 /* PBXTargetDependency */ = { + 4C7DDC824726B221B203A202BA44E7A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = JTSImageViewController; - target = 6E78E48BDD22A4CDF5E263FF71B66E8B /* JTSImageViewController */; - targetProxy = B48405195491A90498E69A33AA239B84 /* PBXContainerItemProxy */; + name = Quick; + target = 8722EE56E6573BA693B2361B2A56EC26 /* Quick */; + targetProxy = 45673A21478411F8032E9B8D129F5FEB /* PBXContainerItemProxy */; }; - 2CDFDA442960DDB43ED992D6786B5F5E /* PBXTargetDependency */ = { + 4F6B20B82FDD922D39768CCF281953E0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = CYRTextView; - target = 0765F27455305D57358AFD081270DE48 /* CYRTextView */; - targetProxy = E62DAC8C8E9CC90E31256254B96010B5 /* PBXContainerItemProxy */; + target = C749208C55C80001E30C7B67B2F86837 /* CYRTextView */; + targetProxy = 220BADC09E6F58161C052781EBA395BE /* PBXContainerItemProxy */; }; - 705F956D26E420DD9019289A9D779538 /* PBXTargetDependency */ = { + 5117004C91DC6700A05AB267C8CD2D7B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SSDataSources; - target = B57C66D183C12FC103FCB320318BF1D7 /* SSDataSources */; - targetProxy = 44E154C807C05ADAA3D8229FF4571731 /* PBXContainerItemProxy */; + name = JTSImageViewController; + target = BBCCB84F06AB1991DEC386664C3407CE /* JTSImageViewController */; + targetProxy = 5FFD77E9860E88EEDED440178E6ABEFC /* PBXContainerItemProxy */; }; - 903E39578B4832B5012CAAC5365864B4 /* PBXTargetDependency */ = { + 8C96BBF95DE0C5869EF3FE86DCD052BB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = KIF; - target = 0C9EA721C4794C2C6EC3A967530000CE /* KIF */; - targetProxy = 88E4904ABDB08F7CF18FE37B443B3336 /* PBXContainerItemProxy */; + name = SnapKit; + target = E7A30C0AA8CA6849C1467A8AC95839D3 /* SnapKit */; + targetProxy = DBCAF4411784F3AB5610901363CACB55 /* PBXContainerItemProxy */; }; - 99C7CABD6C0DACE26A349E281D801ED7 /* PBXTargetDependency */ = { + A5B58738154A4BE6C0A06144B76F10BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SSDataSources; - target = B57C66D183C12FC103FCB320318BF1D7 /* SSDataSources */; - targetProxy = AA5D1E916AFDC0BB81065CDC702F2A6E /* PBXContainerItemProxy */; + name = pop; + target = A0FC735534CA6C20DB688A41935ED185 /* pop */; + targetProxy = A843987C2382EB884B5E08F33752FF14 /* PBXContainerItemProxy */; }; - AABC35F6484ADABAF003CF2504A81258 /* PBXTargetDependency */ = { + B05FB47FD0FE7B254584DA5A2BD1F979 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = TTTAttributedLabel; target = 88A25EA9B964D7CA3CE29D07655E085F /* TTTAttributedLabel */; - targetProxy = 89B82C5C50CEDFDB6A303601263294D1 /* PBXContainerItemProxy */; + targetProxy = B4F72CD7F5F27440655F67B6D6033171 /* PBXContainerItemProxy */; }; - AEE230AC0C5EC22EB84AA60B7513E7E0 /* PBXTargetDependency */ = { + C3C23C5A7CF57539347D7A94966E599C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Alamofire; - target = D03709FE87DAFA974B5B844D5ECFCD4D /* Alamofire */; - targetProxy = D0ECAEE69655EC243E73431720354852 /* PBXContainerItemProxy */; + target = 5041A2D25D2C3BF3F7F0561DA3A4358C /* Alamofire */; + targetProxy = 856820FF7DA9A1FBCB0B8E6C447114A9 /* PBXContainerItemProxy */; }; - B762B29903A5894D3B894CC3C7FE0993 /* PBXTargetDependency */ = { + C3CFB0F62809A65FCF31C331817EF1EE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = JTSImageViewController; - target = 6E78E48BDD22A4CDF5E263FF71B66E8B /* JTSImageViewController */; - targetProxy = CD0A05C2BD0AA918A249011567CE9514 /* PBXContainerItemProxy */; + name = Alamofire; + target = 5041A2D25D2C3BF3F7F0561DA3A4358C /* Alamofire */; + targetProxy = 3306DF7ADBC1908392967A57FD8BAB90 /* PBXContainerItemProxy */; }; - C04F976C9201CC7D107C4834436A7CBF /* PBXTargetDependency */ = { + C640B817D8D84A7018CBF01672628E68 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Quick; - target = 8722EE56E6573BA693B2361B2A56EC26 /* Quick */; - targetProxy = 454D2F3A652D1DB043135B4BE86B57CB /* PBXContainerItemProxy */; + name = CYRTextView; + target = C749208C55C80001E30C7B67B2F86837 /* CYRTextView */; + targetProxy = 280D3A1B567FA8E47FD03840F8960E7F /* PBXContainerItemProxy */; }; - C1A37BFAA636EB9EC2A1D56B82CE2F52 /* PBXTargetDependency */ = { + C7888C01A6D8B1689EF73728E5B3917F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = pop; - target = A0FC735534CA6C20DB688A41935ED185 /* pop */; - targetProxy = E0E1F8D1A8640FEA05AEDD37927C2163 /* PBXContainerItemProxy */; + name = SnapKit; + target = E7A30C0AA8CA6849C1467A8AC95839D3 /* SnapKit */; + targetProxy = 0BDD0DC68160489B7A696018F45468D8 /* PBXContainerItemProxy */; }; - C4FE94FF46753C5DE23E256745B9E4EA /* PBXTargetDependency */ = { + D062FAD64A337B0643B3B0B1FD7EA446 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Alamofire; - target = D03709FE87DAFA974B5B844D5ECFCD4D /* Alamofire */; - targetProxy = 83DD7820CD03F3AE46818F7E4D4B4FDF /* PBXContainerItemProxy */; + name = SSDataSources; + target = B57C66D183C12FC103FCB320318BF1D7 /* SSDataSources */; + targetProxy = 3E2A679B2E626C93EC90311CAC7E1074 /* PBXContainerItemProxy */; }; - CEC7BB4E4FB24EBA9E1F78B6F46C152C /* PBXTargetDependency */ = { + D95FEA707D94D6399630A21537F57B87 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SnapKit; - target = E7A30C0AA8CA6849C1467A8AC95839D3 /* SnapKit */; - targetProxy = B3147877F2D7442B501C91C85E36031F /* PBXContainerItemProxy */; + name = TTTAttributedLabel; + target = 88A25EA9B964D7CA3CE29D07655E085F /* TTTAttributedLabel */; + targetProxy = FE7A7B162F5E17B954F9343BCB101A14 /* PBXContainerItemProxy */; }; - E0D28E5C018329DB7CF559BFF1BBD62A /* PBXTargetDependency */ = { + E1F0F1BEA73C77FFB5FAF6B40779752B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = pop; target = A0FC735534CA6C20DB688A41935ED185 /* pop */; - targetProxy = 890720F9AE7EC6C52DA5A876397A0476 /* PBXContainerItemProxy */; + targetProxy = E54C65D4B3343A5E73947F4A19F83AEC /* PBXContainerItemProxy */; }; - EF60BAEAA26E6AF3C5B448DEC70C555A /* PBXTargetDependency */ = { + F8933C7F68D8A4B10A0003C08F33A01F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CYRTextView; - target = 0765F27455305D57358AFD081270DE48 /* CYRTextView */; - targetProxy = AC0C8B1E8CF62BF160F8074F41A13C05 /* PBXContainerItemProxy */; + name = KIF; + target = 172C48CA97657A0792774CB69F139E16 /* KIF */; + targetProxy = 90293A832E0AF377D56975DDECBDFC39 /* PBXContainerItemProxy */; + }; + FCAC2A06044169AB452B2EBA7F9E32C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SSDataSources; + target = B57C66D183C12FC103FCB320318BF1D7 /* SSDataSources */; + targetProxy = B1220D2B8A1F44514060DEF837B75222 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -2307,9 +2299,9 @@ }; name = Debug; }; - 2A1C17D46A67E204CE455B2A27E3EAD4 /* Adhoc */ = { + 16172EE5F7B0CAC8F920DDF039DCF5EB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23E2289DE6960595CF06BCE8A360C4E9 /* JTSImageViewController-Private.xcconfig */; + baseConfigurationReference = 04929BC9D885D7321E68EADE3085E663 /* CYRTextView-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2318,25 +2310,25 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/JTSImageViewController/JTSImageViewController-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/JTSImageViewController/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CYRTextView/CYRTextView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CYRTextView/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/JTSImageViewController/JTSImageViewController.modulemap"; + MODULEMAP_FILE = "Target Support Files/CYRTextView/CYRTextView.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = JTSImageViewController; + PRODUCT_NAME = CYRTextView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Adhoc; + name = Release; }; - 2F0F8CA322C25AD4C4CBF9BC5B304E6F /* Debug */ = { + 20932B4B00175E5E6EFBCBA09B6CEAAF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32037A908779F87A06239145440D57A7 /* Alamofire-Private.xcconfig */; + baseConfigurationReference = A2F335E608E9B0F0B935C64E1882A39D /* Alamofire-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2351,16 +2343,15 @@ 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; + MTL_ENABLE_DEBUG_INFO = NO; 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; + name = Release; }; 300AEE802A6A62394C3A79EB3DD6676F /* Debug */ = { isa = XCBuildConfiguration; @@ -2390,9 +2381,9 @@ }; name = Debug; }; - 3C4F536FE6AAB25292DE4212B126AC66 /* Release */ = { + 3BAD5FCCAA232A758C48826837C88D4E /* Adhoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67025B82BCA39932BB42BE549C0BED39 /* CYRTextView-Private.xcconfig */; + baseConfigurationReference = A2F335E608E9B0F0B935C64E1882A39D /* Alamofire-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2401,21 +2392,21 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/CYRTextView/CYRTextView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CYRTextView/Info.plist"; + 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/CYRTextView/CYRTextView.modulemap"; + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = CYRTextView; + PRODUCT_NAME = Alamofire; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Adhoc; }; 3D8F9EFC8FAA142D22F9252EE98D89A4 /* Adhoc */ = { isa = XCBuildConfiguration; @@ -2446,9 +2437,9 @@ }; name = Adhoc; }; - 3E9C85CA5463C1C460C913D253B607C6 /* Debug */ = { + 440637D61B2E762D06096E90DBA346C5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E519B913F1CF32AF49B30F4961ECA691 /* KIF-Private.xcconfig */; + baseConfigurationReference = 04929BC9D885D7321E68EADE3085E663 /* CYRTextView-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2457,14 +2448,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/KIF/KIF-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/KIF/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CYRTextView/CYRTextView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CYRTextView/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/KIF/KIF.modulemap"; + MODULEMAP_FILE = "Target Support Files/CYRTextView/CYRTextView.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = KIF; + PRODUCT_NAME = CYRTextView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2473,6 +2464,33 @@ }; name = Debug; }; + 48EC1E14BC6628467F8778EFB4C0A4DD /* Adhoc */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2724112B9EB2318D6A1E62307B8B9FE0 /* JTSImageViewController-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/JTSImageViewController/JTSImageViewController-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JTSImageViewController/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/JTSImageViewController/JTSImageViewController.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = JTSImageViewController; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Adhoc; + }; 53E07DE3D96796AF68164C7E92008ED2 /* Adhoc */ = { isa = XCBuildConfiguration; baseConfigurationReference = 875E37BB951B888AE46D6049333E62AC /* SSDataSources-Private.xcconfig */; @@ -2500,9 +2518,9 @@ }; name = Adhoc; }; - 63B1D20D273905A902C77DDE8868EC85 /* Release */ = { + 5C44EF8F23F02F74DDE3604D15DE9458 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 13787225460CD3BB08ED46683D41AE07 /* Pods-Bequest.release.xcconfig */; + baseConfigurationReference = F89509B58AF14CFC844031E6E4A44618 /* Nimble-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2511,27 +2529,26 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-Bequest/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/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/Pods-Bequest/Pods-Bequest.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_Bequest; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 6BBC42A15ACCE7858DB81BE7E7725434 /* Debug */ = { + 63B1D20D273905A902C77DDE8868EC85 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F2AE40A2AF416AB7D324B86C78B44E1 /* Pods-BequestTests.debug.xcconfig */; + baseConfigurationReference = 13787225460CD3BB08ED46683D41AE07 /* Pods-Bequest.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2540,28 +2557,27 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-BequestTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Bequest/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/Pods-BequestTests/Pods-BequestTests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MODULEMAP_FILE = "Target Support Files/Pods-Bequest/Pods-Bequest.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_BequestTests; + PRODUCT_NAME = Pods_Bequest; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 76F4493F1A56457A1D337F8C41AF18AA /* Release */ = { + 6BBC42A15ACCE7858DB81BE7E7725434 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23E2289DE6960595CF06BCE8A360C4E9 /* JTSImageViewController-Private.xcconfig */; + baseConfigurationReference = 8F2AE40A2AF416AB7D324B86C78B44E1 /* Pods-BequestTests.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2570,21 +2586,24 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/JTSImageViewController/JTSImageViewController-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/JTSImageViewController/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-BequestTests/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/JTSImageViewController/JTSImageViewController.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = JTSImageViewController; + MODULEMAP_FILE = "Target Support Files/Pods-BequestTests/Pods-BequestTests.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_BequestTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 7C84345D7EEBBBB2BFF18E13BB3BA6A7 /* Release */ = { isa = XCBuildConfiguration; @@ -2680,9 +2699,9 @@ }; name = Release; }; - 8FBB9199A18325D59B572F5576B3AA57 /* Release */ = { + 8A130B70484D3A2F2E088FD86F33B503 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 766AC80DB88F137D6672831084534CA8 /* TTTAttributedLabel-Private.xcconfig */; + baseConfigurationReference = 2724112B9EB2318D6A1E62307B8B9FE0 /* JTSImageViewController-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2691,14 +2710,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/TTTAttributedLabel/TTTAttributedLabel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/TTTAttributedLabel/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/JTSImageViewController/JTSImageViewController-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JTSImageViewController/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/TTTAttributedLabel/TTTAttributedLabel.modulemap"; + MODULEMAP_FILE = "Target Support Files/JTSImageViewController/JTSImageViewController.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = TTTAttributedLabel; + PRODUCT_NAME = JTSImageViewController; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2707,9 +2726,9 @@ }; name = Release; }; - 97FF5F50FBBBACEC6DD18EED4582904E /* Adhoc */ = { + 8FBB9199A18325D59B572F5576B3AA57 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E519B913F1CF32AF49B30F4961ECA691 /* KIF-Private.xcconfig */; + baseConfigurationReference = 766AC80DB88F137D6672831084534CA8 /* TTTAttributedLabel-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2718,21 +2737,21 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/KIF/KIF-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/KIF/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/TTTAttributedLabel/TTTAttributedLabel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/TTTAttributedLabel/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/KIF/KIF.modulemap"; + MODULEMAP_FILE = "Target Support Files/TTTAttributedLabel/TTTAttributedLabel.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = KIF; + PRODUCT_NAME = TTTAttributedLabel; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Adhoc; + name = Release; }; 9986F3A1BE1CE56E54ACBC3841B131A1 /* Adhoc */ = { isa = XCBuildConfiguration; @@ -2790,9 +2809,9 @@ }; name = Adhoc; }; - A5DFF58A491BC343553D863A1947FC89 /* Release */ = { + 9F65D91A420F5A77418DC36E422DA450 /* Adhoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 25DF34C922C01ED58777F2F685BC9558 /* Quick-Private.xcconfig */; + baseConfigurationReference = F89509B58AF14CFC844031E6E4A44618 /* Nimble-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2801,25 +2820,25 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/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/Quick/Quick.modulemap"; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Quick; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Adhoc; }; - A7B5AD542725256A2791A288E461BA28 /* Release */ = { + A5DFF58A491BC343553D863A1947FC89 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0CF163798AB40BC182BADF1A70C1FF26 /* Nimble-Private.xcconfig */; + baseConfigurationReference = 25DF34C922C01ED58777F2F685BC9558 /* Quick-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2828,14 +2847,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Quick/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/Nimble/Nimble.modulemap"; + MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Nimble; + PRODUCT_NAME = Quick; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2926,9 +2945,9 @@ }; name = Release; }; - AF3445266E4ACC1E29CB70BA21DC4741 /* Release */ = { + AF24F9D322E621A0A36CCE8F16E472A5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DB76151BDD959082EFFAB4AC602F4761 /* Pods-BequestTests.release.xcconfig */; + baseConfigurationReference = A2F335E608E9B0F0B935C64E1882A39D /* Alamofire-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2937,27 +2956,26 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-BequestTests/Info.plist"; + 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/Pods-BequestTests/Pods-BequestTests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_BequestTests; + 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 = Release; + name = Debug; }; - B05FA0F9EB877C2A54589B916EAF53BF /* Adhoc */ = { + AF3445266E4ACC1E29CB70BA21DC4741 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67025B82BCA39932BB42BE549C0BED39 /* CYRTextView-Private.xcconfig */; + baseConfigurationReference = DB76151BDD959082EFFAB4AC602F4761 /* Pods-BequestTests.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -2966,21 +2984,23 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/CYRTextView/CYRTextView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CYRTextView/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-BequestTests/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/CYRTextView/CYRTextView.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-BequestTests/Pods-BequestTests.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = CYRTextView; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_BequestTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Adhoc; + name = Release; }; B55629BA44B19C2279E7EA39E57D3389 /* Debug */ = { isa = XCBuildConfiguration; @@ -3009,36 +3029,9 @@ }; name = Debug; }; - B5EB3B36F58EC69DB820742AA1109436 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 23E2289DE6960595CF06BCE8A360C4E9 /* JTSImageViewController-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/JTSImageViewController/JTSImageViewController-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/JTSImageViewController/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/JTSImageViewController/JTSImageViewController.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = JTSImageViewController; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B7F1BCB22F01920610917C9F3EC48ECA /* Release */ = { + B5DE635DEF8D2B0125C804A54BAB3A80 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E519B913F1CF32AF49B30F4961ECA691 /* KIF-Private.xcconfig */; + baseConfigurationReference = C1E7FC8BECAD407DC510F2A654E8D427 /* KIF-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3063,9 +3056,9 @@ }; name = Release; }; - BD9720E24201AB69887C2864742246E5 /* Adhoc */ = { + B912DCD38AB5F1E01F728A7E81BADB1B /* Adhoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32037A908779F87A06239145440D57A7 /* Alamofire-Private.xcconfig */; + baseConfigurationReference = 04929BC9D885D7321E68EADE3085E663 /* CYRTextView-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3074,14 +3067,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CYRTextView/CYRTextView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CYRTextView/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"; + MODULEMAP_FILE = "Target Support Files/CYRTextView/CYRTextView.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Alamofire; + PRODUCT_NAME = CYRTextView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3090,9 +3083,9 @@ }; name = Adhoc; }; - CDDDC22CCA993A106E998E8E4789E6F4 /* Release */ = { + C6D7A6A09CC226ACE875F78BDB534074 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23A6A75A34628FF1101A29F5692EFC84 /* pop-Private.xcconfig */; + baseConfigurationReference = C1E7FC8BECAD407DC510F2A654E8D427 /* KIF-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3101,25 +3094,25 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/pop/pop-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/pop/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/KIF/KIF-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/KIF/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/pop/pop.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = pop; + MODULEMAP_FILE = "Target Support Files/KIF/KIF.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = KIF; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - D0CE6F02933C96C3D7D840A325533014 /* Release */ = { + CDDDC22CCA993A106E998E8E4789E6F4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32037A908779F87A06239145440D57A7 /* Alamofire-Private.xcconfig */; + baseConfigurationReference = 23A6A75A34628FF1101A29F5692EFC84 /* pop-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3128,14 +3121,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/pop/pop-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/pop/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"; + MODULEMAP_FILE = "Target Support Files/pop/pop.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Alamofire; + PRODUCT_NAME = pop; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3144,9 +3137,9 @@ }; name = Release; }; - D4F7B0C94D7DD1AFB334AA3E36075C69 /* Debug */ = { + DB1DB04C6CDBACF0023E7B413CFA0747 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0CF163798AB40BC182BADF1A70C1FF26 /* Nimble-Private.xcconfig */; + baseConfigurationReference = 23A6A75A34628FF1101A29F5692EFC84 /* pop-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3155,26 +3148,25 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/pop/pop-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/pop/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/Nimble/Nimble.modulemap"; + MODULEMAP_FILE = "Target Support Files/pop/pop.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Nimble; + PRODUCT_NAME = pop; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - DB1DB04C6CDBACF0023E7B413CFA0747 /* Debug */ = { + E6C81D545989F31C64258ACFEEC12220 /* Adhoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23A6A75A34628FF1101A29F5692EFC84 /* pop-Private.xcconfig */; + baseConfigurationReference = C1E7FC8BECAD407DC510F2A654E8D427 /* KIF-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3183,25 +3175,25 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/pop/pop-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/pop/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/KIF/KIF-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/KIF/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/pop/pop.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = pop; + MODULEMAP_FILE = "Target Support Files/KIF/KIF.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = KIF; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Adhoc; }; - E03F58B5C16DDA73EBD5FD52BAE122E5 /* Debug */ = { + EB61E34158FDFAD6C8BFA2B1C553DFBF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67025B82BCA39932BB42BE549C0BED39 /* CYRTextView-Private.xcconfig */; + baseConfigurationReference = 2724112B9EB2318D6A1E62307B8B9FE0 /* JTSImageViewController-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3210,14 +3202,14 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/CYRTextView/CYRTextView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CYRTextView/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/JTSImageViewController/JTSImageViewController-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JTSImageViewController/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/CYRTextView/CYRTextView.modulemap"; + MODULEMAP_FILE = "Target Support Files/JTSImageViewController/JTSImageViewController.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = CYRTextView; + PRODUCT_NAME = JTSImageViewController; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3253,9 +3245,9 @@ }; name = Adhoc; }; - F8C3E7007836F31E42146E140614E988 /* Adhoc */ = { + F63B1F68C9E13D4BEF206DCA67729F7D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0CF163798AB40BC182BADF1A70C1FF26 /* Nimble-Private.xcconfig */; + baseConfigurationReference = F89509B58AF14CFC844031E6E4A44618 /* Nimble-Private.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -3278,7 +3270,7 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Adhoc; + name = Release; }; F93B3B43FDA664490622DA20AB385151 /* Adhoc */ = { isa = XCBuildConfiguration; @@ -3340,42 +3332,42 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2346E1E2F78B2AEB0D88676789D91E42 /* Build configuration list for PBXNativeTarget "Pods-BequestTests" */ = { + 1BD5697E3C5499F695E26E6B730F1154 /* Build configuration list for PBXNativeTarget "Nimble" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D080ED2CF0F34645BFC017439CD6531 /* Adhoc */, - 6BBC42A15ACCE7858DB81BE7E7725434 /* Debug */, - AF3445266E4ACC1E29CB70BA21DC4741 /* Release */, + 9F65D91A420F5A77418DC36E422DA450 /* Adhoc */, + 5C44EF8F23F02F74DDE3604D15DE9458 /* Debug */, + F63B1F68C9E13D4BEF206DCA67729F7D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 2346E1E2F78B2AEB0D88676789D91E42 /* Build configuration list for PBXNativeTarget "Pods-BequestTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 80C7FC6C7C96B2A066DF55A389C78D56 /* Adhoc */, - 0C812A8B084AB655D058D5DC45F0D458 /* Debug */, - 7C84345D7EEBBBB2BFF18E13BB3BA6A7 /* Release */, + 9D080ED2CF0F34645BFC017439CD6531 /* Adhoc */, + 6BBC42A15ACCE7858DB81BE7E7725434 /* Debug */, + AF3445266E4ACC1E29CB70BA21DC4741 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 306E947A0C79B145B65403641A70F6F9 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { + 2B50C6EBAC811E04BF514ED75400BD3A /* Build configuration list for PBXNativeTarget "CYRTextView" */ = { isa = XCConfigurationList; buildConfigurations = ( - BD9720E24201AB69887C2864742246E5 /* Adhoc */, - 2F0F8CA322C25AD4C4CBF9BC5B304E6F /* Debug */, - D0CE6F02933C96C3D7D840A325533014 /* Release */, + B912DCD38AB5F1E01F728A7E81BADB1B /* Adhoc */, + 440637D61B2E762D06096E90DBA346C5 /* Debug */, + 16172EE5F7B0CAC8F920DDF039DCF5EB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 44D6F14DFAA03A3D543CB34ABF7514DA /* Build configuration list for PBXNativeTarget "CYRTextView" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - B05FA0F9EB877C2A54589B916EAF53BF /* Adhoc */, - E03F58B5C16DDA73EBD5FD52BAE122E5 /* Debug */, - 3C4F536FE6AAB25292DE4212B126AC66 /* Release */, + 80C7FC6C7C96B2A066DF55A389C78D56 /* Adhoc */, + 0C812A8B084AB655D058D5DC45F0D458 /* Debug */, + 7C84345D7EEBBBB2BFF18E13BB3BA6A7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3440,32 +3432,32 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B2E78B0D2513192236CE8E98FB286B0C /* Build configuration list for PBXNativeTarget "JTSImageViewController" */ = { + A0283960738A2943A62E44F79812F0AB /* Build configuration list for PBXNativeTarget "JTSImageViewController" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2A1C17D46A67E204CE455B2A27E3EAD4 /* Adhoc */, - B5EB3B36F58EC69DB820742AA1109436 /* Debug */, - 76F4493F1A56457A1D337F8C41AF18AA /* Release */, + 48EC1E14BC6628467F8778EFB4C0A4DD /* Adhoc */, + EB61E34158FDFAD6C8BFA2B1C553DFBF /* Debug */, + 8A130B70484D3A2F2E088FD86F33B503 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C91C208B162D68B27346FF6AD1D601BD /* Build configuration list for PBXNativeTarget "KIF" */ = { + F0381D5CED254AA0AB3705C839785066 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { isa = XCConfigurationList; buildConfigurations = ( - 97FF5F50FBBBACEC6DD18EED4582904E /* Adhoc */, - 3E9C85CA5463C1C460C913D253B607C6 /* Debug */, - B7F1BCB22F01920610917C9F3EC48ECA /* Release */, + 3BAD5FCCAA232A758C48826837C88D4E /* Adhoc */, + AF24F9D322E621A0A36CCE8F16E472A5 /* Debug */, + 20932B4B00175E5E6EFBCBA09B6CEAAF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C940BC5BD280A10AE5F2BCCBB82BD84C /* Build configuration list for PBXNativeTarget "Nimble" */ = { + F8F5D81A8A73D8A51B466F6C2756BAD0 /* Build configuration list for PBXNativeTarget "KIF" */ = { isa = XCConfigurationList; buildConfigurations = ( - F8C3E7007836F31E42146E140614E988 /* Adhoc */, - D4F7B0C94D7DD1AFB334AA3E36075C69 /* Debug */, - A7B5AD542725256A2791A288E461BA28 /* Release */, + E6C81D545989F31C64258ACFEEC12220 /* Adhoc */, + C6D7A6A09CC226ACE875F78BDB534074 /* Debug */, + B5DE635DEF8D2B0125C804A54BAB3A80 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/src/Pods/Quick/Quick/DSL/DSL.swift b/src/Pods/Quick/Quick/DSL/DSL.swift index 15796c4..6244e5c 100644 --- a/src/Pods/Quick/Quick/DSL/DSL.swift +++ b/src/Pods/Quick/Quick/DSL/DSL.swift @@ -73,7 +73,7 @@ public func describe(description: String, flags: FilterFlags = [:], closure: () Defines an example group. Equivalent to `describe`. */ public func context(description: String, flags: FilterFlags = [:], closure: () -> ()) { - describe(description, flags: flags, closure) + describe(description, flags: flags, closure: closure) } /** @@ -82,7 +82,7 @@ public func context(description: String, flags: FilterFlags = [:], closure: () - An example group may contain an unlimited number of beforeEach. They'll be run in the order they're defined, but you shouldn't rely on that behavior. - :param: closure The closure to be run prior to each example. + - parameter closure: The closure to be run prior to each example. */ public func beforeEach(closure: BeforeExampleClosure) { World.sharedWorld().beforeEach(closure) @@ -92,7 +92,7 @@ public func beforeEach(closure: BeforeExampleClosure) { Identical to Quick.DSL.beforeEach, except the closure is provided with metadata on the example that the closure is being run prior to. */ -public func beforeEach(#closure: BeforeExampleWithMetadataClosure) { +public func beforeEach(closure closure: BeforeExampleWithMetadataClosure) { World.sharedWorld().beforeEach(closure: closure) } @@ -112,7 +112,7 @@ public func afterEach(closure: AfterExampleClosure) { Identical to Quick.DSL.afterEach, except the closure is provided with metadata on the example that the closure is being run after. */ -public func afterEach(#closure: AfterExampleWithMetadataClosure) { +public func afterEach(closure closure: AfterExampleWithMetadataClosure) { World.sharedWorld().afterEach(closure: closure) } @@ -144,7 +144,7 @@ public func it(description: String, flags: FilterFlags = [:], file: String = __F :param: line The line containing the current example group. A sensible default is provided. */ public func itBehavesLike(name: String, flags: FilterFlags = [:], file: String = __FILE__, line: Int = __LINE__) { - itBehavesLike(name, flags: flags, file: file, line: line, { return [:] }) + itBehavesLike(name, flags: flags, file: file, line: line, sharedExampleContext: { return [:] }) } /** @@ -191,7 +191,7 @@ public func xdescribe(description: String, flags: FilterFlags, closure: () -> () This disables all examples within the closure. */ public func xcontext(description: String, flags: FilterFlags, closure: () -> ()) { - xdescribe(description, flags, closure) + xdescribe(description, flags: flags, closure: closure) } /** @@ -215,7 +215,7 @@ public func fdescribe(description: String, flags: FilterFlags = [:], closure: () Use this to quickly focus a `context` closure. Equivalent to `fdescribe`. */ public func fcontext(description: String, flags: FilterFlags = [:], closure: () -> ()) { - fdescribe(description, flags: flags, closure) + fdescribe(description, flags: flags, closure: closure) } /** diff --git a/src/Pods/Quick/Quick/DSL/World+DSL.swift b/src/Pods/Quick/Quick/DSL/World+DSL.swift index 15e1e96..cf9de09 100644 --- a/src/Pods/Quick/Quick/DSL/World+DSL.swift +++ b/src/Pods/Quick/Quick/DSL/World+DSL.swift @@ -17,7 +17,7 @@ extension World { } public func describe(description: String, flags: FilterFlags, closure: () -> ()) { - var group = ExampleGroup(description: description, flags: flags) + let group = ExampleGroup(description: description, flags: flags) currentExampleGroup!.appendExampleGroup(group) currentExampleGroup = group closure() @@ -44,7 +44,7 @@ extension World { currentExampleGroup!.hooks.appendBefore(closure) } - public func beforeEach(#closure: BeforeExampleWithMetadataClosure) { + public func beforeEach(closure closure: BeforeExampleWithMetadataClosure) { currentExampleGroup!.hooks.appendBefore(closure) } @@ -52,7 +52,7 @@ extension World { currentExampleGroup!.hooks.appendAfter(closure) } - public func afterEach(#closure: AfterExampleWithMetadataClosure) { + public func afterEach(closure closure: AfterExampleWithMetadataClosure) { currentExampleGroup!.hooks.appendAfter(closure) } @@ -82,7 +82,7 @@ extension World { let callsite = Callsite(file: file, line: line) let closure = World.sharedWorld().sharedExample(name) - var group = ExampleGroup(description: name, flags: flags) + let group = ExampleGroup(description: name, flags: flags) currentExampleGroup!.appendExampleGroup(group) currentExampleGroup = group closure(sharedExampleContext) @@ -95,6 +95,6 @@ extension World { } public func pending(description: String, closure: () -> ()) { - println("Pending: \(description)") + print("Pending: \(description)") } } diff --git a/src/Pods/Quick/Quick/ExampleGroup.swift b/src/Pods/Quick/Quick/ExampleGroup.swift index ecd6738..337fdee 100644 --- a/src/Pods/Quick/Quick/ExampleGroup.swift +++ b/src/Pods/Quick/Quick/ExampleGroup.swift @@ -53,11 +53,11 @@ } internal var befores: [BeforeExampleWithMetadataClosure] { - var closures = hooks.befores.reverse() + var closures = Array(hooks.befores.reverse()) walkUp() { (group: ExampleGroup) -> () in - closures.extend(group.hooks.befores.reverse()) + closures.extend(Array(group.hooks.befores.reverse())) } - return closures.reverse() + return Array(closures.reverse()) } internal var afters: [AfterExampleWithMetadataClosure] { diff --git a/src/Pods/Quick/Quick/Failure.swift b/src/Pods/Quick/Quick/Failure.swift deleted file mode 100644 index ff7e4ca..0000000 --- a/src/Pods/Quick/Quick/Failure.swift +++ /dev/null @@ -1,16 +0,0 @@ -import Foundation - -@objc final class Failure { - let callsite: Callsite - let exception: NSException - - init(exception: NSException, callsite: Callsite) { - self.exception = exception - self.callsite = callsite - } - - @objc(failureWithException:callsite:) - class func failure(exception: NSException, callsite: Callsite) -> Failure { - return Failure(exception: exception, callsite: callsite) - } -} diff --git a/src/Pods/Quick/Quick/World.swift b/src/Pods/Quick/Quick/World.swift index 68110b4..7e42b0b 100644 --- a/src/Pods/Quick/Quick/World.swift +++ b/src/Pods/Quick/Quick/World.swift @@ -135,7 +135,7 @@ public typealias SharedExampleClosure = (SharedExampleContext) -> () // 1. Grab all included examples. let included = includedExamples // 2. Grab the intersection of (a) examples for this spec, and (b) included examples. - let spec = rootExampleGroupForSpecClass(specClass).examples.filter { contains(included, $0) } + let spec = rootExampleGroupForSpecClass(specClass).examples.filter { included.contains($0) } // 3. Remove all excluded examples. return spec.filter { example in !self.configuration.exclusionFilters.reduce(false) { $0 || $1(example: example) } diff --git a/src/Pods/Quick/README.md b/src/Pods/Quick/README.md index 3d349f6..b561f30 100644 --- a/src/Pods/Quick/README.md +++ b/src/Pods/Quick/README.md @@ -3,8 +3,6 @@ Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by [RSpec](https://github.com/rspec/rspec), [Specta](https://github.com/specta/specta), and [Ginkgo](https://github.com/onsi/ginkgo). -[![Build Status](https://travis-ci.org/Quick/Quick.svg?branch=swift-1.1)](https://travis-ci.org/Quick/Quick) - ![](https://raw.githubusercontent.com/Quick/Assets/master/Screenshots/QuickSpec%20screenshot.png) ```swift diff --git a/src/Pods/SnapKit/Source/Constraint.swift b/src/Pods/SnapKit/Source/Constraint.swift index 859e086..0825ef1 100644 --- a/src/Pods/SnapKit/Source/Constraint.swift +++ b/src/Pods/SnapKit/Source/Constraint.swift @@ -127,7 +127,7 @@ internal class ConcreteConstraint: Constraint { } internal override func install() -> [LayoutConstraint] { - return self.installOnView(updateExisting: false) + return self.installOnViewUpdatingExisting(false) } internal override func uninstall() -> Void { @@ -191,10 +191,10 @@ internal class ConcreteConstraint: Constraint { self.priority = priority } - internal func installOnView(updateExisting: Bool = false) -> [LayoutConstraint] { + internal func installOnViewUpdatingExisting(updateExisting: Bool = false) -> [LayoutConstraint] { var installOnView: View? = nil if self.toItem.view != nil { - installOnView = closestCommonSuperviewBetween(self.fromItem.view, self.toItem.view) + installOnView = closestCommonSuperviewFromView(self.fromItem.view, toView: self.toItem.view) if installOnView == nil { NSException(name: "Cannot Install Constraint", reason: "No common superview between views", userInfo: nil).raise() return [] @@ -236,7 +236,7 @@ internal class ConcreteConstraint: Constraint { let layoutToAttribute = (layoutToAttributes.count > 0) ? layoutToAttributes[0] : layoutFromAttribute // get layout constant - var layoutConstant: CGFloat = layoutToAttribute.snp_constantForValue(self.constant) + let layoutConstant: CGFloat = layoutToAttribute.snp_constantForValue(self.constant) // get layout to var layoutTo: View? = self.toItem.view @@ -266,7 +266,7 @@ internal class ConcreteConstraint: Constraint { // special logic for updating if updateExisting { // get existing constraints for this view - let existingLayoutConstraints = reverse(layoutFrom!.snp_installedLayoutConstraints) + let existingLayoutConstraints = layoutFrom!.snp_installedLayoutConstraints.reverse() // array that will contain only new layout constraints to keep var newLayoutConstraintsToKeep = [LayoutConstraint]() @@ -330,7 +330,7 @@ internal class ConcreteConstraint: Constraint { // remove the constraints from the from item view if let fromView = self.fromItem.view { fromView.snp_installedLayoutConstraints = fromView.snp_installedLayoutConstraints.filter { - return !contains(installedLayoutConstraints, $0) + return !installedLayoutConstraints.contains($0) } } } @@ -400,6 +400,7 @@ private extension NSLayoutAttribute { case .Leading: return point.x case .Trailing: return point.x case .Width, .Height, .NotAnAttribute: return CGFloat(0) + case .FirstBaseline: return point.y } #endif } @@ -424,6 +425,7 @@ private extension NSLayoutAttribute { case .Leading: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.left : -insets.right case .Trailing: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.right : -insets.left case .Width, .Height, .NotAnAttribute: return CGFloat(0) + case .FirstBaseline: return insets.bottom } #endif } @@ -432,11 +434,11 @@ private extension NSLayoutAttribute { } } -private func closestCommonSuperviewBetween(fromView: View?, toView: View?) -> View? { +private func closestCommonSuperviewFromView(fromView: View?, toView: View?) -> View? { var views = Set() var fromView = fromView var toView = toView - do { + repeat { if let view = toView { if views.contains(view) { return view diff --git a/src/Pods/SnapKit/Source/ConstraintAttributes.swift b/src/Pods/SnapKit/Source/ConstraintAttributes.swift index d20cd95..06b3dec 100644 --- a/src/Pods/SnapKit/Source/ConstraintAttributes.swift +++ b/src/Pods/SnapKit/Source/ConstraintAttributes.swift @@ -30,7 +30,7 @@ import AppKit /** Used to define `NSLayoutAttributes` in a more concise and composite manner */ -internal struct ConstraintAttributes: RawOptionSetType, BooleanType { +internal struct ConstraintAttributes: OptionSetType, BooleanType { internal init(rawValue: UInt) { self.rawValue = rawValue @@ -43,113 +43,113 @@ internal struct ConstraintAttributes: RawOptionSetType, BooleanType { } internal private(set) var rawValue: UInt - internal static var allZeros: ConstraintAttributes { return self(0) } - internal static func convertFromNilLiteral() -> ConstraintAttributes { return self(0) } + internal static var allZeros: ConstraintAttributes { return self.init(0) } + internal static func convertFromNilLiteral() -> ConstraintAttributes { return self.init(0) } internal var boolValue: Bool { return self.rawValue != 0 } internal func toRaw() -> UInt { return self.rawValue } - internal static func fromRaw(raw: UInt) -> ConstraintAttributes? { return self(raw) } - internal static func fromMask(raw: UInt) -> ConstraintAttributes { return self(raw) } + internal static func fromRaw(raw: UInt) -> ConstraintAttributes? { return self.init(raw) } + internal static func fromMask(raw: UInt) -> ConstraintAttributes { return self.init(raw) } // normal - internal static var None: ConstraintAttributes { return self(0) } - internal static var Left: ConstraintAttributes { return self(1) } - internal static var Top: ConstraintAttributes { return self(2) } - internal static var Right: ConstraintAttributes { return self(4) } - internal static var Bottom: ConstraintAttributes { return self(8) } - internal static var Leading: ConstraintAttributes { return self(16) } - internal static var Trailing: ConstraintAttributes { return self(32) } - internal static var Width: ConstraintAttributes { return self(64) } - internal static var Height: ConstraintAttributes { return self(128) } - internal static var CenterX: ConstraintAttributes { return self(256) } - internal static var CenterY: ConstraintAttributes { return self(512) } - internal static var Baseline: ConstraintAttributes { return self(1024) } + internal static var None: ConstraintAttributes { return self.init(0) } + internal static var Left: ConstraintAttributes { return self.init(1) } + internal static var Top: ConstraintAttributes { return self.init(2) } + internal static var Right: ConstraintAttributes { return self.init(4) } + internal static var Bottom: ConstraintAttributes { return self.init(8) } + internal static var Leading: ConstraintAttributes { return self.init(16) } + internal static var Trailing: ConstraintAttributes { return self.init(32) } + internal static var Width: ConstraintAttributes { return self.init(64) } + internal static var Height: ConstraintAttributes { return self.init(128) } + internal static var CenterX: ConstraintAttributes { return self.init(256) } + internal static var CenterY: ConstraintAttributes { return self.init(512) } + internal static var Baseline: ConstraintAttributes { return self.init(1024) } #if os(iOS) - internal static var FirstBaseline: ConstraintAttributes { return self(2048) } - internal static var LeftMargin: ConstraintAttributes { return self(4096) } - internal static var RightMargin: ConstraintAttributes { return self(8192) } - internal static var TopMargin: ConstraintAttributes { return self(16384) } - internal static var BottomMargin: ConstraintAttributes { return self(32768) } - internal static var LeadingMargin: ConstraintAttributes { return self(65536) } - internal static var TrailingMargin: ConstraintAttributes { return self(131072) } - internal static var CenterXWithinMargins: ConstraintAttributes { return self(262144) } - internal static var CenterYWithinMargins: ConstraintAttributes { return self(524288) } + internal static var FirstBaseline: ConstraintAttributes { return self.init(2048) } + internal static var LeftMargin: ConstraintAttributes { return self.init(4096) } + internal static var RightMargin: ConstraintAttributes { return self.init(8192) } + internal static var TopMargin: ConstraintAttributes { return self.init(16384) } + internal static var BottomMargin: ConstraintAttributes { return self.init(32768) } + internal static var LeadingMargin: ConstraintAttributes { return self.init(65536) } + internal static var TrailingMargin: ConstraintAttributes { return self.init(131072) } + internal static var CenterXWithinMargins: ConstraintAttributes { return self.init(262144) } + internal static var CenterYWithinMargins: ConstraintAttributes { return self.init(524288) } #endif // aggregates - internal static var Edges: ConstraintAttributes { return self(15) } - internal static var Size: ConstraintAttributes { return self(192) } - internal static var Center: ConstraintAttributes { return self(768) } + internal static var Edges: ConstraintAttributes { return self.init(15) } + internal static var Size: ConstraintAttributes { return self.init(192) } + internal static var Center: ConstraintAttributes { return self.init(768) } #if os(iOS) - internal static var Margins: ConstraintAttributes { return self(61440) } - internal static var CenterWithinMargins: ConstraintAttributes { return self(786432) } + internal static var Margins: ConstraintAttributes { return self.init(61440) } + internal static var CenterWithinMargins: ConstraintAttributes { return self.init(786432) } #endif internal var layoutAttributes:[NSLayoutAttribute] { var attrs = [NSLayoutAttribute]() - if (self & ConstraintAttributes.Left) { + if (self.contains(ConstraintAttributes.Left)) { attrs.append(.Left) } - if (self & ConstraintAttributes.Top) { + if (self.contains(ConstraintAttributes.Top)) { attrs.append(.Top) } - if (self & ConstraintAttributes.Right) { + if (self.contains(ConstraintAttributes.Right)) { attrs.append(.Right) } - if (self & ConstraintAttributes.Bottom) { + if (self.contains(ConstraintAttributes.Bottom)) { attrs.append(.Bottom) } - if (self & ConstraintAttributes.Leading) { + if (self.contains(ConstraintAttributes.Leading)) { attrs.append(.Leading) } - if (self & ConstraintAttributes.Trailing) { + if (self.contains(ConstraintAttributes.Trailing)) { attrs.append(.Trailing) } - if (self & ConstraintAttributes.Width) { + if (self.contains(ConstraintAttributes.Width)) { attrs.append(.Width) } - if (self & ConstraintAttributes.Height) { + if (self.contains(ConstraintAttributes.Height)) { attrs.append(.Height) } - if (self & ConstraintAttributes.CenterX) { + if (self.contains(ConstraintAttributes.CenterX)) { attrs.append(.CenterX) } - if (self & ConstraintAttributes.CenterY) { + if (self.contains(ConstraintAttributes.CenterY)) { attrs.append(.CenterY) } - if (self & ConstraintAttributes.Baseline) { + if (self.contains(ConstraintAttributes.Baseline)) { attrs.append(.Baseline) } #if os(iOS) - if (self & ConstraintAttributes.FirstBaseline) { + if (self.contains(ConstraintAttributes.FirstBaseline)) { attrs.append(.FirstBaseline) } - if (self & ConstraintAttributes.LeftMargin) { + if (self.contains(ConstraintAttributes.LeftMargin)) { attrs.append(.LeftMargin) } - if (self & ConstraintAttributes.RightMargin) { + if (self.contains(ConstraintAttributes.RightMargin)) { attrs.append(.RightMargin) } - if (self & ConstraintAttributes.TopMargin) { + if (self.contains(ConstraintAttributes.TopMargin)) { attrs.append(.TopMargin) } - if (self & ConstraintAttributes.BottomMargin) { + if (self.contains(ConstraintAttributes.BottomMargin)) { attrs.append(.BottomMargin) } - if (self & ConstraintAttributes.LeadingMargin) { + if (self.contains(ConstraintAttributes.LeadingMargin)) { attrs.append(.LeadingMargin) } - if (self & ConstraintAttributes.TrailingMargin) { + if (self.contains(ConstraintAttributes.TrailingMargin)) { attrs.append(.TrailingMargin) } - if (self & ConstraintAttributes.CenterXWithinMargins) { + if (self.contains(ConstraintAttributes.CenterXWithinMargins)) { attrs.append(.CenterXWithinMargins) } - if (self & ConstraintAttributes.CenterYWithinMargins) { + if (self.contains(ConstraintAttributes.CenterYWithinMargins)) { attrs.append(.CenterYWithinMargins) } #endif @@ -157,10 +157,10 @@ internal struct ConstraintAttributes: RawOptionSetType, BooleanType { } } internal func +=(inout left: ConstraintAttributes, right: ConstraintAttributes) { - left = (left | right) + left.unionInPlace(right) } internal func -=(inout left: ConstraintAttributes, right: ConstraintAttributes) { - left = left & ~right + left.subtractInPlace(right) } internal func ==(left: ConstraintAttributes, right: ConstraintAttributes) -> Bool { return left.rawValue == right.rawValue diff --git a/src/Pods/SnapKit/Source/ConstraintMaker.swift b/src/Pods/SnapKit/Source/ConstraintMaker.swift index 746c49f..04214a0 100644 --- a/src/Pods/SnapKit/Source/ConstraintMaker.swift +++ b/src/Pods/SnapKit/Source/ConstraintMaker.swift @@ -137,48 +137,36 @@ public class ConstraintMaker { } internal class func makeConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) { - #if os(iOS) - view.setTranslatesAutoresizingMaskIntoConstraints(false) - #else view.translatesAutoresizingMaskIntoConstraints = false - #endif let maker = ConstraintMaker(view: view) closure(make: maker) let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint } for constraint in constraints { - constraint.installOnView(updateExisting: false) + constraint.installOnViewUpdatingExisting(false) } } internal class func remakeConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) { - #if os(iOS) - view.setTranslatesAutoresizingMaskIntoConstraints(false) - #else view.translatesAutoresizingMaskIntoConstraints = false - #endif let maker = ConstraintMaker(view: view) closure(make: maker) self.removeConstraints(view) let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint } for constraint in constraints { - constraint.installOnView(updateExisting: false) + constraint.installOnViewUpdatingExisting(false) } } internal class func updateConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) { - #if os(iOS) - view.setTranslatesAutoresizingMaskIntoConstraints(false) - #else view.translatesAutoresizingMaskIntoConstraints = false - #endif let maker = ConstraintMaker(view: view) closure(make: maker) let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint} for constraint in constraints { - constraint.installOnView(updateExisting: true) + constraint.installOnViewUpdatingExisting(true) } } diff --git a/src/Pods/SnapKit/Source/Debugging.swift b/src/Pods/SnapKit/Source/Debugging.swift index 8a96a74..330302d 100644 --- a/src/Pods/SnapKit/Source/Debugging.swift +++ b/src/Pods/SnapKit/Source/Debugging.swift @@ -37,7 +37,7 @@ public extension View { return objc_getAssociatedObject(self, &labelKey) as? String } set { - objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_COPY_NONATOMIC)) + objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC) } } @@ -53,7 +53,7 @@ public extension LayoutConstraint { return objc_getAssociatedObject(self, &labelKey) as? String } set { - objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_COPY_NONATOMIC)) + objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC) } } @@ -167,6 +167,7 @@ private extension NSLayoutAttribute { case .CenterX: return "centerX" case .CenterY: return "centerY" case .Baseline: return "baseline" + default: return "default" } #endif diff --git a/src/Pods/SnapKit/Source/View+SnapKit.swift b/src/Pods/SnapKit/Source/View+SnapKit.swift index 5141879..0fc39a8 100644 --- a/src/Pods/SnapKit/Source/View+SnapKit.swift +++ b/src/Pods/SnapKit/Source/View+SnapKit.swift @@ -172,7 +172,7 @@ public extension View { return [] } set { - objc_setAssociatedObject(self, &installedLayoutConstraintsKey, newValue, UInt(OBJC_ASSOCIATION_RETAIN_NONATOMIC)) + objc_setAssociatedObject(self, &installedLayoutConstraintsKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } } diff --git a/src/Pods/SnapKit/Source/ViewController+SnapKit.swift b/src/Pods/SnapKit/Source/ViewController+SnapKit.swift index d7d2bef..2853453 100644 --- a/src/Pods/SnapKit/Source/ViewController+SnapKit.swift +++ b/src/Pods/SnapKit/Source/ViewController+SnapKit.swift @@ -23,7 +23,6 @@ #if os(iOS) import UIKit -public typealias ViewController = UIViewController /** Used to expose public API on view controllers diff --git a/src/Pods/TTTAttributedLabel/README.md b/src/Pods/TTTAttributedLabel/README.md index 52b6d9c..6d17fe4 100644 --- a/src/Pods/TTTAttributedLabel/README.md +++ b/src/Pods/TTTAttributedLabel/README.md @@ -1,6 +1,6 @@ # TTTAttributedLabel -[![Build Status](https://travis-ci.org/TTTAttributedLabel/TTTAttributedLabel.svg)](https://travis-ci.org/TTTAttributedLabel/TTTAttributedLabel) +[![Circle CI](https://circleci.com/gh/TTTAttributedLabel/TTTAttributedLabel.svg?style=svg)](https://circleci.com/gh/TTTAttributedLabel/TTTAttributedLabel) [![Documentation](http://img.shields.io/cocoapods/v/TTTAttributedLabel.svg?style=flat)](http://cocoadocs.org/docsets/TTTAttributedLabel/) [![Coverage Status](https://coveralls.io/repos/TTTAttributedLabel/TTTAttributedLabel/badge.svg)](https://coveralls.io/r/TTTAttributedLabel/TTTAttributedLabel) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) **A drop-in replacement for `UILabel` that supports attributes, data detectors, links, and more** @@ -58,9 +58,11 @@ pod 'TTTAttributedLabel' TTTAttributedLabel *label = [[TTTAttributedLabel alloc] initWithFrame:CGRectZero]; label.font = [UIFont systemFontOfSize:14]; label.textColor = [UIColor darkGrayColor]; -label.lineBreakMode = UILineBreakModeWordWrap; +label.lineBreakMode = NSLineBreakByWordWrapping; label.numberOfLines = 0; +// If you're using a simple `NSString` for your text, +// assign to the `text` property last so it can inherit other label properties. NSString *text = @"Lorem ipsum dolor sit amet"; [label setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) { NSRange boldRange = [[mutableAttributedString string] rangeOfString:@"ipsum dolor" options:NSCaseInsensitiveSearch]; @@ -99,7 +101,11 @@ NSRange range = [label.text rangeOfString:@"me"]; ## Demo -Build and run/test the `Espressos` project in Xcode to see `TTTAttributedLabel` in action. If you don't have [CocoaPods](http://cocoapods.org) installed, grab it with `[sudo] gem install cocoapods`. +```bash +pod try TTTAttributedLabel +``` + +...or clone this repo and build and run/test the `Espressos` project in Xcode to see `TTTAttributedLabel` in action. If you don't have [CocoaPods](http://cocoapods.org) installed, grab it with `[sudo] gem install cocoapods`. ```bash cd Example @@ -112,14 +118,6 @@ open Espressos.xcworkspace - iOS 4.3+ (iOS 6+ Base SDK) - Xcode 6 -## Contact - -Mattt Thompson - -- http://github.com/mattt -- http://twitter.com/mattt -- m@mattt.me - ## License `TTTAttributedLabel` is available under the MIT license. See the LICENSE file for more info. diff --git a/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h b/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h index 3baf5a3..7e9691e 100644 --- a/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h +++ b/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h @@ -23,6 +23,14 @@ #import #import +//! Project version number for TTTAttributedLabel. +FOUNDATION_EXPORT double TTTAttributedLabelVersionNumber; + +//! Project version string for TTTAttributedLabel. +FOUNDATION_EXPORT const unsigned char TTTAttributedLabelVersionString[]; + +@class TTTAttributedLabelLink; + /** Vertical alignment for text in a label whose bounds are larger than its text bounds */ @@ -66,7 +74,7 @@ extern NSString * const kTTTBackgroundCornerRadiusAttributeName; // Override UILabel @property to accept both NSString and NSAttributedString @protocol TTTAttributedLabel -@property (nonatomic, copy) id text; +@property (nonatomic, copy) IBInspectable id text; @end IB_DESIGNABLE @@ -79,6 +87,7 @@ IB_DESIGNABLE For the most part, `TTTAttributedLabel` behaves just like `UILabel`. The following are notable exceptions, in which `TTTAttributedLabel` may act differently: - `text` - This property now takes an `id` type argument, which can either be a kind of `NSString` or `NSAttributedString` (mutable or immutable in both cases) + - `attributedText` - Do not set this property directly. Instead, pass an `NSAttributedString` to `text`. - `lineBreakMode` - This property displays only the first line when the value is `UILineBreakModeHeadTruncation`, `UILineBreakModeTailTruncation`, or `UILineBreakModeMiddleTruncation` - `adjustsFontsizeToFitWidth` - Supported in iOS 5 and greater, this property is effective for any value of `numberOfLines` greater than zero. In iOS 4, setting `numberOfLines` to a value greater than 1 with `adjustsFontSizeToFitWidth` set to `YES` may cause `sizeToFit` to execute indefinitely. - `baselineAdjustment` - This property has no affect. @@ -97,6 +106,12 @@ IB_DESIGNABLE */ @interface TTTAttributedLabel : UILabel +/** + * The designated initializers are @c initWithFrame: and @c initWithCoder:. + * init will not properly initialize many required properties and other configuration. + */ +- (instancetype) init NS_UNAVAILABLE; + ///----------------------------- /// @name Accessing the Delegate ///----------------------------- @@ -130,19 +145,19 @@ IB_DESIGNABLE @property (readonly, nonatomic, strong) NSArray *links; /** - A dictionary containing the `NSAttributedString` attributes to be applied to links detected or manually added to the label text. The default link style is blue and underlined. + A dictionary containing the default `NSAttributedString` attributes to be applied to links detected or manually added to the label text. The default link style is blue and underlined. @warning You must specify `linkAttributes` before setting autodecting or manually-adding links for these attributes to be applied. */ @property (nonatomic, strong) NSDictionary *linkAttributes; /** - A dictionary containing the `NSAttributedString` attributes to be applied to links when they are in the active state. If `nil` or an empty `NSDictionary`, active links will not be styled. The default active link style is red and underlined. + A dictionary containing the default `NSAttributedString` attributes to be applied to links when they are in the active state. If `nil` or an empty `NSDictionary`, active links will not be styled. The default active link style is red and underlined. */ @property (nonatomic, strong) NSDictionary *activeLinkAttributes; /** - A dictionary containing the `NSAttributedString` attributes to be applied to links when they are in the inactive state, which is triggered a change in `tintColor` in iOS 7. If `nil` or an empty `NSDictionary`, inactive links will not be styled. The default inactive link style is gray and unadorned. + A dictionary containing the default `NSAttributedString` attributes to be applied to links when they are in the inactive state, which is triggered by a change in `tintColor` in iOS 7 and later. If `nil` or an empty `NSDictionary`, inactive links will not be styled. The default inactive link style is gray and unadorned. */ @property (nonatomic, strong) NSDictionary *inactiveLinkAttributes; @@ -151,6 +166,13 @@ IB_DESIGNABLE */ @property (nonatomic, assign) UIEdgeInsets linkBackgroundEdgeInset; +/** + Indicates if links will be detected within an extended area around the touch + to emulate the link detection behaviour of UIWebView. + Default value is YES. Disable to to improve performance on long labels. + */ +@property (nonatomic, assign) BOOL extendsLinkTouchArea; + ///--------------------------------------- /// @name Acccessing Text Style Attributes ///--------------------------------------- @@ -301,12 +323,14 @@ IB_DESIGNABLE - (void)setText:(id)text afterInheritingLabelAttributesAndConfiguringWithBlock:(NSMutableAttributedString *(^)(NSMutableAttributedString *mutableAttributedString))block; -///---------------------------------- +///------------------------------------ /// @name Accessing the Text Attributes -///---------------------------------- +///------------------------------------ /** A copy of the label's current attributedText. This returns `nil` if an attributed string has never been set on the label. + + @warning Do not set this property directly. Instead, set @c text to an @c NSAttributedString. */ @property (readwrite, nonatomic, copy) NSAttributedString *attributedText; @@ -315,29 +339,44 @@ afterInheritingLabelAttributesAndConfiguringWithBlock:(NSMutableAttributedString ///------------------- /** - Adds a link to an `NSTextCheckingResult`. + Adds a link. You can customize an individual link's appearance and accessibility value by creating your own @c TTTAttributedLabelLink and passing it to this method. The other methods for adding links will use the label's default attributes. + + @warning Modifying the link's attribute dictionaries must be done before calling this method. + + @param link A @c TTTAttributedLabelLink object. + */ +- (void)addLink:(TTTAttributedLabelLink *)link; + +/** + Adds a link to an @c NSTextCheckingResult. - @param result An `NSTextCheckingResult` representing the link's location and type. + @param result An @c NSTextCheckingResult representing the link's location and type. + + @return The newly added link object. */ -- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result; +- (TTTAttributedLabelLink *)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result; /** - Adds a link to an `NSTextCheckingResult`. + Adds a link to an @c NSTextCheckingResult. + + @param result An @c NSTextCheckingResult representing the link's location and type. + @param attributes The attributes to be added to the text in the range of the specified link. If set, the label's @c activeAttributes and @c inactiveAttributes will be applied to the link. If `nil`, no attributes are added to the link. - @param result An `NSTextCheckingResult` representing the link's location and type. - @param attributes The attributes to be added to the text in the range of the specified link. If `nil`, no attributes are added. + @return The newly added link object. */ -- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result - attributes:(NSDictionary *)attributes; +- (TTTAttributedLabelLink *)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result + attributes:(NSDictionary *)attributes; /** Adds a link to a URL for a specified range in the label text. @param url The url to be linked to @param range The range in the label text of the link. The range must not exceed the bounds of the receiver. + + @return The newly added link object. */ -- (void)addLinkToURL:(NSURL *)url - withRange:(NSRange)range; +- (TTTAttributedLabelLink *)addLinkToURL:(NSURL *)url + withRange:(NSRange)range; /** Adds a link to an address for a specified range in the label text. @@ -346,27 +385,33 @@ afterInheritingLabelAttributesAndConfiguringWithBlock:(NSMutableAttributedString @param range The range in the label text of the link. The range must not exceed the bounds of the receiver. @discussion The address component dictionary keys are described in `NSTextCheckingResult`'s "Keys for Address Components." + + @return The newly added link object. */ -- (void)addLinkToAddress:(NSDictionary *)addressComponents - withRange:(NSRange)range; +- (TTTAttributedLabelLink *)addLinkToAddress:(NSDictionary *)addressComponents + withRange:(NSRange)range; /** Adds a link to a phone number for a specified range in the label text. @param phoneNumber The phone number to be linked to. @param range The range in the label text of the link. The range must not exceed the bounds of the receiver. + + @return The newly added link object. */ -- (void)addLinkToPhoneNumber:(NSString *)phoneNumber - withRange:(NSRange)range; +- (TTTAttributedLabelLink *)addLinkToPhoneNumber:(NSString *)phoneNumber + withRange:(NSRange)range; /** Adds a link to a date for a specified range in the label text. @param date The date to be linked to. @param range The range in the label text of the link. The range must not exceed the bounds of the receiver. + + @return The newly added link object. */ -- (void)addLinkToDate:(NSDate *)date - withRange:(NSRange)range; +- (TTTAttributedLabelLink *)addLinkToDate:(NSDate *)date + withRange:(NSRange)range; /** Adds a link to a date with a particular time zone and duration for a specified range in the label text. @@ -375,25 +420,29 @@ afterInheritingLabelAttributesAndConfiguringWithBlock:(NSMutableAttributedString @param timeZone The time zone of the specified date. @param duration The duration, in seconds from the specified date. @param range The range in the label text of the link. The range must not exceed the bounds of the receiver. + + @return The newly added link object. */ -- (void)addLinkToDate:(NSDate *)date - timeZone:(NSTimeZone *)timeZone - duration:(NSTimeInterval)duration - withRange:(NSRange)range; +- (TTTAttributedLabelLink *)addLinkToDate:(NSDate *)date + timeZone:(NSTimeZone *)timeZone + duration:(NSTimeInterval)duration + withRange:(NSRange)range; /** Adds a link to transit information for a specified range in the label text. @param components A dictionary containing the transit components. The currently supported keys are `NSTextCheckingAirlineKey` and `NSTextCheckingFlightKey`. @param range The range in the label text of the link. The range must not exceed the bounds of the receiver. + + @return The newly added link object. */ -- (void)addLinkToTransitInformation:(NSDictionary *)components - withRange:(NSRange)range; +- (TTTAttributedLabelLink *)addLinkToTransitInformation:(NSDictionary *)components + withRange:(NSRange)range; /** - Returns whether an `NSTextCheckingResult` is found at the give point. + Returns whether an @c NSTextCheckingResult is found at the give point. - @discussion This can be used together with `UITapGestureRecognizer` to tap interactions with overlapping views. + @discussion This can be used together with @c UITapGestureRecognizer to tap interactions with overlapping views. @param point The point inside the label. */ @@ -576,3 +625,74 @@ didLongPressLinkWithTextCheckingResult:(NSTextCheckingResult *)result atPoint:(CGPoint)point; @end + +@interface TTTAttributedLabelLink : NSObject + +typedef void (^TTTAttributedLabelLinkBlock) (TTTAttributedLabel *, TTTAttributedLabelLink *); + +/** + An `NSTextCheckingResult` representing the link's location and type. + */ +@property (readonly, nonatomic, strong) NSTextCheckingResult *result; + +/** + A dictionary containing the @c NSAttributedString attributes to be applied to the link. + */ +@property (readonly, nonatomic, copy) NSDictionary *attributes; + +/** + A dictionary containing the @c NSAttributedString attributes to be applied to the link when it is in the active state. + */ +@property (readonly, nonatomic, copy) NSDictionary *activeAttributes; + +/** + A dictionary containing the @c NSAttributedString attributes to be applied to the link when it is in the inactive state, which is triggered by a change in `tintColor` in iOS 7 and later. + */ +@property (readonly, nonatomic, copy) NSDictionary *inactiveAttributes; + +/** + Additional information about a link for VoiceOver users. Has default values if the link's @c result is @c NSTextCheckingTypeLink, @c NSTextCheckingTypePhoneNumber, or @c NSTextCheckingTypeDate. + */ +@property (nonatomic, copy) NSString *accessibilityValue; + +/** + A block called when this link is tapped. + If non-nil, tapping on this link will call this block instead of the + @c TTTAttributedLabelDelegate tap methods, which will not be called for this link. + */ +@property (nonatomic, copy) TTTAttributedLabelLinkBlock linkTapBlock; + +/** + A block called when this link is long-pressed. + If non-nil, long pressing on this link will call this block instead of the + @c TTTAttributedLabelDelegate long press methods, which will not be called for this link. + */ +@property (nonatomic, copy) TTTAttributedLabelLinkBlock linkLongPressBlock; + +/** + Initializes a link using the attribute dictionaries specified. + + @param attributes The @c attributes property for the link. + @param activeAttributes The @c activeAttributes property for the link. + @param inactiveAttributes The @c inactiveAttributes property for the link. + @param result An @c NSTextCheckingResult representing the link's location and type. + + @return The initialized link object. + */ +- (instancetype)initWithAttributes:(NSDictionary *)attributes + activeAttributes:(NSDictionary *)activeAttributes + inactiveAttributes:(NSDictionary *)inactiveAttributes + textCheckingResult:(NSTextCheckingResult *)result; + +/** + Initializes a link using the attribute dictionaries set on a specified label. + + @param label The attributed label from which to inherit attribute dictionaries. + @param result An @c NSTextCheckingResult representing the link's location and type. + + @return The initialized link object. + */ +- (instancetype)initWithAttributesFromLabel:(TTTAttributedLabel*)label + textCheckingResult:(NSTextCheckingResult *)result; + +@end diff --git a/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m b/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m index bbbb187..264a0c3 100644 --- a/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m +++ b/src/Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m @@ -310,8 +310,8 @@ @interface TTTAttributedLabel () @property (readwrite, nonatomic, copy) NSAttributedString *inactiveAttributedText; @property (readwrite, nonatomic, copy) NSAttributedString *renderedAttributedText; @property (readwrite, atomic, strong) NSDataDetector *dataDetector; -@property (readwrite, nonatomic, strong) NSArray *links; -@property (readwrite, nonatomic, strong) NSTextCheckingResult *activeLink; +@property (readwrite, nonatomic, strong) NSArray *linkModels; +@property (readwrite, nonatomic, strong) TTTAttributedLabelLink *activeLink; @property (readwrite, nonatomic, strong) NSArray *accessibilityElements; - (void) longPressGestureDidFire:(UILongPressGestureRecognizer *)sender; @@ -377,7 +377,7 @@ - (void)commonInit { self.textInsets = UIEdgeInsetsZero; self.lineHeightMultiple = 1.0f; - self.links = [NSArray array]; + self.linkModels = [NSArray array]; self.linkBackgroundEdgeInset = UIEdgeInsetsMake(0.0f, -1.0f, 0.0f, -1.0f); @@ -403,8 +403,10 @@ - (void)commonInit { self.linkAttributes = [NSDictionary dictionaryWithDictionary:mutableLinkAttributes]; self.activeLinkAttributes = [NSDictionary dictionaryWithDictionary:mutableActiveLinkAttributes]; self.inactiveLinkAttributes = [NSDictionary dictionaryWithDictionary:mutableInactiveLinkAttributes]; + _extendsLinkTouchArea = YES; _longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureDidFire:)]; + self.longPressGestureRecognizer.delegate = self; [self addGestureRecognizer:self.longPressGestureRecognizer]; } @@ -470,9 +472,13 @@ - (NSAttributedString *)renderedAttributedText { return _renderedAttributedText; } -- (void)setLinks:(NSArray *)links { - _links = links; +- (NSArray *) links { + return [_linkModels valueForKey:@"result"]; +} +- (void)setLinkModels:(NSArray *)linkModels { + _linkModels = linkModels; + self.accessibilityElements = nil; } @@ -560,70 +566,97 @@ - (void)setEnabledTextCheckingTypes:(NSTextCheckingTypes)enabledTextCheckingType } } -- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result - attributes:(NSDictionary *)attributes -{ - [self addLinksWithTextCheckingResults:[NSArray arrayWithObject:result] attributes:attributes]; +- (void)addLink:(TTTAttributedLabelLink *)link { + [self addLinks:@[link]]; } -- (void)addLinksWithTextCheckingResults:(NSArray *)results - attributes:(NSDictionary *)attributes -{ - NSMutableArray *mutableLinks = [NSMutableArray arrayWithArray:self.links]; - if (attributes) { - NSMutableAttributedString *mutableAttributedString = [self.attributedText mutableCopy]; - for (NSTextCheckingResult *result in results) { - [mutableAttributedString addAttributes:attributes range:result.range]; - } +- (void)addLinks:(NSArray *)links { + NSMutableArray *mutableLinkModels = [NSMutableArray arrayWithArray:self.linkModels]; + + NSMutableAttributedString *mutableAttributedString = [self.attributedText mutableCopy]; - self.attributedText = mutableAttributedString; - [self setNeedsDisplay]; + for (TTTAttributedLabelLink *link in links) { + if (link.attributes) { + [mutableAttributedString addAttributes:link.attributes range:link.result.range]; + } } - [mutableLinks addObjectsFromArray:results]; - self.links = [NSArray arrayWithArray:mutableLinks]; + self.attributedText = mutableAttributedString; + [self setNeedsDisplay]; + + [mutableLinkModels addObjectsFromArray:links]; + + self.linkModels = [NSArray arrayWithArray:mutableLinkModels]; } -- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result { - [self addLinkWithTextCheckingResult:result attributes:self.linkAttributes]; +- (TTTAttributedLabelLink *)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result + attributes:(NSDictionary *)attributes +{ + return [self addLinksWithTextCheckingResults:@[result] attributes:attributes].firstObject; } -- (void)addLinkToURL:(NSURL *)url - withRange:(NSRange)range +- (NSArray *)addLinksWithTextCheckingResults:(NSArray *)results + attributes:(NSDictionary *)attributes { - [self addLinkWithTextCheckingResult:[NSTextCheckingResult linkCheckingResultWithRange:range URL:url]]; + NSMutableArray *links = [NSMutableArray array]; + + for (NSTextCheckingResult *result in results) { + NSDictionary *activeAttributes = attributes ? self.activeLinkAttributes : nil; + NSDictionary *inactiveAttributes = attributes ? self.inactiveLinkAttributes : nil; + + TTTAttributedLabelLink *link = [[TTTAttributedLabelLink alloc] initWithAttributes:attributes + activeAttributes:activeAttributes + inactiveAttributes:inactiveAttributes + textCheckingResult:result]; + + [links addObject:link]; + } + + [self addLinks:links]; + + return links; } -- (void)addLinkToAddress:(NSDictionary *)addressComponents - withRange:(NSRange)range +- (TTTAttributedLabelLink *)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result { + return [self addLinkWithTextCheckingResult:result attributes:self.linkAttributes]; +} + +- (TTTAttributedLabelLink *)addLinkToURL:(NSURL *)url + withRange:(NSRange)range { - [self addLinkWithTextCheckingResult:[NSTextCheckingResult addressCheckingResultWithRange:range components:addressComponents]]; + return [self addLinkWithTextCheckingResult:[NSTextCheckingResult linkCheckingResultWithRange:range URL:url]]; } -- (void)addLinkToPhoneNumber:(NSString *)phoneNumber - withRange:(NSRange)range +- (TTTAttributedLabelLink *)addLinkToAddress:(NSDictionary *)addressComponents + withRange:(NSRange)range { - [self addLinkWithTextCheckingResult:[NSTextCheckingResult phoneNumberCheckingResultWithRange:range phoneNumber:phoneNumber]]; + return [self addLinkWithTextCheckingResult:[NSTextCheckingResult addressCheckingResultWithRange:range components:addressComponents]]; } -- (void)addLinkToDate:(NSDate *)date - withRange:(NSRange)range +- (TTTAttributedLabelLink *)addLinkToPhoneNumber:(NSString *)phoneNumber + withRange:(NSRange)range { - [self addLinkWithTextCheckingResult:[NSTextCheckingResult dateCheckingResultWithRange:range date:date]]; + return [self addLinkWithTextCheckingResult:[NSTextCheckingResult phoneNumberCheckingResultWithRange:range phoneNumber:phoneNumber]]; } -- (void)addLinkToDate:(NSDate *)date - timeZone:(NSTimeZone *)timeZone - duration:(NSTimeInterval)duration +- (TTTAttributedLabelLink *)addLinkToDate:(NSDate *)date withRange:(NSRange)range { - [self addLinkWithTextCheckingResult:[NSTextCheckingResult dateCheckingResultWithRange:range date:date timeZone:timeZone duration:duration]]; + return [self addLinkWithTextCheckingResult:[NSTextCheckingResult dateCheckingResultWithRange:range date:date]]; +} + +- (TTTAttributedLabelLink *)addLinkToDate:(NSDate *)date + timeZone:(NSTimeZone *)timeZone + duration:(NSTimeInterval)duration + withRange:(NSRange)range +{ + return [self addLinkWithTextCheckingResult:[NSTextCheckingResult dateCheckingResultWithRange:range date:date timeZone:timeZone duration:duration]]; } -- (void)addLinkToTransitInformation:(NSDictionary *)components - withRange:(NSRange)range +- (TTTAttributedLabelLink *)addLinkToTransitInformation:(NSDictionary *)components + withRange:(NSRange)range { - [self addLinkWithTextCheckingResult:[NSTextCheckingResult transitInformationCheckingResultWithRange:range components:components]]; + return [self addLinkWithTextCheckingResult:[NSTextCheckingResult transitInformationCheckingResultWithRange:range components:components]]; } #pragma mark - @@ -632,23 +665,27 @@ - (BOOL)containslinkAtPoint:(CGPoint)point { return [self linkAtPoint:point] != nil; } -- (NSTextCheckingResult *)linkAtPoint:(CGPoint)point { +- (TTTAttributedLabelLink *)linkAtPoint:(CGPoint)point { // Stop quickly if none of the points to be tested are in the bounds. if (!CGRectContainsPoint(CGRectInset(self.bounds, -15.f, -15.f), point) || self.links.count == 0) { return nil; } - // Approximates the behavior of UIWebView which will trigger for links on touches within 15pt of the edge. - return [self linkAtCharacterIndex:[self characterIndexAtPoint:point]] - ?: [self linkAtRadius:2.5f aroundPoint:point] - ?: [self linkAtRadius:5.f aroundPoint:point] - ?: [self linkAtRadius:7.5f aroundPoint:point] - ?: [self linkAtRadius:12.5f aroundPoint:point] - ?: [self linkAtRadius:15.f aroundPoint:point]; + TTTAttributedLabelLink *result = [self linkAtCharacterIndex:[self characterIndexAtPoint:point]]; + + if (!result && self.extendsLinkTouchArea) { + result = [self linkAtRadius:2.5f aroundPoint:point] + ?: [self linkAtRadius:5.f aroundPoint:point] + ?: [self linkAtRadius:7.5f aroundPoint:point] + ?: [self linkAtRadius:12.5f aroundPoint:point] + ?: [self linkAtRadius:15.f aroundPoint:point]; + } + + return result; } -- (NSTextCheckingResult *)linkAtRadius:(const CGFloat)radius aroundPoint:(CGPoint)point { +- (TTTAttributedLabelLink *)linkAtRadius:(const CGFloat)radius aroundPoint:(CGPoint)point { const CGFloat diagonal = CGFloat_sqrt(2 * radius * radius); const CGPoint deltas[] = { CGPointMake(0, -radius), CGPointMake(0, radius), // Above and below @@ -658,28 +695,27 @@ - (NSTextCheckingResult *)linkAtRadius:(const CGFloat)radius aroundPoint:(CGPoin }; const size_t count = sizeof(deltas) / sizeof(CGPoint); - NSTextCheckingResult *result = nil; + TTTAttributedLabelLink *link = nil; - for (NSInteger i = 0; i < count && result == nil; i ++) { + for (NSInteger i = 0; i < count && link.result == nil; i ++) { CGPoint currentPoint = CGPointMake(point.x + deltas[i].x, point.y + deltas[i].y); - result = [self linkAtCharacterIndex:[self characterIndexAtPoint:currentPoint]]; + link = [self linkAtCharacterIndex:[self characterIndexAtPoint:currentPoint]]; } - return result; + return link; } -- (NSTextCheckingResult *)linkAtCharacterIndex:(CFIndex)idx { - +- (TTTAttributedLabelLink *)linkAtCharacterIndex:(CFIndex)idx { // Do not enumerate if the index is outside of the bounds of the text. if (!NSLocationInRange((NSUInteger)idx, NSMakeRange(0, self.attributedText.length))) { return nil; } - NSEnumerator *enumerator = [self.links reverseObjectEnumerator]; - NSTextCheckingResult *result = nil; - while ((result = [enumerator nextObject])) { - if (NSLocationInRange((NSUInteger)idx, result.range)) { - return result; + NSEnumerator *enumerator = [self.linkModels reverseObjectEnumerator]; + TTTAttributedLabelLink *link = nil; + while ((link = [enumerator nextObject])) { + if (NSLocationInRange((NSUInteger)idx, link.result.range)) { + return link; } } @@ -732,6 +768,11 @@ - (CFIndex)characterIndexAtPoint:(CGPoint)p { CGFloat yMin = (CGFloat)floor(lineOrigin.y - descent); CGFloat yMax = (CGFloat)ceil(lineOrigin.y + ascent); + // Apply penOffset using flushFactor for horizontal alignment to set lineOrigin since this is the horizontal offset from drawFramesetter + CGFloat flushFactor = TTTFlushFactorForTextAlignment(self.textAlignment); + CGFloat penOffset = (CGFloat)CTLineGetPenOffsetForFlush(line, flushFactor, textRect.size.width); + lineOrigin.x = penOffset; + // Check if we've already passed the line if (p.y > yMax) { break; @@ -853,9 +894,13 @@ - (void)drawFramesetter:(CTFramesetterRef)framesetter #pragma clang diagnostic pop // Append truncationToken to the string - // because if string isn't too long, CT wont add the truncationToken on it's own - // There is no change of a double truncationToken because CT only add the token if it removes characters (and the one we add will go first) - NSMutableAttributedString *truncationString = [[attributedString attributedSubstringFromRange:NSMakeRange((NSUInteger)lastLineRange.location, (NSUInteger)lastLineRange.length)] mutableCopy]; + // because if string isn't too long, CT won't add the truncationToken on its own. + // There is no chance of a double truncationToken because CT only adds the + // token if it removes characters (and the one we add will go first) + NSMutableAttributedString *truncationString = [[NSMutableAttributedString alloc] initWithAttributedString: + [attributedString attributedSubstringFromRange: + NSMakeRange((NSUInteger)lastLineRange.location, + (NSUInteger)lastLineRange.length)]]; if (lastLineRange.length > 0) { // Remove any newline at the end (we don't want newline space between the text and the truncation token). There can only be one, because the second would be on the next line. unichar lastCharacter = [[truncationString string] characterAtIndex:(NSUInteger)(lastLineRange.length - 1)]; @@ -895,7 +940,8 @@ - (void)drawFramesetter:(CTFramesetterRef)framesetter CTLineDraw(line, c); } } else { - CGContextSetTextPosition(c, lineOrigin.x, lineOrigin.y - descent - self.font.descender); + CGFloat penOffset = (CGFloat)CTLineGetPenOffsetForFlush(line, flushFactor, rect.size.width); + CGContextSetTextPosition(c, penOffset, lineOrigin.y - descent - self.font.descender); CTLineDraw(line, c); } } @@ -1074,7 +1120,7 @@ - (void)setText:(id)text { self.attributedText = text; self.activeLink = nil; - self.links = [NSArray array]; + self.linkModels = [NSArray array]; if (self.attributedText && self.enabledTextCheckingTypes) { #if __IPHONE_OS_VERSION_MIN_REQUIRED < 50000 __unsafe_unretained __typeof(self)weakSelf = self; @@ -1128,17 +1174,19 @@ - (void)setText:(id)text [self setText:mutableAttributedString]; } -- (void)setActiveLink:(NSTextCheckingResult *)activeLink { +- (void)setActiveLink:(TTTAttributedLabelLink *)activeLink { _activeLink = activeLink; + + NSDictionary *activeAttributes = activeLink.activeAttributes ?: self.activeLinkAttributes; - if (_activeLink && [self.activeLinkAttributes count] > 0) { + if (_activeLink && activeAttributes.count > 0) { if (!self.inactiveAttributedText) { self.inactiveAttributedText = [self.attributedText copy]; } NSMutableAttributedString *mutableAttributedString = [self.inactiveAttributedText mutableCopy]; - if (self.activeLink.range.length > 0 && NSLocationInRange(NSMaxRange(self.activeLink.range) - 1, NSMakeRange(0, [self.inactiveAttributedText length]))) { - [mutableAttributedString addAttributes:self.activeLinkAttributes range:self.activeLink.range]; + if (self.activeLink.result.range.length > 0 && NSLocationInRange(NSMaxRange(self.activeLink.result.range) - 1, NSMakeRange(0, [self.inactiveAttributedText length]))) { + [mutableAttributedString addAttributes:activeAttributes range:self.activeLink.result.range]; } self.attributedText = mutableAttributedString; @@ -1264,7 +1312,7 @@ - (void)drawTextInRect:(CGRect)rect { // First, get the text rect (which takes vertical centering into account) CGRect textRect = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines]; - // CoreText draws it's text aligned to the bottom, so we move the CTM here to take our vertical offsets into account + // CoreText draws its text aligned to the bottom, so we move the CTM here to take our vertical offsets into account CGContextTranslateCTM(c, insetRect.origin.x, insetRect.size.height - textRect.origin.y - textRect.size.height); // Second, trace the shadow before the actual text, if we have one @@ -1324,30 +1372,21 @@ - (NSArray *)accessibilityElements { @synchronized(self) { NSMutableArray *mutableAccessibilityItems = [NSMutableArray array]; - for (NSTextCheckingResult *result in self.links) { + for (TTTAttributedLabelLink *link in self.linkModels) { + + if (link.result.range.location == NSNotFound) { + continue; + } + NSString *sourceText = [self.text isKindOfClass:[NSString class]] ? self.text : [(NSAttributedString *)self.text string]; - NSString *accessibilityLabel = [sourceText substringWithRange:result.range]; - NSString *accessibilityValue = nil; - - switch (result.resultType) { - case NSTextCheckingTypeLink: - accessibilityValue = result.URL.absoluteString; - break; - case NSTextCheckingTypePhoneNumber: - accessibilityValue = result.phoneNumber; - break; - case NSTextCheckingTypeDate: - accessibilityValue = [NSDateFormatter localizedStringFromDate:result.date dateStyle:NSDateFormatterLongStyle timeStyle:NSDateFormatterLongStyle]; - break; - default: - break; - } + NSString *accessibilityLabel = [sourceText substringWithRange:link.result.range]; + NSString *accessibilityValue = link.accessibilityValue; if (accessibilityLabel) { UIAccessibilityElement *linkElement = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self]; linkElement.accessibilityTraits = UIAccessibilityTraitLink; - linkElement.accessibilityFrame = [self convertRect:[self boundingRectForCharacterRange:result.range] toView:self.window]; + linkElement.accessibilityFrame = [self convertRect:[self boundingRectForCharacterRange:link.result.range] toView:self.window]; linkElement.accessibilityLabel = accessibilityLabel; if (![accessibilityLabel isEqualToString:accessibilityValue]) { @@ -1381,11 +1420,19 @@ - (CGSize)sizeThatFits:(CGSize)size { if (!self.attributedText) { return [super sizeThatFits:size]; } else { - size = CTFramesetterSuggestFrameSizeForAttributedStringWithConstraints([self framesetter], self.attributedText, size, (NSUInteger)self.numberOfLines); - size.width += self.textInsets.left + self.textInsets.right; - size.height += self.textInsets.top + self.textInsets.bottom; + NSMutableAttributedString *fullString = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedText]; + + if (self.attributedTruncationToken) { + [fullString appendAttributedString:self.attributedTruncationToken]; + } + + NSAttributedString *string = [[NSAttributedString alloc] initWithAttributedString:fullString]; + + CGSize labelSize = CTFramesetterSuggestFrameSizeForAttributedStringWithConstraints([self framesetter], string, size, (NSUInteger)self.numberOfLines); + labelSize.width += self.textInsets.left + self.textInsets.right; + labelSize.height += self.textInsets.top + self.textInsets.bottom; - return size; + return labelSize; } } @@ -1402,20 +1449,20 @@ - (void)tintColorDidChange { BOOL isInactive = (self.tintAdjustmentMode == UIViewTintAdjustmentModeDimmed); - NSDictionary *attributesToRemove = isInactive ? self.linkAttributes : self.inactiveLinkAttributes; - NSDictionary *attributesToAdd = isInactive ? self.inactiveLinkAttributes : self.linkAttributes; - NSMutableAttributedString *mutableAttributedString = [self.attributedText mutableCopy]; - for (NSTextCheckingResult *result in self.links) { + for (TTTAttributedLabelLink *link in self.linkModels) { + NSDictionary *attributesToRemove = isInactive ? link.attributes : link.inactiveAttributes; + NSDictionary *attributesToAdd = isInactive ? link.inactiveAttributes : link.attributes; + [attributesToRemove enumerateKeysAndObjectsUsingBlock:^(NSString *name, __unused id value, __unused BOOL *stop) { - if (NSMaxRange(result.range) <= mutableAttributedString.length) { - [mutableAttributedString removeAttribute:name range:result.range]; + if (NSMaxRange(link.result.range) <= mutableAttributedString.length) { + [mutableAttributedString removeAttribute:name range:link.result.range]; } }]; if (attributesToAdd) { - if (NSMaxRange(result.range) <= mutableAttributedString.length) { - [mutableAttributedString addAttributes:attributesToAdd range:result.range]; + if (NSMaxRange(link.result.range) <= mutableAttributedString.length) { + [mutableAttributedString addAttributes:attributesToAdd range:link.result.range]; } } } @@ -1478,7 +1525,13 @@ - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if (self.activeLink) { - NSTextCheckingResult *result = self.activeLink; + if (self.activeLink.linkTapBlock) { + self.activeLink.linkTapBlock(self, self.activeLink); + self.activeLink = nil; + return; + } + + NSTextCheckingResult *result = self.activeLink.result; self.activeLink = nil; switch (result.resultType) { @@ -1537,15 +1590,32 @@ - (void)touchesCancelled:(NSSet *)touches } } +#pragma mark - UIGestureRecognizerDelegate + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + return [self containslinkAtPoint:[touch locationInView:self]]; +} + #pragma mark - UILongPressGestureRecognizer - (void)longPressGestureDidFire:(UILongPressGestureRecognizer *)sender { switch (sender.state) { case UIGestureRecognizerStateBegan: { CGPoint touchPoint = [sender locationInView:self]; - NSTextCheckingResult *result = [self linkAtPoint:touchPoint]; + TTTAttributedLabelLink *link = [self linkAtPoint:touchPoint]; - if (result) { + if (link) { + if (link.linkLongPressBlock) { + link.linkLongPressBlock(self, link); + return; + } + + NSTextCheckingResult *result = link.result; + + if (!result) { + return; + } + switch (result.resultType) { case NSTextCheckingTypeLink: if ([self.delegate respondsToSelector:@selector(attributedLabel:didLongPressLinkWithURL:atPoint:)]) { @@ -1608,7 +1678,7 @@ - (void)encodeWithCoder:(NSCoder *)coder { [coder encodeObject:@(self.enabledTextCheckingTypes) forKey:NSStringFromSelector(@selector(enabledTextCheckingTypes))]; - [coder encodeObject:self.links forKey:NSStringFromSelector(@selector(links))]; + [coder encodeObject:self.linkModels forKey:NSStringFromSelector(@selector(linkModels))]; if ([NSMutableParagraphStyle class]) { [coder encodeObject:self.linkAttributes forKey:NSStringFromSelector(@selector(linkAttributes))]; [coder encodeObject:self.activeLinkAttributes forKey:NSStringFromSelector(@selector(activeLinkAttributes))]; @@ -1647,10 +1717,6 @@ - (id)initWithCoder:(NSCoder *)coder { self.enabledTextCheckingTypes = [[coder decodeObjectForKey:NSStringFromSelector(@selector(enabledTextCheckingTypes))] unsignedLongLongValue]; } - if ([coder containsValueForKey:NSStringFromSelector(@selector(links))]) { - self.links = [coder decodeObjectForKey:NSStringFromSelector(@selector(links))]; - } - if ([NSMutableParagraphStyle class]) { if ([coder containsValueForKey:NSStringFromSelector(@selector(linkAttributes))]) { self.linkAttributes = [coder decodeObjectForKey:NSStringFromSelector(@selector(linkAttributes))]; @@ -1665,6 +1731,15 @@ - (id)initWithCoder:(NSCoder *)coder { } } + if ([coder containsValueForKey:NSStringFromSelector(@selector(links))]) { + NSArray *oldLinks = [coder decodeObjectForKey:NSStringFromSelector(@selector(links))]; + [self addLinksWithTextCheckingResults:oldLinks attributes:nil]; + } + + if ([coder containsValueForKey:NSStringFromSelector(@selector(linkModels))]) { + self.linkModels = [coder decodeObjectForKey:NSStringFromSelector(@selector(linkModels))]; + } + if ([coder containsValueForKey:NSStringFromSelector(@selector(shadowRadius))]) { self.shadowRadius = [[coder decodeObjectForKey:NSStringFromSelector(@selector(shadowRadius))] floatValue]; } @@ -1734,3 +1809,79 @@ - (id)initWithCoder:(NSCoder *)coder { } @end + +#pragma mark - TTTAttributedLabelLink + +@implementation TTTAttributedLabelLink + +- (instancetype)initWithAttributes:(NSDictionary *)attributes + activeAttributes:(NSDictionary *)activeAttributes + inactiveAttributes:(NSDictionary *)inactiveAttributes + textCheckingResult:(NSTextCheckingResult *)result { + + if ((self = [super init])) { + _result = result; + _attributes = [attributes copy]; + _activeAttributes = [activeAttributes copy]; + _inactiveAttributes = [inactiveAttributes copy]; + } + + return self; +} + +- (instancetype)initWithAttributesFromLabel:(TTTAttributedLabel*)label + textCheckingResult:(NSTextCheckingResult *)result { + + return [self initWithAttributes:label.linkAttributes + activeAttributes:label.activeLinkAttributes + inactiveAttributes:label.inactiveLinkAttributes + textCheckingResult:result]; +} + +#pragma mark - Accessibility + +- (NSString *) accessibilityValue { + if ([_accessibilityValue length] == 0) { + switch (self.result.resultType) { + case NSTextCheckingTypeLink: + _accessibilityValue = self.result.URL.absoluteString; + break; + case NSTextCheckingTypePhoneNumber: + _accessibilityValue = self.result.phoneNumber; + break; + case NSTextCheckingTypeDate: + _accessibilityValue = [NSDateFormatter localizedStringFromDate:self.result.date + dateStyle:NSDateFormatterLongStyle + timeStyle:NSDateFormatterLongStyle]; + break; + default: + break; + } + } + + return _accessibilityValue; +} + +#pragma mark - NSCoding + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.result forKey:NSStringFromSelector(@selector(result))]; + [aCoder encodeObject:self.attributes forKey:NSStringFromSelector(@selector(attributes))]; + [aCoder encodeObject:self.activeAttributes forKey:NSStringFromSelector(@selector(activeAttributes))]; + [aCoder encodeObject:self.inactiveAttributes forKey:NSStringFromSelector(@selector(inactiveAttributes))]; + [aCoder encodeObject:self.accessibilityValue forKey:NSStringFromSelector(@selector(accessibilityValue))]; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + if ((self = [super init])) { + _result = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(result))]; + _attributes = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(attributes))]; + _activeAttributes = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(activeAttributes))]; + _inactiveAttributes = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(inactiveAttributes))]; + self.accessibilityValue = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(accessibilityValue))]; + } + + return self; +} + +@end diff --git a/src/Pods/Target Support Files/Nimble/Info.plist b/src/Pods/Target Support Files/Nimble/Info.plist index b607405..6974542 100644 --- a/src/Pods/Target Support Files/Nimble/Info.plist +++ b/src/Pods/Target Support Files/Nimble/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.4.2 + 1.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/src/Pods/Target Support Files/Quick/Info.plist b/src/Pods/Target Support Files/Quick/Info.plist index afa5479..f191076 100644 --- a/src/Pods/Target Support Files/Quick/Info.plist +++ b/src/Pods/Target Support Files/Quick/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.3.1 + 0.4.0 CFBundleSignature ???? CFBundleVersion diff --git a/src/Pods/Target Support Files/TTTAttributedLabel/Info.plist b/src/Pods/Target Support Files/TTTAttributedLabel/Info.plist index 8b77c44..ef56c6b 100644 --- a/src/Pods/Target Support Files/TTTAttributedLabel/Info.plist +++ b/src/Pods/Target Support Files/TTTAttributedLabel/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.13.1 + 1.13.4 CFBundleSignature ???? CFBundleVersion